it-swarm.com.de

ARM - Wie kann ich den Zugriffsschlüssel von einem Speicherkonto abrufen, um ihn später in der Vorlage in AppSettings zu verwenden?

Ich erstelle eine Azure Resource Manager-Vorlage, mit der mehrere Ressourcen instanziiert werden, einschließlich eines Azure-Speicherkontos und eines Azure-App-Diensts mit einer Webanwendung.

Ich möchte in der Lage sein, den Primärzugriffsschlüssel (oder die vollständige Verbindungszeichenfolge, wie auch immer) vom neu erstellten Speicherkonto zu erfassen und diesen als Wert für eine der AppSettings für die Web-App zu verwenden.

Ist das möglich?

32
Scott

Verwenden Sie die Hilfsfunktion Listentasten .

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

Dieser Schnellstart führt etwas Ähnliches aus:

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

52
BenV

Die Syntax hat sich geändert, seit die andere Antwort akzeptiert wurde. Der Fehler, den Sie jetzt treffen, ist 'Template language expression property 'key1' doesn't exist, available properties are 'keys'

Schlüssel werden jetzt als Array von Schlüsseln dargestellt, und die Syntax lautet jetzt:

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

Siehe: http://samcogan.com/retrieve-Azure-storage-key-in-arm-script/

33
Loren Paulsen

Ich habe mich zweimal mit diesem Problem befasst. Zuerst im Jahr 2015 und zuletzt heute im Mai 2017. Ich muss der Webanwendung Verbindungszeichenfolgen hinzufügen - Ich möchte Zeichenfolgen aus generierten Ressourcen während der Bereitstellung über die Vorlage ARM hinzufügen. Dies kann hilfreich sein später, um diese Werte nicht manuell hinzuzufügen.

Zum ersten Mal habe ich eine alte Version der Funktion listKeys verwendet (es sieht so aus, als ob die alte Version das Ergebnis nicht als Objekt, sondern als Wert zurückgibt):

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

Heute letzte Version der Arbeitsvorlage ist:

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

Vielen Dank.

4
Digiman

im Folgenden finden Sie ein Beispiel für das Hinzufügen eines Speicherkontos zu ADLA

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

in variable kannst du behalten

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