web-dev-qa-db-ja.com

Azure ARMテンプレート-1つのテンプレートによって作成されたリソースIDにアクセスするARM別のテンプレートのテンプレートARM template

実際のアプリケーションをデプロイする前に、ビルドプロセスの一部としてARMテンプレートを使用して、Azureリソースをデプロイします。

これまでのところ、すべてのアプリケーションリソースはresource group内に自己完結しています。例えばSQLサーバーとストレージアカウントを必要とするWebアプリは、1つのリソースグループにまとめられています。

しかし、リソースを共有する必要があるシナリオ/ニーズに遭遇しました。リソースグループ全体のストレージアカウント。リソースグループAにはストレージアカウントがあり、リソースグループBのWebアプリには、そのappconfig.json/web.configのストレージアカウントに関連する接続文字列/アプリキーが必要です。

質問

BのリソースグループAのIDを取得する必要があるため、リソースグループBのアプリの接続文字列を作成してリソースグループAのリソースに接続するにはどうすればよいですか

同じリソースグループにある場合、接続文字列を作成する方法は次のとおりです

  "variables"
{
  "storageAccounts_id": "[concat(**resourceGroupA**().id,'/providers/Microsoft.Storage/storageAccounts/', variables('storageAccntName'))]",
},
"resources": [
    {
      "apiVersion": "2015-08-01",
      "type": "config",
      "name": "connectionstrings",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites', variables('MyWebSiteName'))]"
      ],
      "properties": {
      "AzureWebJobsDashboard": {
        "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccntName'),';AccountKey=',concat(listKeys(variables('storageAccounts_id'),'2015-05-01-preview').key1))]",
        "type": "Custom"
      },
      }
    }
  ]

注:私はこのサイトを通過しました https://Azure.Microsoft.com/en-us/documentation/articles/resource-group-linked-templates/ リンクされたテンプレートについてですが、適切ではありませんOcto何かが足りない場合を除いて)を使用する現在のビルドプロセスでは、最初にARM、次にアプリケーション(Web)。

9
Jaya

ストレージアカウント名がわかっていて、リソースグループに依存しないこのシナリオ(例:uniqueString(resourceGroup()。id))の場合、 resourceId() の長い形式を使用できます。 。完全なフォームは次のようになります。

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2]...)

したがって、オプションでsubscriptionIdとresourceGroupNameを指定できます。

listKeys(resourceId(parameters('ResourceGroupAName'), 'Microsoft.Storage/storageAccounts', variables('ccPaymentStorageName'))

別のサブスクリプションにある場合は、サブスクリプションを指定することもできます。

listKeys(resourceId(parameters('SubscriptionId'), parameters('ResourceGroupAName'), 'Microsoft.Storage/storageAccounts', variables('ccPaymentStorageName'))

ストレージアカウント名が次のようなリソースグループに依存している場合

"storageName": "[concat('mystorage', uniqueString(resourceGroup().id))]" // in Resource Group A

次に、このアカウントを作成するテンプレートを常に実行してstorageNameとresourceGroupを出力するか、他のリソースグループを参照してIDを取得し、名前を再作成できるようにする方法を見つける必要があります。

このようなものを使用してリソースグループIDを「再作成」し、ストレージアカウントの適切な名前を生成できるようになりました。

"otherResourceGroupId": "[concat(subscription().id, '/resourceGroups/', parameters('ResourceGroupName'))]"

次に、それを使用して名前を適切に生成できます。

"storageAccountName": "[concat('mystorage', uniqueString(variables('otherResourceGroupId')))]"
4
MPavlak