Řešení chyb kvůli neshodě názvů a typů prostředků

Tento článek popisuje, jak vyřešit chybu, když formát názvu prostředku neodpovídá formátu typu prostředku.

Příznak

Při nasazování šablony se zobrazí chyba s kódem InvalidTemplatechyby . Zpráva značí, že se typ a název prostředku neshodují. Navrhuje opravit počet segmentů v názvu.

Příčina

Typ prostředku obsahuje obor názvů poskytovatele prostředků a jeden nebo více segmentů pro typy. Každý segment představuje úroveň v hierarchii prostředků a je oddělený lomítkem.

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

Název prostředku obsahuje jeden nebo více segmentů oddělených lomítky. Počet segmentů se musí shodovat s počtem v typu prostředku.

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

Pokud typ a název prostředku obsahují různý počet segmentů, zobrazí se tato chyba.

Řešení

Ujistěte se, že rozumíte úrovni typu prostředku. Například prostředek trezoru klíčů má plně kvalifikovaný typ Microsoft.KeyVault/vaultsprostředku . Obor názvů poskytovatele prostředků (Microsoft.KeyVault) můžete ignorovat a zaměřit se na typ (trezory). Má jeden segment.

Tajný klíč trezoru klíčů je podřízený prostředek trezoru. Má plně kvalifikovaný typ Microsoft.KeyVault/vaults/secretsprostředku . Tento typ prostředku má dva segmenty (trezory/tajné kódy).

Pokud chcete zadat název trezoru klíčů, zadejte jenom jeden segment, například examplevault123. Pokud chcete zadat název tajného kódu, zadejte dva segmenty, například examplevault123/examplesecret. První segment označuje trezor klíčů, ve kterém je tento tajný klíč uložený.

Následující příklad ukazuje platný formát pro název prostředku.

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

Pokud zadáte název s více než jedním segmentem, zobrazí se chyba .

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

Když v nadřazený prostředek vnoříte podřízený prostředek, zadejte pouze další segment. Úplný typ prostředku a název stále obsahují hodnoty z nadřazeného prostředku, ale jsou vytvořené pro vás. V následujícím příkladu je secrets typ a název je examplesecret.

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

Při definování podřízeného prostředku mimo nadřazený prostředek zadejte úplný typ prostředku. Pro JSON zadejte úplný název prostředku.

Pro Bicep použijte parent vlastnost a zadejte symbolický název nadřazeného prostředku. Když použijete nadřazenou vlastnost, celý název se vytvoří za vás, takže název podřízeného prostředku zadáte jako jeden segment.

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'
  ...
}

Další informace najdete v tématech Nastavení názvu a typu pro podřízené prostředky v nástroji Bicepa Nastavení názvu a typu pro podřízené prostředky v šablonách ARM.