在 Bicep 中重试资源部署

一些 Azure 资源在部署过程中会遇到暂时错误,比如复制延迟,但重复尝试一次或多次后才会解决。 @retryOn装饰器在返回特定错误代码时重试资源部署,无需使用部署脚本或拆分模板等变通方法。

语法

@retryOn(<errorCodes> [, <retryCount>])
resource <symbolicName> '<resourceType>@<apiVersion>' = {
  ...
}
参数 类型 Description
errorCodes 数组 触发重试的错误代码字符串列表。
retryCount 整数(可选) 最大重试次数。 默认是30次重试。 如有规定,最多限制为30人。

示例

以下示例在返回 ResourceNotFound 时,最多会重试存储账户部署 10 次:

@retryOn(['ResourceNotFound'], 10)
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: 'srp1'
  location: location
  sku: {
    name: 'Premium_LRS'
  }
  kind: 'BlobStorage'
}

与循环配合使用

@retryOn 可与 for 循环和 @batchSize 装饰器配合使用。 当你使用 @batchSize时,重试行为适用于每一批资源。

@retryOn(['ResourceNotFound'], 10)
@batchSize(2)
resource vwanHub 'Microsoft.Network/virtualHubs@2024-01-01' = [for i in range(0, 4): {
  name: 'vwan-hub-${regionNamePrefix}-${i}'
  location: region
  tags: defaultTags
  properties: {
    addressPrefix: vwanHubCIDR
  }
}]

后续步骤