2015-10-19 12 views
15

Tworzę szablon Menedżera zasobów Azure, który tworzy instancje wielu zasobów, w tym konta magazynu Azure i usługi aplikacji Azure za pomocą aplikacji sieci Web.ARM - Jak mogę uzyskać klucz dostępu z konta pamięci masowej do użycia w AppSettings później w szablonie?

Chciałbym móc przechwycić podstawowy klucz dostępu (lub pełny ciąg połączenia, tak czy owak jest w porządku) z nowo utworzonego konta magazynu i użyć go jako wartości dla jednego z ustawień aplikacji dla Aplikacja internetowa.

Czy to możliwe?

Odpowiedz

26

Użyj funkcji pomocnika listkeys.

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

Ten quickstart robi coś podobnego:

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

+0

Dodałem .key1 do twojego wpisu (to właściwość, która otrzymuje klucz dostępu podstawowego), ale to mnie poprawiło. Dziękuję, a także dzięki Emily. – Scott

16

Składnia zmieniła się od drugiej odpowiedź została zaakceptowana. Błąd będzie teraz hit jest 'Template language expression property 'key1' doesn't exist, available properties are 'keys'

Klawisze są teraz reprezentowane jako tablica kluczy, a składnia jest teraz:

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

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

+0

Dzięki za publikację, zaktualizowałem swoją odpowiedź. – BenV

1

I w obliczu tego problemu dwa razy. Najpierw w 2015 i ostatnio w maju 2017 roku. Potrzebuję dodać ciągi połączeń do WebApp - Chcę automatycznie dodawać ciągi z wygenerowanych zasobów podczas wdrażania z szablonu ARM. Może później nie dodawać ręcznie tych wartości.

Pierwszy raz użyłem starej wersji listKeys funkcyjnych (wygląda jak stara wersja zwraca wynik nie jako przedmiot, ale jako wartość):

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

Dziś ostatnia wersja szablonu pracy jest:

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

Dzięki.

+0

To jest łącze do dokumentacji z informacjami o funkcjach: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#listkeys – Digiman

Powiązane problemy