如何通过Blob ARM资源ID获取属性及C# Azure SDK等效实现问询
实现方案
你给出的示例资源ID实际是存储账户的ARM ID,要获取存储账户下的Blob相关属性(包括primaryEndpoints),可以使用Azure官方C#资源管理SDK实现,具体步骤如下:
步骤1:安装所需NuGet包
- 核心资源管理包:
Azure.ResourceManager - 存储资源管理专用包:
Azure.ResourceManager.Storage
步骤2:代码实现示例
using Azure.Core; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Storage; // 1. 构造ArmClient,使用默认Azure身份认证(可根据部署场景替换为其他认证方式) ArmClient armClient = new ArmClient(new DefaultAzureCredential()); // 2. 填写存储账户ARM ID string storageAccountArmId = "/subscriptions/abffff89-2c76-424a-af4c-34b2512a3cb4/resourceGroups/foo-bar-test-rg/providers/Microsoft.Storage/storageAccounts/foobar"; // 3. 将ARM ID转换为强类型资源ID对象 StorageAccountResourceId storageAccountResourceId = StorageAccountResourceId.Parse(storageAccountArmId); // 4. 获取存储账户资源实例 StorageAccountResource storageAccount = armClient.GetStorageAccountResource(storageAccountResourceId); // 5. 拉取存储账户最新属性 Response<StorageAccountResource> response = await storageAccount.GetAsync(); StorageAccountProperties properties = response.Value.Data.Properties; // 6. 读取所需属性,比如Blob服务主端点 string blobPrimaryEndpoint = properties.PrimaryEndpoints.Blob.ToString(); Console.WriteLine($"Blob服务主端点:{blobPrimaryEndpoint}"); // 其他常用可获取属性示例: // 存储账户类型:properties.Kind // 冗余策略:properties.Sku.Name // 启用异地冗余时的次要Blob端点:properties.SecondaryEndpoints?.Blob?.ToString()
注意事项
- 如果你持有的是单个Blob对象的ARM ID而非存储账户ID,可先从Blob ARM ID中提取存储账户ID段再执行上述逻辑。单个Blob的ARM ID结构示例:
/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Storage/storageAccounts/xxx/blobServices/default/containers/xxx/blobs/xxx,按/分割字符串后取前8段拼接即可得到对应存储账户的ARM ID - 认证方式可根据部署场景灵活替换,比如托管身份、服务主体、本地Azure CLI认证等,
DefaultAzureCredential会自动按优先级匹配当前环境可用的认证凭据
内容的提问来源于stack exchange,提问作者Node.JS
相关产品推荐
相关产品推荐

