Résoudre les erreurs liées aux noms de compte de stockage

Cet article décrit comment résoudre les erreurs en lien avec les noms de compte de stockage Azure qui peuvent se produire pendant le déploiement avec un fichier Bicep ou un modèle Azure Resource Manager (modèle ARM). Les causes courantes d’une erreur sont un nom de compte de stockage avec des caractères non valides ou un compte de stockage qui utilise le même nom qu’un compte de stockage existant. Le nom d’un compte de stockage doit être un nom global unique dans Azure.

Symptôme

Un nom de compte de stockage non valide provoque un code d’erreur lors du déploiement. Voici quelques exemples d’erreurs pour les noms de compte de stockage.

Nom du compte non valide

Si le nom de votre compte de stockage contient des caractères interdits, comme une lettre majuscule ou un caractère spécial tel qu’un point d’exclamation.

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.

Emplacement de ressource non valide

Si vous essayez de déployer un nouveau compte de stockage portant le même nom et dans le même groupe de ressources, mais utilisez un autre emplacement comme compte de stockage existant dans votre abonnement Azure. L’erreur indique que le compte de stockage existe déjà et ne peut pas être créé dans le nouvel emplacement. Sélectionnez un autre nom pour créer le compte de stockage.

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.

Compte de stockage dans un autre groupe de ressources

Si vous essayez de déployer un nouveau compte de stockage portant le même nom et ayant le même emplacement qu’un compte de stockage existant, mais dans un autre groupe de ressources de votre abonnement.

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

Compte de stockage déjà pris

Si vous essayez de déployer un nouveau compte de stockage portant le même nom qu’un compte de stockage qui existe déjà dans Azure. Le nom du compte de stockage existant peut se trouver dans votre abonnement ou locataire, ou n’importe où dans Azure. Le nom d’un compte de stockage doit être un nom global unique dans Azure.

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

Cause

Les raisons courantes d’une erreur sont le fait que le nom du compte de stockage utilise des caractères non valides ou est un nom en double. Les noms de compte de stockage doivent répondre aux critères suivants :

  • Longueur comprise entre 3 et 24 caractères avec uniquement des lettres minuscules et des chiffres.
  • Doivent être globalement uniques. Les noms de compte de stockage ne peuvent pas être dupliqués dans Azure.

Solution

Vous pouvez créer un nom unique en concaténant un préfixe ou un suffixe avec une valeur de la fonction uniqueString.

Les exemples suivants spécifient un préfixe avec la chaîne storage concaténée avec la valeur de uniqueString.

Bicep utilise l'interpolation de chaîne avec uniqueString.

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

Vérifiez que le nom de votre compte de stockage ne contient pas plus de 24 caractères. La fonction uniqueString renvoie 13 caractères. Si vous voulez concaténer un préfixe ou un suffixe, fournissez une valeur de 11 caractères au maximum.

Les exemples suivants utilisent un paramètre nommé storageNamePrefix qui crée un préfixe avec un maximum de 11 caractères.

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

Vous concaténez ensuite la valeur du paramètre storageNamePrefix avec la valeur uniqueString pour créer un nom de compte de stockage.

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