2015-10-19 11 views
15

Bir Azure depolama hesabı ve bir Web Uygulaması ile bir Azure Uygulama Hizmeti de dahil olmak üzere birden çok kaynağı örnekleyen bir Azure Resource Manager şablonu oluşturuyorum.ARM - Erişim anahtarını şablonda daha sonra yer alan AppSettings'de kullanılacak bir depolama hesabından nasıl alabilirim?

Yeni oluşturulan depolama hesabından birincil erişim anahtarını (veya tam bağlantı dizesini, her ikisi de yolunda) yakalayabilmek ve bunun için AppSettings öğelerinden biri için bir değer olarak kullanmak istiyorum. İnternet uygulaması.

Bu mümkün mü?

cevap

16

:

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

Bu hızlı başlangıç ​​benzer bir şey yapar. Şimdi vuracaktır hata 'Template language expression property 'key1' doesn't exist, available properties are 'keys'

Tuşlar artık anahtarların bir dizi olarak temsil edilir, ve sözdizimi şu şekildedir:

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

bakınız: Ben bu konuda iki kez karşı karşıya http://samcogan.com/retrieve-azure-storage-key-in-arm-script/

+0

Gönderdiğiniz için teşekkür ederiz, cevabımı güncelledim. – BenV

1

. İlk olarak 2015'te ve son olarak Mayıs 2017'de. WebApp'e bağlantı dizeleri eklemem gerekiyor - ARM şablonundan dağıtım sırasında oluşturulan kaynaklardan dizeleri otomatik olarak eklemek istiyorum. Bu değerleri elle eklememek daha sonra yardımcı olabilir.

Bugün çalışma şablonun son sürümüdür
"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)]" 
     } 
     } 
    }, 

İlk kez fonksiyon listKeys (sonuçlanabilir eski sürüm getiri benziyor değil nesne olarak değil değer olarak) eski sürümünü kullanılan

Teşekkürler.

+0

Bu, işlev ayrıntılarına sahip belgelere bağlantı: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#listkeys – Digiman