当我尝试通过 Bicep 部署具有生命周期管理规则的存储帐户时,出现错误。假设说要创建两条新规则,但实际应用失败。
错误:
{
"code": "DeploymentFailed",
"message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.",
"details": [
{
"code": "HttpResourceNotFound",
"message": "The request url https://management.azure.com/subscriptions/xxxxxxxxxxxxxxxx/resourcegroups/xxxxxxxxx/providers/Microsoft.Storage/storageAccounts/xxxxxxxxxxx/managementPolicies/Rule2?api-version=2022-09-01 is not found."
},
{
"code": "HttpResourceNotFound",
"message": "The request url https://management.azure.com/subscriptions/xxxxxxxxxxxxxxxx/resourcegroups/xxxxxxxxx/providers/Microsoft.Storage/storageAccounts/xxxxxxxxxxx/managementPolicies/Rule1?api-version=2022-09-01 is not found."
}
]
}
二头肌:
resource blob_storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: storageAccountName
location: location
sku: {
name: sku
}
kind: 'StorageV2'
identity: {
type: 'SystemAssigned'
}
properties: {
azureFilesIdentityBasedAuthentication: {
directoryServiceOptions: 'None'
}
minimumTlsVersion: tlsVersion
isHnsEnabled: true
networkAcls: {
bypass: 'AzureServices'
virtualNetworkRules: [for subnet in subnetList: {
id: subnet
action: 'Allow'
state: 'Succeeded'
}]
ipRules: []
defaultAction: 'Deny'
}
supportsHttpsTrafficOnly: true
encryption: {
services: {
file: {
keyType: 'Account'
enabled: true
}
blob: {
keyType: 'Account'
enabled: true
}
}
keySource: 'Microsoft.Storage'
}
accessTier: 'Hot'
}
}
resource default_blob 'Microsoft.Storage/storageAccounts/blobServices@2022-09-01' = {
parent: blob_storage
name: 'default'
properties: {
deleteRetentionPolicy: {
enabled: true
days: retentionDays
}
}
}
resource containers 'Microsoft.Storage/storageAccounts/blobServices/containers@2022-09-01' = [for containerName in containerList: {
parent: default_blob
name: containerName
}]
resource lifecycleRule 'Microsoft.Storage/storageAccounts/managementPolicies@2022-09-01' = [for lifecycleRule in lifecycleManagementRules: {
name: '${lifecycleRule.ruleName}'
parent: blob_storage
properties: {
policy: {
rules: lifecycleRule
}
}
}]
参数:
"lifecycleManagementRules": {
"value": [
{
"ruleName": "Rule1",
"enabled": true,
"type": "Lifecycle",
"definition": {
"actions": {
"baseBlob": {
"delete": {
"daysAfterLastAccessTimeGreaterThan": 30
}
}
},
"filters": {
"blobTypes": [
"blockBlob",
"pageBlob"
],
"prefixMatch": "logs/"
}
}
},
{
"ruleName": "Rule2",
"enabled": true,
"type": "Lifecycle",
"definition": {
"actions": {
"baseBlob": {
"delete": {
"daysAfterLastAccessTimeGreaterThan": 60
}
}
},
"filters": {
"blobTypes": [
"blockBlob"
],
"prefixMatch": "backups/"
}
}
}
]
}
}
我尝试了不同 Bicep API 版本的管理策略,并确认子 ID、资源组名称和存储帐户名称均正确。
最佳答案
该错误表明部署期间未创建或识别这两条新规则
,并且无法找到请求 URL
。我认为您的代码似乎是正确的,但请确保您对管理策略
使用有效且受支持的Api 版本
。我使用 Api 版本 @2021-09-01
并且能够正确部署规则和存储帐户。
我对您的二头肌代码做了一些修改并附在下面。
param location string
param sku string
resource blob_storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: 'newcarolinestore'
location: location
sku: {
name: sku
}
kind: 'StorageV2'
identity: {
type: 'SystemAssigned'
}
properties: {
azureFilesIdentityBasedAuthentication: {
directoryServiceOptions: 'None'
}
minimumTlsVersion: 'TLS1_2'
isHnsEnabled: true
supportsHttpsTrafficOnly: true
encryption: {
services: {
file: {
keyType: 'Account'
enabled: true
}
blob: {
keyType: 'Account'
enabled: true
}
}
keySource: 'Microsoft.Storage'
}
accessTier: 'Hot'
}
}
resource default_blob 'Microsoft.Storage/storageAccounts/blobServices@2022-09-01' = {
parent: blob_storage
name: 'default'
properties: {
deleteRetentionPolicy: {
enabled: true
days: 90
}
}
}
resource container 'Microsoft.Storage/storageAccounts/blobServices/containers@2022-09-01' = {
name: 'newcarolinestore/default/mycontainer'
dependsOn: [
blob_storage
]
}
resource lifecycleRule 'Microsoft.Storage/storageAccounts/managementPolicies@2021-09-01' = {
name: 'default'
parent: blob_storage
properties: {
policy: {
rules: [
{
enabled: true
name: 'Rule1'
type: 'Lifecycle'
definition: {
actions: {
baseBlob: {
tierToCool: {
daysAfterModificationGreaterThan: 30
}
tierToArchive: {
daysAfterLastTierChangeGreaterThan: 7
daysAfterModificationGreaterThan: 100
}
delete: {
daysAfterModificationGreaterThan: 60
}
}
}
filters: {
blobTypes: [
'blockBlob'
]
"prefixMatch": "backups/"
}
}
}
]
}
}
}
在 Azure CLI 中部署上述二头肌代码,如下所示。
az deployment group create --resource-group caroline --name rollout03 --template-file jb.bicep
引用article作者:@Massimo Bonanni,了解有关生命周期管理规则的更多相关信息。
关于azure - 无法通过 Bicep 部署具有生命周期管理规则的 Azure 存储帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76671939/