2015-10-19 6 views
15

Sto creando un modello di Azure Resource Manager che crea più istanze di risorse, tra cui un account di archiviazione di Azure e un servizio app di Azure con un'app Web.ARM: come posso ottenere la chiave di accesso da un account di archiviazione da utilizzare in AppSettings più avanti nel modello?

Mi piacerebbe essere in grado di acquisire la chiave di accesso primaria (o la stringa di connessione completa, in entrambi i casi va bene) dall'account di archiviazione appena creato, e usarlo come valore per uno degli AppSettings per il App Web.

È possibile?

risposta

26

Utilizzare la funzione di supporto listkeys.

"appSettings": [ 
    { 
     "name": "STORAGE_KEY", 
     "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]" 
    } 
] 

Questo QuickStart fa qualcosa di simile:

https://azure.microsoft.com/en-us/documentation/articles/cache-web-app-arm-with-redis-cache-provision/

+0

Ho aggiunto .key1 alla voce (questa è la proprietà che ottiene la chiave di accesso principale), ma questo mi ha fatto andare avanti. Grazie, e grazie anche ad Emily. – Scott

16

La sintassi è cambiato da quando l'altra risposta è stata accettata. L'errore sarà ora ha colpito è 'Template language expression property 'key1' doesn't exist, available properties are 'keys'

chiavi sono ora rappresentati come una serie di chiavi, e la sintassi è ora:

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

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

+0

Grazie per aver postato, ho aggiornato la mia risposta. – BenV

1

Ho affrontato questo problema due volte. Prima nel 2015 e l'ultima oggi a maggio del 2017. Ho bisogno di aggiungere stringhe di connessione alla WebApp - Voglio aggiungere automaticamente le stringhe dalle risorse generate durante la distribuzione dal modello ARM. Può aiutare in seguito a non aggiungere manualmente questi valori.

prima volta ho usato vecchia versione dei listKeys funzione (sembra versione vecchia, restituisce il risultato non come oggetto, ma come valore):

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

Oggi ultima versione del modello di lavoro è:

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

Grazie.

+0

Questo è un collegamento alla documentazione con i dettagli della funzione: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#listkeys – Digiman

Problemi correlati