Riprovare le distribuzioni di risorse in Bicep

Alcune risorse Azure incontrano errori transitori durante il deployment, come ritardi di replica che si risolvono dopo uno o più tentativi. Il @retryOn decorator riprova a distribuire una risorsa quando vengono restituiti codici di errore specifici, senza richiedere soluzioni alternative come script di distribuzione o template separati.

Syntax

@retryOn(<errorCodes> [, <retryCount>])
resource <symbolicName> '<resourceType>@<apiVersion>' = {
  ...
}
Parametro TIPO Description
errorCodes array Una lista di stringhe di codice di errore che attivano un ritentativo.
retryCount int (opzionale) Numero massimo di tentativi. Il valore predefinito è 30 tentativi. Se specificato, limitato a un massimo di 30.

Example

L'esempio seguente ripete la distribuzione dell'account di archiviazione fino a 10 volte quando viene restituito ResourceNotFound:

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

Uso con loop

@retryOn funziona con i for loop e il decoratore @batchSize. Quando usi @batchSize, il comportamento di ritentazione si applica a ogni lotto di risorse.

@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
  }
}]

Passaggi successivi