使用Bicep模板配置Azure Blob存储生命周期管理规则报错如何解决
问题原因
你不需要分开两次部署,报错是两个问题共同导致的:
- 资源部署顺序问题:你的生命周期管理策略资源
management_policies没有显式依赖Blob服务资源blobStorageService,默认部署时二者会并行执行,生命周期策略创建的时候,最后访问时间跟踪还没配置完成,触发校验报错。 - 最后访问时间跟踪配置写错:
blobStorageService里lastAccessTimeTrackingPolicy的blobType字段填了无效值'string',实际应该填要跟踪的Blob类型,比如你策略里用到的'blockBlob'。
修复方法
修改两处代码即可在同一个Bicep文件内正常部署:
- 修正Blob服务的最后访问时间跟踪配置的blobType值
- 给
management_policies资源添加dependsOn配置,显式声明依赖Blob服务完成部署
修复后的代码片段
首先修改blobStorageService配置:
resource blobStorageService 'Microsoft.Storage/storageAccounts/blobServices@2019-06-01' = { parent: storage_account_blob name: 'default' properties: { lastAccessTimeTrackingPolicy: { blobType: [ 'blockBlob' // 将原来的'string'替换为实际需要跟踪的Blob类型 ] enable: true name: 'AccessTimeTracking' trackingGranularityInDays: 1 } } }
其次修改management_policies配置,添加依赖声明:
resource management_policies 'Microsoft.Storage/storageAccounts/managementPolicies@2019-06-01' = { name: 'default' parent: storage_account_blob dependsOn: [ blobStorageService ] // 新增该行显式声明依赖Blob服务部署完成 properties: { policy:{ rules: [ { definition:{ actions:{ baseBlob:{ delete:{ daysAfterLastAccessTimeGreaterThan: 60 } tierToArchive:{ daysAfterLastAccessTimeGreaterThan: 30 } tierToCool:{ daysAfterLastAccessTimeGreaterThan:15 } } } filters:{ blobTypes:[ 'blockBlob' ] } } enabled: true name: 'testRules' type: 'Lifecycle' } ] } } }
内容的提问来源于stack exchange,提问作者drai29
相关产品推荐
相关产品推荐

