resource porta microsoft management azure-storage azure-resource-manager

azure-storage - microsoft - portal azure web



BRAZO: ¿Cómo puedo obtener la clave de acceso de una cuenta de almacenamiento para usarla en la configuración de aplicaciones más adelante en la plantilla? (4)

Estoy creando una plantilla de Azure Resource Manager que crea una instancia de múltiples recursos, incluida una cuenta de almacenamiento de Azure y un Servicio de aplicaciones de Azure con una aplicación web.

Me gustaría poder capturar la clave de acceso principal (o la cadena de conexión completa, de cualquier manera está bien) desde la cuenta de almacenamiento recién creada, y usarla como valor para uno de los ajustes de la aplicación para la aplicación web.

¿Es eso posible?


A continuación se muestra un ejemplo para agregar una cuenta de almacenamiento a ADLA.

"storageAccounts": [ { "name": "[parameters(''DataLakeAnalyticsStorageAccountname'')]", "properties": { "accessKey": "[listKeys(variables(''storageAccountid''),''2015-05-01-preview'').key1]" } } ],

en variable puedes mantener

"variables": { "apiVersion": "[providers(''Microsoft.Storage'', ''storageAccounts'').apiVersions[0]]", "storageAccountid": "[concat(resourceGroup().id,''/providers/'',''Microsoft.Storage/storageAccounts/'', parameters(''DataLakeAnalyticsStorageAccountname''))]" },


La sintaxis ha cambiado desde que se aceptó la otra respuesta. El error que ahora golpeará es que la ''Template language expression property ''key1'' doesn''t exist, available properties are ''keys''

Las claves ahora se representan como una matriz de claves, y la sintaxis es ahora:

"StorageAccount": "[Concat(''DefaultEndpointsProtocol=https;AccountName='',variables(''StorageAccountName''),'';AccountKey='',listKeys(resourceId(''Microsoft.Storage/storageAccounts'', variables(''StorageAccountName'')), providers(''Microsoft.Storage'', ''storageAccounts'').apiVersions[0]).keys[0].value)]",

Consulte: http://samcogan.com/retrieve-azure-storage-key-in-arm-script/


Me enfrenté a este problema dos veces. Primero en el 2015 y el último hoy en mayo de 2017. Necesito agregar cadenas de conexión a la aplicación web. Quiero agregar cadenas automáticamente de los recursos generados durante la implementación desde la plantilla ARM. Puede ayudar más tarde a no agregar manualmente estos valores.

La primera vez que usé la versión antigua de la función listKeys (parece que la versión antigua devuelve el resultado no como un objeto sino como un valor):

"AzureWebJobsStorage": { "type": "Custom", "value": "[concat(variables(''storageConnectionString''), listKeys(resourceId(''Microsoft.Storage/storageAccounts'', parameters(''storageAccountName'')), ''2015-05-01-preview'').key1)]" },

Hoy la última versión de la plantilla de trabajo es:

"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)]" } } },

Gracias.