一些 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
}
}]