Install & Compatibility
Where this runs
tested against v3.27.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 1.560s · 363.6MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 24.2s · import 0.892s · 350MB
401MB installed
● package 401MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
ResourceGroup
✓ from pulumi_azure_native import resources
Azure resources are organized into namespaces, typically accessed as submodules (e.g., `resources`, `storage`, `network`). It's common to import the module and then access the resource class (e.g., `resources.ResourceGroup`).
StorageAccount
✓ from pulumi_azure_native import storage
Specific Azure services like 'Storage' or 'Network' have their own submodules under `pulumi_azure_native`.
SkuArgs
✓ from pulumi_azure_native.storage import SkuArgs
Configuration arguments for complex types within resources are often available directly under the service submodule or by accessing `service_module.ClassNameArgs` (e.g., `storage.SkuArgs`).
This quickstart deploys an Azure Resource Group and a Storage Account using `pulumi-azure-native`. Ensure you have Pulumi CLI installed, Azure CLI logged in (`az login`), and set a default Azure location (`pulumi config set azure-native:location eastus`). The `stack_suffix` is used to ensure globally unique names for resources like storage accounts.
import pulumi
import pulumi_azure_native as azure_native
import os
# Pulumi requires Azure credentials to be configured (e.g., via `az login` or environment variables).
# The Azure location is usually set via `pulumi config set azure-native:location eastus`.
# Define a unique suffix for resource names to avoid conflicts
# In a real project, this might come from pulumi.StackReference or config.
stack_suffix = os.environ.get("PULUMI_STACK_SUFFIX", "dev").lower()
# Create an Azure Resource Group
resource_group = azure_native.resources.ResourceGroup("my-resource-group",
resource_group_name=f"my-pulumi-rg-{stack_suffix}",
location="EastUS") # Location often configured globally via 'pulumi config set azure-native:location'
# Create an Azure Storage Account
# Note: Storage account names must be globally unique and lowercase.
storage_account = azure_native.storage.StorageAccount("mystorageaccount",
resource_group_name=resource_group.name, # Pulumi automatically unwraps output properties
account_name=f"mypulumiaccount{stack_suffix}123",
location=resource_group.location,
sku=azure_native.storage.SkuArgs(name="Standard_LRS"),
kind="StorageV2")
pulumi.export("resource_group_name", resource_group.name)
pulumi.export("storage_account_name", storage_account.name)
pulumi.export("storage_account_primary_blob_endpoint", storage_account.primary_endpoints.apply(lambda endpoints: endpoints.blob))
pulumi --version
Debug
Known issues
breakingPulumi Azure Native frequently introduces breaking changes due to its direct mapping to the evolving Azure Resource Manager (ARM) API. These changes often involve the removal, renaming, or type modification of resource input properties and output properties.fixReview release notes before upgrading and test thoroughly. Consult the official Pulumi Azure Native API documentation for the correct resource schemas for your target version. Adjust resource definitions to match updated property names or types.
affects: 3.x.x (and prior major versions). E.g., v3.16.0 removed 'largeLanguageModel' from `WorkspaceApiDiagnostic` and `WorkspaceDiagnostic`. v3.13.0 removed 'addonType' from `Addon` resource inputs.
gotchaPulumi uses logical resource names for its state, which are distinct from the physical resource names deployed in Azure. The first argument to a resource constructor is the logical name, while an explicit property (e.g., `resource_group_name`) sets the actual Azure resource name.fixAlways provide distinct logical names for Pulumi resources in your code. Explicitly set the `name` or `*_name` property if you require a specific physical name in Azure. For example, `azure_native.resources.ResourceGroup("my-rg-logic", resource_group_name="my-actual-rg")`. affects: All versions
gotchaResource properties are often Pulumi 'Output' types (futures) which resolve asynchronously. Attempting to use a raw Output object as a string or a direct value will result in unexpected behavior.fixWhen passing an Output property to another Pulumi resource's input, pass the Output directly. Pulumi handles the dependency. If you need to transform or print an Output value, use its `.apply(lambda value: ...)` method or `pulumi.Output.all()` for multiple outputs.
affects: All versions
gotchaPulumi Azure Native relies on pre-configured Azure authentication. It does not manage your Azure credentials directly, but rather uses credentials available to the underlying Azure SDK (typically via Azure CLI login or environment variables).fixEnsure you are authenticated to Azure before running `pulumi up`. This usually involves running `az login` via the Azure CLI, or setting appropriate environment variables like `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_TENANT_ID`, and `AZURE_SUBSCRIPTION_ID`.
affects: All versions
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'pulumi'
The Python interpreter running your Pulumi program cannot find the installed Pulumi SDK or provider packages, often due to an inactive or incorrectly configured virtual environment.
fixEnsure your Python virtual environment is activated and `pulumi` and `pulumi-azure-native` (or other required providers) are installed within it: `source .venv/bin/activate` (Linux/macOS) or `.venv\Scripts\activate` (Windows), then `pip install -r requirements.txt` or `pip install pulumi pulumi-azure-native`.
ClientSecretCredential authentication failed.
Pulumi's Azure Native provider failed to authenticate with Azure using a Service Principal, typically because the client secret has expired or the provided credentials (client ID, tenant ID, secret) are incorrect or missing in your Pulumi configuration or environment variables.
fixUpdate your Azure Service Principal's client secret and then update your Pulumi configuration: `pulumi config set azure-native:clientSecret <new-secret-value> --secret` or ensure the `ARM_CLIENT_ID`, `ARM_CLIENT_SECRET`, `ARM_TENANT_ID`, and `ARM_SUBSCRIPTION_ID` environment variables are correctly set.
AttributeError: module 'pulumi.runtime' has no attribute 'invoke_output'
This error occurs when the `pulumi-azure-native` provider is using an older version of the core Pulumi SDK that does not include the `invoke_output` attribute, often due to a mismatch between the provider and SDK versions.
fixUpgrade both your Pulumi CLI and the `pulumi` Python package to the latest compatible versions, ensuring they are at or above the minimum required SDK version for your `pulumi-azure-native` provider: `pip install --upgrade pulumi` and `pulumi up` to apply any necessary updates to provider binaries.
TypeError: _internal_init() got multiple values for argument
This error typically indicates that you are passing an argument multiple times or in an unexpected format to a resource constructor in `pulumi-azure-native`, often due to changes in the underlying Azure API schema or the Pulumi provider's SDK generation between versions.
fixReview the Pulumi Registry documentation for the specific Azure Native resource you are trying to create, paying close attention to its constructor arguments and the expected types. Ensure no arguments are duplicated and are passed in the correct format for your installed `pulumi-azure-native` version.
Status=404 Code="ResourceNotFound" Message="The Resource ... was not found."
The Pulumi Azure Native provider received a 'Resource Not Found' error from the Azure API. This often means the resource (or a dependency like a resource group or parent resource) does not exist with the specified name or ID, or you lack the necessary permissions to see it. It can also occur if there's a typo in the resource name or if the resource hasn't finished provisioning when another resource tries to reference it.
fixVerify that all referenced resource names and IDs are correct and exist in the specified Azure subscription and region. Check for typos. Ensure that any dependent resources are fully provisioned before they are referenced. If applicable, review your Azure role-based access control (RBAC) permissions.
Upgrade
Version history
3.27.0latest on PyPI · released Aug 30, 2026
Audit
Dependencies
pulumirequiredPulumi Azure Native is a provider for the Pulumi IaC framework and requires the core `pulumi` package to function.