2016-07-29 21 views
5

実際のアプリケーションを展開する前に、ARMテンプレートを使用してAzureリソースをビルドプロセスの一部として展開します。Azure ARMテンプレート - 別のARMテンプレートで1つのARMテンプレートによって作成されたリソースIDにアクセスする

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

ただし、リソースを共有する必要があるシナリオ/ニーズがあります。リソースグループ間のストレージアカウント。リソースグループAにはストレージアカウントがあり、リソースグループBのWebアプリにはストレージアカウントに関する接続文字列/アプリキーが必要です(appconfig.json/web.config)。私はBでのリソースグループAのIDを取得する必要があるとして、リソースグループA内のリソースに接続するために、リソースグループBでのアプリのための接続文字列を構築するにはどうすればよい

質問

ここで

は、彼らが同じリソース・グループ

"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/でしたが、最初にARMを展開してからアプリケーション(web)をデプロイするOctoがある場合を除き、がない限り)の現在のビルドプロセスには適していません。

+0

あなたは今までこのために働いて何かを得るのですか? – MPavlak

答えて

-1

あなたは二つのものの下に試すことができます: - 1.使用変数 "resourcegroupAid": "CONCAT [(変数( 'resourceGroupAName')、 '()ID。')]" または 2.RGID ":" RESOURCEID [CONCAT( '/サブスクリプション/'、サブスクリプション()。subscriptionId、 '/ resourceGroups /'、変数( 'resourceGroupAName')])」、

このシナリオストレージアカウント名についてhttps://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions

+0

あなたの答えを調べてください、何かが項目2に欠けているように見えます。 – mkl

+0

これは動作しません。リソースグループ名のconcatを().idで置き、何か良いものを期待することはできません。また、resourceIdには型と名前が必要です。サブスクリプションおよびグループ名のパラメータはオプションです。私が理解できるものから、リソースグループだけを指定する方法はありません。 – MPavlak

2

参照してください。が知られており、リソースグループ(たとえば、uniqueString(resource.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')))]" 
関連する問題