Resolución de errores de nombres de cuenta de almacenamiento

Este artículo describe cómo resolver errores para los nombres de cuenta de almacenamiento de Azure que se pueden producir durante la implementación con un archivo de Bicep o una plantilla de Azure Resource Manager (plantilla de ARM). Las causas comunes de un error son un nombre de cuenta de almacenamiento con caracteres no válidos o una cuenta de almacenamiento que usa el mismo nombre que una cuenta de almacenamiento existente. Resolución de errores de nombres de cuenta de almacenamiento.

Síntoma

Un nombre de cuenta de almacenamiento no válido provoca un código de error durante la implementación. A continuación se muestran algunos ejemplos de errores para los nombres de cuenta de almacenamiento.

Nombre de cuenta no válido

Si el nombre de la cuenta de almacenamiento incluye caracteres prohibidos, como una letra mayúscula o un carácter especial como un signo de exclamación.

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.

Ubicación de recurso no válida

Si intenta implementar una nueva cuenta de almacenamiento con el mismo nombre y en el mismo grupo de recursos, pero usa una ubicación diferente como una cuenta de almacenamiento existente en la suscripción de Azure. El error indica que la cuenta de almacenamiento ya existe y no se puede crear en la nueva ubicación. Seleccione otro nombre para crear la nueva cuenta de almacenamiento.

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.

Cuenta de almacenamiento en otro grupo de recursos

Si intenta implementar una nueva cuenta de almacenamiento con el mismo nombre y ubicación que una cuenta de almacenamiento existente pero en un grupo de recursos distinto de la suscripción.

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

Ya hay una cuenta de almacenamiento

Si intenta implementar una nueva cuenta de almacenamiento con el mismo nombre que una cuenta de almacenamiento que ya existe en Azure. El nombre de la cuenta de almacenamiento existente puede estar en su suscripción o inquilino, o en cualquier lugar de Azure. Resolución de errores de nombres de cuenta de almacenamiento.

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

Causa

Los motivos comunes de un error son porque el nombre de la cuenta de almacenamiento usa caracteres no válidos o es un nombre duplicado. Los nombres de cuenta de almacenamiento deben cumplir los criterios siguientes:

  • Longitud entre 3 y 24 caracteres con solo letras minúsculas y números.
  • Debe ser único globalmente en Azure. Los nombres de cuenta de almacenamiento no se pueden duplicar en Azure.

Solución

Puede crear un nombre único mediante la concatenación de un prefijo o sufijo con un valor de la función uniqueString.

En los ejemplos siguientes se especifica un prefijo con la cadena storage concatenada con el valor de uniqueString.

Bicep utiliza la interpolación de cadena con uniqueString.

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

Asegúrese de que el nombre de cuenta de almacenamiento no supere los 24 caracteres. La función uniqueString devuelve 13 caracteres. Si desea concatenar un prefijo o sufijo, proporcione un valor de 11 caracteres o menos.

En los ejemplos siguientes se usa un parámetro con el nombre storageNamePrefix que crea un prefijo con un máximo de 11 caracteres.

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

A continuación, concatena el valor del parámetro storageNamePrefix con el valor uniqueString para crear un nombre de cuenta de almacenamiento.

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