我正在創建一個Azure資源管理器模板,用於實例化多個資源,其中包括Azure存儲帳戶和具有Web App的Azure應用服務。ARM - 如何從存儲帳戶獲取訪問密鑰以便在稍後的模板中使用AppSettings?
我希望能夠從新創建的存儲帳戶捕獲主要訪問密鑰(或完整的連接字符串,無論哪種方式都可以),並將其用作其中一個AppSettings的值Web應用程序。
這可能嗎?
我正在創建一個Azure資源管理器模板,用於實例化多個資源,其中包括Azure存儲帳戶和具有Web App的Azure應用服務。ARM - 如何從存儲帳戶獲取訪問密鑰以便在稍後的模板中使用AppSettings?
我希望能夠從新創建的存儲帳戶捕獲主要訪問密鑰(或完整的連接字符串,無論哪種方式都可以),並將其用作其中一個AppSettings的值Web應用程序。
這可能嗎?
使用listkeys輔助函數。
"appSettings": [
{
"name": "STORAGE_KEY",
"value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]"
}
]
本快速做類似的事情:
的語法已經改變,因爲對方的回答被接受。你現在會打的錯誤是'Template language expression property 'key1' doesn't exist, available properties are 'keys'
密鑰現在表示爲鍵的陣列,現在的語法是:
"StorageAccount": "[Concat('DefaultEndpointsProtocol=https;AccountName=',variables('StorageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('StorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]",
參見:http://samcogan.com/retrieve-azure-storage-key-in-arm-script/
感謝發佈,我已經更新了我的答案。 – BenV
我面對這個問題兩次。首先在2015年,最後在2017年5月。 我需要向WebApp添加連接字符串 - 我想在ARM模板部署期間從生成的資源中自動添加字符串。稍後可以幫助不手動添加此值。
我第一次使用舊版本的功能listKeys(它看起來像老版返回結果不是對象,而是作爲值):
"AzureWebJobsStorage": {
"type": "Custom",
"value": "[concat(variables('storageConnectionString'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2015-05-01-preview').key1)]"
},
今天的工作模板的最後一個版本是:
"resources": [
{
"apiVersion": "2015-08-01",
"type": "config",
"name": "connectionstrings",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites/', parameters('webSiteName'))]"
],
"properties": {
"DefaultConnection": {
"value": "[concat('Data Source=tcp:', reference(resourceId('Microsoft.Sql/servers/', parameters('sqlserverName'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', parameters('databaseName'), ';User Id=', parameters('administratorLogin'), '@', parameters('sqlserverName'), ';Password=', parameters('administratorLoginPassword'), ';')]",
"type": "SQLServer"
},
"AzureWebJobsStorage": {
"type": "Custom",
"value": "[concat(variables('storageConnectionString'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageName')), '2016-01-01').keys[0].value)]"
},
"AzureWebJobsDashboard": {
"type": "Custom",
"value": "[concat(variables('storageConnectionString'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageName')), '2016-01-01').keys[0].value)]"
}
}
},
謝謝。
這是鏈接到具有功能詳細信息的文檔:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#listkeys – Digiman
我添加了.key1到你的項目(這是獲得主要訪問鍵的屬性),但這讓我走了。謝謝你,並感謝艾米莉。 – Scott