SAS令牌密钥未生成

时间:2017-08-12 21:53:28

标签: azure azure-storage azure-storage-blobs azure-powershell

我花了一天时间尝试从模板存储帐户部署Azure中的一些VM。

我使用Set-AzureRmCurrentStorageAccount设置存储帐户,然后将变量分配给$token = New-AzureStorageContainerSASToken

我收到错误消息:

  

AuthenticationFailed服务器失败了   验证请求。确保Authorization标头的值   正确形成包括签名。   请求ID:3408956-0001-00ea-4cd1-2135c2000000   时间:2017-08-12T21:27:54.6479108Z    签名不匹配。要签名的字符串   使用的是r 2017-08-12T22:26:51Z / blob / homeworktest / blob 2016-05-31    

powershell错误消息是

 Message=Unable to download deployment 
content from 'https://storageaccountname.blob.core.windows.net/blob/azuredeploy.json'

当我从$ token获取变量时,它会显示密钥,然后我使用URI通过浏览器访问json文件,该浏览器显示上面的消息。

我正在使用的整个代码位于

之下
Set-AzureRmContext -SubscriptionId "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"
Set-AzureRmCurrentStorageAccount -ResourceGroupName "ResGp" -Name "Storageaccount"
$token2 = New-AzureStorageContainerSASToken -Name "json" -Permission r -ExpiryTime (Get-Date).AddMinutes(60.0)
New-AzureRmResourceGroupDeployment -name Demo -ResourceGroupName ResGp `
-TemplateFile "https://storageaccountname.blob.core.windows.net/blob/azuredeploy.json" `
-TemplateParameterFile "https://storageaccountname.blob.core.windows.net/blob/azuredeploy.parameters.json" -verbose

我看不出我做错了什么,或者我的整个方法有缺陷?

非常感谢任何帮助\指导

提前致谢:)

1 个答案:

答案 0 :(得分:0)

我看到有两个问题会导致您的问题。

  1. 从代码中,您为名为“ json ”的Azure存储容器生成共享访问签名(SAS)令牌,但是要为资源组下载的Blob部署所在的容器与您为其生成SAS令牌的容器不同。

  2. 您的模板和模板参数链接都没有附加容器SAS令牌,这意味着您无权访问它们。

  3. 解决问题的方法:

    1. 更新blob链接中的容器名称
    2. 将Container SAS令牌附加到您的blob链接
    3. New-AzureRmResourceGroupDeployment -name Demo -ResourceGroupName ResGp `
      -TemplateFile ("https://storageaccountname.blob.core.windows.net/json/azuredeploy.json" + $token2) `
      -TemplateParameterFile ("https://storageaccountname.blob.core.windows.net/json/azuredeploy.parameters.json" + $token2) -verbose