如何使用C#为Azure存储账户创建Lifecycle Management规则
问题解答
完全可以通过C#实现Azure存储账户生命周期管理规则的创建,微软官方提供了开箱即用的SDK方案,不需要手动封装调用REST API。
实现依赖
官方推荐使用新一代Azure资源管理SDK的Azure.ResourceManager.Storage NuGet包,该包原生支持存储账户全量配置操作,包含生命周期管理规则的增删改查能力。
你可以通过NuGet包管理器直接安装,包安装命令:Install-Package Azure.ResourceManager.Storage
核心实现示例
using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Storage; using Azure.ResourceManager.Storage.Models; // 初始化ARM客户端,默认使用当前环境的Azure身份凭证(本地开发可使用Azure CLI、VS/VS Code登录身份,生产环境可使用托管身份) ArmClient armClient = new ArmClient(new DefaultAzureCredential()); // 构造目标存储账户的资源ID var storageAccountId = new ResourceIdentifier("/subscriptions/<替换为你的订阅ID>/resourceGroups/<替换为资源组名称>/providers/Microsoft.Storage/storageAccounts/<替换为存储账户名称>"); StorageAccountResource storageAccount = armClient.GetStorageAccountResource(storageAccountId); // 构造生命周期规则,示例配置为:块Blob上传30天后转冷层,365天后删除 var lifecycleRule = new StorageManagementPolicyRule("sample-rule", StorageRuleType.Lifecycle) { IsEnabled = true, Definition = new StorageManagementPolicyDefinition( actions: new StorageManagementPolicyAction() { BaseBlob = new StorageManagementPolicyBaseBlob() { TierToCool = new StorageManagementPolicyTierToCoolAction(30), Delete = new StorageManagementPolicyDeleteAction(365) } }, filters: new StorageManagementPolicyFilter() { BlobTypes = { "blockBlob" } // 可按需添加前缀匹配规则,过滤指定路径的Blob // PrefixMatch = { "logs/" } }) }; // 提交规则配置到存储账户 var managementPolicy = new StorageManagementPolicyData(); managementPolicy.Rules.Add(lifecycleRule); await storageAccount.GetStorageManagementPolicies().CreateOrUpdateAsync(Azure.WaitUntil.Completed, StorageManagementPolicyName.Default, managementPolicy);
注意事项
- 调用SDK的身份需要持有存储账户对应的RBAC权限,包括存储账户贡献者、所有者,或者自定义包含
Microsoft.Storage/storageAccounts/managementPolicies/write权限的角色,否则会触发权限错误。 - 旧版的
Microsoft.Azure.Management.Storage包也可以实现相同功能,但该包已停止维护,不建议在新项目中使用。 - 生命周期规则配置提交后,最长24小时内会正式生效。
内容的提问来源于stack exchange,提问作者Annosz
相关产品推荐
相关产品推荐

