리소스 이름 및 종류 불일치에 대한 오류 해결

이 문서에서는 리소스 이름의 형식이 리소스 종류의 형식과 일치하지 않는 경우 오류를 해결하는 방법을 설명합니다.

증상

템플릿을 배포할 때 오류 코드가 InvalidTemplate인 오류가 발생합니다. 메시지는 리소스 종류와 이름이 일치하지 않음을 나타냅니다. 메시지에서는 이름에서 세그먼트 수를 수정하도록 제안합니다.

원인

리소스 종류에는 리소스 공급자 네임스페이스와 종류에 대한 하나 이상의 세그먼트가 포함됩니다. 각 세그먼트는 리소스 계층 구조의 수준을 나타내며 슬래시로 구분됩니다.

{resource-provider-namespace}/{type-segment-1}/{type-segment-2}

리소스 이름에는 슬래시로 구분된 하나 이상의 세그먼트가 포함됩니다. 세그먼트 수가 리소스 종류의 숫자와 일치해야 합니다.

{name-segment-1}/{name-segment-2}

리소스 종류 및 이름에 포함된 세그먼트 수가 다른 경우 이 오류가 발생합니다.

솔루션

리소스 종류의 수준을 파악해야 합니다. 예를 들어, 키 자격 증명 모음 리소스에는 Microsoft.KeyVault/vaults의 정규화된 리소스 종류가 있습니다. 리소스 공급자 네임스페이스(Microsoft.KeyVault)를 무시하고 종류(vaults)에 집중할 수 있습니다. 하나의 세그먼트를 포함합니다.

키 자격 증명 모음 비밀은 자격 증명 모음의 자식 리소스입니다. Microsoft.KeyVault/vaults/secrets의 정규화된 리소스 종류를 포함합니다. 이 리소스 종류는 두 개의 세그먼트(vaults/secrets)를 포함합니다.

키 자격 증명 모음의 이름을 지정하려면 examplevault123과 같이 하나의 세그먼트만 제공합니다. 비밀의 이름을 지정하려면 examplevault123/examplesecret과 같이 두 개의 세그먼트를 제공합니다. 첫 번째 세그먼트는 이 비밀이 저장되는 키 자격 증명 모음을 나타냅니다.

다음 예제에서는 리소스 이름의 유효한 형식을 보여 줍니다.

resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
  name: 'examplevault123'
  ...
}

두 개 이상의 세그먼트가 있는 이름을 제공한 경우 오류가 표시됩니다.

resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
  name: 'contoso/examplevault123'
  ...
}

부모 리소스 내에 자식 리소스를 중첩하는 경우 추가 세그먼트만 제공합니다. 전체 리소스 종류 및 이름은 여전히 부모 리소스의 값을 포함하지만 사용자에 맞게 구성됩니다. 다음 예제에서 종류는 secrets이고 이름은 examplesecret입니다.

resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
  name: 'examplevault123'
  ...
  resource kvsecret 'secrets' = {
    name: 'examplesecret'
    properties: {
     value: secretValue
    }
  }
}

부모 외부에서 자식 리소스를 정의하는 경우 전체 리소스 종류를 제공합니다. JSON의 경우 전체 리소스 이름을 제공합니다.

Bicep의 경우 parent 속성을 사용하여 부모 리소스의 기호 이름을 제공합니다. 부모 속성을 사용하는 경우 전체 이름은 사용자에 맞게 구성되므로 자식 리소스 이름을 단일 세그먼트로 제공합니다.

resource kvsecret 'Microsoft.KeyVault/vaults/secrets@2022-07-01' = {
  name: 'examplesecret'
  parent: kv
  properties: {
     value: secretValue
  }
}

resource kv 'Microsoft.KeyVault/vaults@2022-07-01' = {
  name: 'examplevault123'
  ...
}

자세한 내용은 Bicep에서 자식 리소스의 이름 및 종류 설정 또는 ARM 템플릿에서 자식 리소스의 이름 및 종류 설정을 참조하세요.