web-dev-qa-db-ja.com

リソースはテンプレートで定義されていません

以下のテンプレートを展開しています:

https://Gist.github.com/rnkhouse/aea0a8fd395da37b19466348b919d62

エラー:

「ステータスコード400のデプロイメントが失敗し、メッセージ:デプロイメントテンプレートの検証が失敗しました: 'リソース' Microsoft.Network/virtualNetworks/mtes-dev-VNET 'がテンプレートで定義されていません。参照してください https:// aka .ms/arm-template 使用法の詳細。 '。 "

他のテンプレートですでに仮想ネットワークを作成しており、ここで同じリソースグループを使用しています。しかし、それでもエラーが発生しています。アドバイスを下さい!

16
Ronak Patel

コード内のVnetをdependsOn削除します。これは、そのリソースがテンプレートの一部である場合にのみ必要であり、すでにデプロイされている場合は必要ありません。

23
4c74356b41

'The resource is not defined in the template'を検索してここに到達する他の人にとって、このエラーメッセージの別の考えられる理由は、フォームの参照です。

reference('<some complete id outside this template>')

または

listkeys('<some complete id outside this template>')

エラーメッセージには表示されませんが、現在のテンプレートの外部で定義されたリソースを参照するときは、APIバージョンを含める必要があります。

例えば.

reference('<some complete id outside this template>', '2018-03-01')
8
Ian Mercer

私は同じエラーコードを探しているこの質問に出くわしました。しかし、別の問題がありました。テンプレート内の別のリソースの子リソースを参照していました。それらは現在のテンプレートの外で考慮されていると思います。

例えば.

{
    "$schema": "http://schema.management.Azure.com/schemas/2015-01-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "resources": [    
        {
            "type": "Microsoft.Network/virtualNetworks",
            "name": "vnetName",
            "location": "[resourceGroup().location]",
            "apiVersion": "2018-11-01",
            "properties": {
                ...
                }
            },
            "resources": [
                {
                    "type": "subnets",
                    "apiVersion": "2018-11-01",
                    "name": "subnetName",
                    "dependsOn": [
                        "[resourceId('Microsoft.Network/virtualNetworks', vnetName)]"
                    ],
                    "properties": {
                        ...
                    }
                }
            }
        },
        {
            "apiVersion": "2016-02-01",
            "name": "deploymentName",
            "type": "Microsoft.Resources/deployments",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks.subnets', vnetName, subnetName)]"
            ],
        }
    ]
}

そこでの修正は、親リソースをデプロイメントに入れて、それに依存することです。

例えば.

{
    "$schema": "http://schema.management.Azure.com/schemas/2015-01-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "resources": [    
        {
            "apiVersion": "2016-02-01",
            "name": "deployment1",
            "type": "Microsoft.Resources/deployments",
            "resources": [
                {
                    "type": "Microsoft.Network/virtualNetworks",
                    "name": "vnetName",
                    "location": "[resourceGroup().location]",
                    "apiVersion": "2018-11-01",
                    "properties": {
                        ...
                    },
                    "resources": [
                        {
                            "type": "subnets",
                            "apiVersion": "2018-11-01",
                            "name": "subnetName",
                            "dependsOn": [
                                "[resourceId('Microsoft.Network/virtualNetworks', vnetName)]"
                            ],
                            "properties": {
                                ...
                            }
                        }
                    ]
                }
            ]
        },
        {
            "apiVersion": "2016-02-01",
            "name": "deployment2",
            "type": "Microsoft.Resources/deployments",
            "dependsOn": [
                "deployment1"
            ],
        }
    ]
}
1
Jesse Jutson