如何在RM模板

时间:2016-01-25 14:45:49

标签: azure logging web azure-storage azure-resource-manager

我正在尝试创建一个创建网站的RM模板,并将其配置为登录blob存储。

我看到了这个post in StackOverflow,其中显示了如何配置它。

json看起来有点跟随:

{
  "id": "/subscriptions/.../config/logs",
  "name": "logs",
  "type": "Microsoft.Web/sites/config",
  "location": "North Central US",
  "properties": {
    "applicationLogs": {
      "fileSystem": {
        "level": "Off"
      },
      "azureBlobStorage": {
        "level": "Information",
        "sasUrl": "...",
        "retentionInDays": 14
      }
    },
    ...
}

但是,我无法弄清楚如何计算/解析sasUrl到这个文件中?

2 个答案:

答案 0 :(得分:2)

要为容器创建SASurl,您可以使用New-AzureStorageContainerSASToken

这样的脚本应该工作

 $context = New-AzureStorageContext -StorageAccountName $name `
                      -StorageAccountKey ((Get-AzureRmStorageAccountKey `
                      -ResourceGroupName $rg -Name $name).Key1)
  New-AzureStorageContainerSASToken -Name sql 
                                    -Permission rwdl -Context $context 

您可能需要将-FullUri添加到最后一个的末尾。

答案 1 :(得分:1)

Moim,我不认为你可以在模板中创建一个sasToken。正如MichaelB所提到的,您可以在部署之前创建它,并将其作为参数传递,或者只是在模板中对其进行硬编码(不理想,因为这是一个秘密)。要添加到迈克尔代码中的几件事情:1)您需要完整的URL和容器2)您希望在令牌上设置到期时间,以便它不会过期和阻止记录到它。例如:

$SasToken = New-AzureStorageContainerSASToken -Container 'logs'
   -Context $context -Permission rwdl -ExpiryTime (Get-Date).AddYears(1) -FullUri

您可以执行此操作的另一种方法是创建sasToken,将其存储在Azure KeyVault中,并在模板中引用该KeyVault机密。此博客有一些帖子可以逐步完成设置:http://www.codeisahighway.com/how-to-refer-an-azure-key-vault-secret-in-an-azure-resource-manager-deployment-template/