Kaynak adı ve tür uyuşmazlığı hatalarını düzeltme

Bu makalede, kaynak adının biçimi kaynak türünün biçimiyle eşleşmediğinde hatanın nasıl çözüleceğini açıklar.

Belirti

Şablon dağıtırken hata koduyla InvalidTemplatebir hata alırsınız. İleti, kaynak türünün ve adın eşleşmediğini gösterir. Addaki segmentlerin sayısını düzeltmeyi önerir.

Nedeni

Kaynak türü, kaynak sağlayıcısı ad alanını ve türler için bir veya daha fazla segmenti içerir. Her segment, kaynak hiyerarşisindeki bir düzeyi temsil eder ve eğik çizgiyle ayrılır.

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

Kaynak adı eğik çizgilerle ayrılmış bir veya daha fazla segment içerir. Segment sayısı, kaynak türündeki sayıyla eşleşmelidir.

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

Kaynak türü ve adı farklı sayıda segment içeriyorsa bu hatayı alırsınız.

Çözüm

Kaynak türünün düzeyini anladığınızdan emin olun. Örneğin, bir anahtar kasası kaynağının tam kaynak türü vardır Microsoft.KeyVault/vaults. Kaynak sağlayıcısı ad alanını (Microsoft.KeyVault) yoksayabilir ve türe (kasalar) odaklanabilirsiniz. Bir segmenti vardır.

Anahtar kasası gizli dizisi, kasanın alt kaynağıdır. Tam kaynak türüne Microsoft.KeyVault/vaults/secretssahiptir. Bu kaynak türünün iki kesimi vardır (kasalar/gizli diziler).

Anahtar kasası için bir ad belirtmek için gibi examplevault123tek bir kesim sağlayın. Gizli dizi için bir ad belirtmek için gibi examplevault123/examplesecretiki kesim sağlayın. İlk segment, bu gizli dizinin depolandığı anahtar kasasını gösterir.

Aşağıdaki örnekte kaynak adı için geçerli bir biçim gösterilmektedir.

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

Birden fazla segmente sahip bir ad sağladıysanız bir hata görürsünüz.

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

Bir alt kaynağı üst kaynak içinde iç içe yerleştirdiğinizde, yalnızca ek kesimi sağlayın. Tam kaynak türü ve adı yine de üst kaynaktan gelen değerleri içerir, ancak bunlar sizin için kullanılmaktadır. Aşağıdaki örnekte türü, secrets adı ise şeklindedir examplesecret.

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

Alt kaynağı üst öğesinin dışında tanımlarken tam kaynak türünü belirtin. JSON için tam kaynak adını belirtin.

Bicep için özelliğini kullanın parent ve üst kaynağın sembolik adını sağlayın. Üst özelliği kullandığınızda tam ad sizin için oluşturulur, bu nedenle alt kaynak adını tek bir kesim olarak sağlarsınız.

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

Daha fazla bilgi için bkz. Bicep'te alt kaynaklar için ad ve tür ayarlama veya ARM şablonlarındaki alt kaynaklar için ad ve tür ayarlama.