Resolver erros de nomes de contas de armazenamento

Este artigo descreve como resolver erros de nomes de contas de armazenamento do Azure que podem ocorrer durante a implementação com um ficheiro Bicep ou um modelo de Resource Manager do Azure (modelo do ARM). As causas comuns de um erro são um nome de conta de armazenamento com carateres inválidos ou uma conta de armazenamento que utiliza o mesmo nome que uma conta de armazenamento existente. Os nomes das contas de armazenamento têm de ser globalmente exclusivos no Azure.

Sintoma

Um nome de conta de armazenamento inválido causa um código de erro durante a implementação. Seguem-se alguns exemplos de erros para nomes de contas de armazenamento.

Nome da conta inválido

Se o nome da conta de armazenamento incluir carateres proibidos, como uma letra em maiúscula ou um caráter especial como um ponto de exclamação.

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.

Localização de recurso inválida

Se tentar implementar uma nova conta de armazenamento com o mesmo nome e no mesmo grupo de recursos, mas utilizar uma localização diferente de uma conta de armazenamento existente na sua subscrição do Azure. O erro indica que a conta de armazenamento já existe e não pode ser criada na nova localização. Selecione um nome diferente para criar a nova conta de armazenamento.

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.

Conta de armazenamento noutro grupo de recursos

Se tentar implementar uma nova conta de armazenamento com o mesmo nome e localização que uma conta de armazenamento existente, mas num grupo de recursos diferente na sua subscrição.

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

Conta de armazenamento já tomada

Se tentar implementar uma nova conta de armazenamento com o mesmo nome que uma conta de armazenamento que já existe no Azure. O nome da conta de armazenamento existente pode estar na sua subscrição ou inquilino, ou em qualquer lugar do Azure. Os nomes das contas de armazenamento têm de ser globalmente exclusivos no Azure.

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

Causa

Os motivos comuns para um erro são porque o nome da conta de armazenamento utiliza carateres inválidos ou é um nome duplicado. Os nomes das contas de armazenamento têm de cumprir os seguintes critérios:

  • Comprimento entre 3 e 24 carateres com apenas letras minúsculas e números.
  • Tem de ser globalmente exclusivo em todo o Azure. Os nomes das contas de armazenamento não podem ser duplicados no Azure.

Solução

Pode criar um nome exclusivo ao concatenar um prefixo ou sufixo com um valor da uniqueString função.

Os exemplos seguintes especificam um prefixo com a cadeia storage que é concatenada com o valor de uniqueString.

O Bicep utiliza a interpolação de cadeias com uniqueString.

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

Certifique-se de que o nome da conta de armazenamento não excede os 24 carateres. A uniqueString função devolve 13 carateres. Se quiser concatenar um prefixo ou sufixo, forneça um valor igual ou inferior a 11 carateres.

Os exemplos seguintes utilizam um parâmetro com o nome storageNamePrefix que cria um prefixo com um máximo de 11 carateres.

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

Em seguida, concatena o storageNamePrefix valor do parâmetro com o uniqueString valor para criar um nome de conta de armazenamento.

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