스토리지 계정 이름 오류 해결

이 문서에서는 Bicep 파일 또는 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 배포하는 동안 발생할 수 있는 Azure Storage 계정 이름에 대한 오류를 해결하는 방법을 설명합니다. 오류의 일반적인 원인은 잘못된 문자가 있는 스토리지 계정 이름 또는 기존 스토리지 계정과 동일한 이름을 사용하는 스토리지 계정입니다. Azure에서 스토리지 계정 이름은 전역적으로 고유해야 합니다.

증상

잘못된 스토리지 계정 이름으로 인해 배포 중에 오류 코드가 발생합니다. 다음은 스토리지 계정 이름에 대한 몇 가지 오류의 예입니다.

잘못된 계정 이름

스토리지 계정 이름에 대문자 또는 느낌표와 같은 특수 문자가 포함된 경우 오류가 발생합니다.

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.

잘못된 리소스 위치

동일한 이름 및 동일한 리소스 그룹에 새 스토리지 계정을 배포하려고 하지만 Azure 구독의 기존 스토리지 계정으로 다른 위치를 사용하는 경우입니다. 이 오류는 스토리지 계정이 이미 있으며 새 위치에 만들 수 없음을 나타냅니다. 다른 이름을 선택하여 새 스토리지 계정을 만듭니다.

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.

다른 리소스 그룹의 스토리지 계정

기존 스토리지 계정과 이름 및 위치가 같지만 구독의 다른 리소스 그룹에 새 스토리지 계정을 배포하려고 하는 경우입니다.

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

스토리지 계정이 이미 사용됨

Azure에 이미 있는 스토리지 계정과 동일한 이름의 새 스토리지 계정을 배포하려고 하는 경우입니다. 기존 스토리지 계정 이름은 구독 또는 테넌트, Azure의 어느 곳에나 있을 수 있습니다. Azure에서 스토리지 계정 이름은 전역적으로 고유해야 합니다.

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

원인

오류의 일반적인 이유는 스토리지 계정 이름에 잘못된 문자를 사용하거나 중복된 이름이기 때문입니다. 스토리지 계정 이름은 다음 조건을 충족해야 합니다.

  • 소문자와 숫자만 있는 3자에서 24자 사이의 길이입니다.
  • Azure에서 전역적으로 고유해야 합니다. 스토리지 계정 이름은 Azure에서 중복될 수 없습니다.

솔루션

uniqueString 함수의 값과 접두사 또는 접미사를 연결하여 고유한 이름을 만들 수 있습니다.

다음 예제에서는 uniqueString의 값과 연결된 문자열 storage로 접두사를 지정합니다.

Bicep는 uniqueString과 함께 문자열 보간을 사용합니다.

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

스토리지 계정 이름이 24자를 초과하지 않는지 확인합니다. uniqueString 함수는 13자를 반환합니다. 접두사 또는 접미사에 연결하려는 경우 11자 이하의 값을 제공합니다.

다음 예제에서는 최대 11자의 접두사를 만드는 storageNamePrefix 매개 변수를 사용합니다.

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

그런 다음, storageNamePrefix 매개 변수 값을 uniqueString 값과 연결하여 스토리지 계정 이름을 만듭니다.

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