ARM - 如何从存储帐户获取访问密钥以便稍后在模板中的 AppSettings 中使用?
ARM - How can I get the access key from a storage account to use in AppSettings later in the template?
我正在创建一个实例化多个资源的 Azure 资源管理器模板,包括一个 Azure 存储帐户和一个带有 Web 应用程序的 Azure 应用程序服务。
我希望能够从新创建的存储帐户中捕获主访问密钥(或完整的连接字符串,两种方式都可以),并将其用作 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/
这个问题我遇到过两次。第一次发生在 2015 年,最后一次发生在 2017 年 5 月。
我需要将连接字符串添加到 WebApp - 我想在从 ARM 模板部署期间从生成的资源中自动添加字符串。以后不要手动添加此值会有所帮助。
我第一次使用旧版本的函数 listKeys(看起来像旧版本 returns 结果不是对象而是值):
"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)]"
}
}
},
谢谢。
下面是将存储帐户添加到 ADLA 的示例
"storageAccounts": [
{
"name": "[parameters('DataLakeAnalyticsStorageAccountname')]",
"properties": {
"accessKey": "[listKeys(variables('storageAccountid'),'2015-05-01-preview').key1]"
}
}
],
在你可以保留的变量中
"variables": {
"apiVersion": "[providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]]",
"storageAccountid": "[concat(resourceGroup().id,'/providers/','Microsoft.Storage/storageAccounts/', parameters('DataLakeAnalyticsStorageAccountname'))]"
},
我正在创建一个实例化多个资源的 Azure 资源管理器模板,包括一个 Azure 存储帐户和一个带有 Web 应用程序的 Azure 应用程序服务。
我希望能够从新创建的存储帐户中捕获主访问密钥(或完整的连接字符串,两种方式都可以),并将其用作 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/
这个问题我遇到过两次。第一次发生在 2015 年,最后一次发生在 2017 年 5 月。 我需要将连接字符串添加到 WebApp - 我想在从 ARM 模板部署期间从生成的资源中自动添加字符串。以后不要手动添加此值会有所帮助。
我第一次使用旧版本的函数 listKeys(看起来像旧版本 returns 结果不是对象而是值):
"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)]"
}
}
},
谢谢。
下面是将存储帐户添加到 ADLA 的示例
"storageAccounts": [
{
"name": "[parameters('DataLakeAnalyticsStorageAccountname')]",
"properties": {
"accessKey": "[listKeys(variables('storageAccountid'),'2015-05-01-preview').key1]"
}
}
],
在你可以保留的变量中
"variables": {
"apiVersion": "[providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]]",
"storageAccountid": "[concat(resourceGroup().id,'/providers/','Microsoft.Storage/storageAccounts/', parameters('DataLakeAnalyticsStorageAccountname'))]"
},