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 InvalidTemplate
bir 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/secrets
sahiptir. Bu kaynak türünün iki kesimi vardır (kasalar/gizli diziler).
Anahtar kasası için bir ad belirtmek için gibi examplevault123
tek bir kesim sağlayın. Gizli dizi için bir ad belirtmek için gibi examplevault123/examplesecret
iki 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.
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.