実際のアプリケーションをデプロイする前に、ビルドプロセスの一部として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)。
ストレージアカウント名がわかっていて、リソースグループに依存しないこのシナリオ(例: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')))]"