Risolvere gli errori relativi ai nomi degli account di archiviazione

Questo articolo descrive come risolvere gli errori per i nomi degli account di archiviazione di Azure che possono verificarsi durante la distribuzione con un file Bicep o un modello di Azure Resource Manager (modello arm). Le cause comuni di un errore sono un nome dell'account di archiviazione con caratteri non validi o un account di archiviazione che usa lo stesso nome di un account di archiviazione esistente. I nomi degli account di archiviazione devono essere univoci a livello globale in Azure.

Sintomo

Un nome dell'account di archiviazione non valido causa un codice di errore durante la distribuzione. Di seguito sono riportati alcuni esempi di errori per i nomi degli account di archiviazione.

Nome dell'account non valido

Se il nome dell'account di archiviazione include caratteri non consentiti, ad esempio una lettera maiuscola o un carattere speciale, ad esempio un punto esclamativo.

Code=AccountNameInvalid
Message=S!torageckrexph7isnoc is not a valid storage account name. Storage account name must be
between 3 and 24 characters in length and use numbers and lower-case letters only.

Percorso risorsa non valido

Se si tenta di distribuire un nuovo account di archiviazione con lo stesso nome e nello stesso gruppo di risorse, ma usare una posizione diversa come account di archiviazione esistente nella sottoscrizione di Azure. L'errore indica che l'account di archiviazione esiste già e non può essere creato nella nuova posizione. Selezionare un nome diverso per creare il nuovo account di archiviazione.

Code=InvalidResourceLocation
Message=The resource 'storageckrexph7isnoc' already exists in location 'westus'
in resource group 'demostorage'. A resource with the same name cannot be created in location 'eastus'.
Please select a new resource name.

Account di archiviazione in un altro gruppo di risorse

Se si tenta di distribuire un nuovo account di archiviazione con lo stesso nome e la stessa posizione di un account di archiviazione esistente, ma in un gruppo di risorse diverso nella sottoscrizione.

Code=StorageAccountInAnotherResourceGroup
Message=The account storageckrexph7isnoc is already in another resource group in this subscription.

Account di archiviazione già preso

Se si tenta di distribuire un nuovo account di archiviazione con lo stesso nome di un account di archiviazione già esistente in Azure. Il nome dell'account di archiviazione esistente potrebbe trovarsi nella sottoscrizione o nel tenant o in qualsiasi punto di Azure. I nomi degli account di archiviazione devono essere univoci a livello globale in Azure.

Code=StorageAccountAlreadyTaken
Message=The storage account named storageckrexph7isnoc is already taken.

Causa

I motivi comuni di un errore sono causati dal fatto che il nome dell'account di archiviazione usa caratteri non validi o è un nome duplicato. I nomi degli account di archiviazione devono soddisfare i criteri seguenti:

  • Lunghezza compresa tra 3 e 24 caratteri con solo lettere minuscole e numeri.
  • Deve essere univoco a livello globale in Azure. I nomi degli account di archiviazione non possono essere duplicati in Azure.

Soluzione

È possibile creare un nome univoco concatenando un prefisso o un suffisso con un valore della uniqueString funzione.

Negli esempi seguenti viene specificato un prefisso con la stringa storage concatenata con il valore di uniqueString.

Bicep usa l'interpolazione di stringhe con uniqueString.

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'

Assicurarsi che il nome dell'account di archiviazione non superi i 24 caratteri. La uniqueString funzione restituisce 13 caratteri. Se si vuole concatenare un prefisso o un suffisso, specificare un valore di 11 caratteri o meno.

Negli esempi seguenti viene usato un parametro denominato storageNamePrefix che crea un prefisso con un massimo di 11 caratteri.

@description('The prefix value for the storage account name.')
@maxLength(11)
param storageNamePrefix string = 'storage'

Concatenare quindi il storageNamePrefix valore del parametro con il uniqueString valore per creare un nome dell'account di archiviazione.

name: '${storageNamePrefix}${uniqueString(resourceGroup().id)}'