如何用C#/VB通过Azure.ResourceManager.Storage创建Azure存储账户
用C#/VB创建Azure存储账户(替代弃用的Microsoft.Azure.Management.Storage)
现在微软推荐使用Azure.ResourceManager.Storage包(属于Azure Resource Manager新SDK)替代弃用的Microsoft.Azure.Management.Storage。以下是具体实现步骤:
1. 安装必要的NuGet包
需要安装两个核心包:
Azure.ResourceManager.Storage:存储资源管理的核心SDKAzure.Identity:用于Azure服务的身份验证(支持多种认证场景)
可通过NuGet包管理器或命令行安装:
# 命令行安装示例 Install-Package Azure.ResourceManager.Storage Install-Package Azure.Identity
2. 认证方式
推荐使用DefaultAzureCredential,它会自动适配本地开发(Visual Studio、Azure CLI)和生产环境(服务主体、托管标识)的认证逻辑,无需硬编码密钥。
3. C# 代码示例
using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Storage; using Azure.ResourceManager.Storage.Models; // 初始化ArmClient,使用DefaultAzureCredential认证 var armClient = new ArmClient(new DefaultAzureCredential()); // 获取目标订阅资源(替换为你的订阅ID) string subscriptionId = "your-subscription-id"; var subscription = armClient.GetSubscriptionResource(new ResourceIdentifier($"/subscriptions/{subscriptionId}")); // 获取目标资源组(替换为你的资源组名称) string resourceGroupName = "your-resource-group-name"; var resourceGroup = await subscription.GetResourceGroupAsync(resourceGroupName); // 定义存储账户创建参数 string storageAccountName = "your-storage-account-name"; // 名称需全局唯一,长度3-24,仅小写字母和数字 var storageAccountParams = new StorageAccountCreateParameters( location: "eastus", // 替换为你需要的区域 sku: new StorageSku(StorageSkuName.StandardLRS), // 选合适的SKU,比如Standard_LRS、Premium_LRS等 kind: StorageKind.StorageV2) // 推荐使用StorageV2类型 { // 可选:设置其他属性,比如禁止Blob公共访问、启用Data Lake Gen2 AllowBlobPublicAccess = false, IsHnsEnabled = false }; // 创建或更新存储账户 var operation = await resourceGroup.GetStorageAccounts().CreateOrUpdateAsync( WaitUntil.Completed, storageAccountName, storageAccountParams); // 获取创建后的存储账户资源 var storageAccount = operation.Value; Console.WriteLine($"存储账户 {storageAccountName} 创建成功,ID: {storageAccount.Id}");
4. VB.NET 代码示例
Imports Azure.Identity Imports Azure.ResourceManager Imports Azure.ResourceManager.Storage Imports Azure.ResourceManager.Storage.Models ' 初始化ArmClient,使用DefaultAzureCredential认证 Dim armClient As New ArmClient(New DefaultAzureCredential()) ' 获取目标订阅资源(替换为你的订阅ID) Dim subscriptionId As String = "your-subscription-id" Dim subscription = armClient.GetSubscriptionResource(New ResourceIdentifier($"/subscriptions/{subscriptionId}")) ' 获取目标资源组(替换为你的资源组名称) Dim resourceGroupName As String = "your-resource-group-name" Dim resourceGroup = Await subscription.GetResourceGroupAsync(resourceGroupName) ' 定义存储账户创建参数 Dim storageAccountName As String = "your-storage-account-name" ' 名称需全局唯一,长度3-24,仅小写字母和数字 Dim storageAccountParams As New StorageAccountCreateParameters( location:="eastus", ' 替换为你需要的区域 sku:=New StorageSku(StorageSkuName.StandardLRS), ' 选合适的SKU kind:=StorageKind.StorageV2) With { .AllowBlobPublicAccess = False, .IsHnsEnabled = False } ' 创建或更新存储账户 Dim operation = Await resourceGroup.GetStorageAccounts().CreateOrUpdateAsync( WaitUntil.Completed, storageAccountName, storageAccountParams) ' 获取创建后的存储账户资源 Dim storageAccount = operation.Value Console.WriteLine($"存储账户 {storageAccountName} 创建成功,ID: {storageAccount.Id}")
关键说明
- 存储账户名称必须全局唯一,长度限制3-24字符,仅包含小写字母和数字。
- SKU类型按需选择:
StandardLRS(本地冗余存储)是低成本通用选项,PremiumLRS适用于高性能IO场景。 StorageKind.StorageV2是当前推荐的通用存储账户类型,支持Blob、文件、队列、表等全存储服务。- 若需启用Data Lake Storage Gen2功能,将
IsHnsEnabled设为true即可。
内容的提问来源于stack exchange,提问作者JPScerri
相关产品推荐
相关产品推荐

