2017-08-12 111 views
0

我花了一天时间试图从模板存储帐户部署一些VM在Azure上。SAS令牌密钥不产生

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

我得到的错误信息:

AuthenticationFailed服务器无法 验证请求。确保授权标头 的值正确形成,包括签名。 请求ID:3408956-0001-00ea-4cd1-2135c2000000 时间:2017-08-12T21:27:54.6479108Z 签名不匹配。串签 用于为r 2017-08-12T22:26:51Z/BLOB/homeworktest/BLOB 2016年5月31日

PowerShell的错误消息是

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

当我拿到变量来自$ token,它显示了我随后通过显示上面消息的浏览器访问json文件的URI。

我正在使用的整个代码如下

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 

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

任何帮助\指导,将不胜感激提前:)

回答

0

我看到

由于有2个问题,造成您的问题。

  1. 从你的代码,你生成一个共享访问签名(SAS)令牌的Azure存储容器命名为“JSON”,但是您要下载的资源组部署的斑点是下一个不同于您为其生成SAS令牌的容器。

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

你的问题的解决方案:在您的blob链接

  • 追加集装箱SAS令牌到这两个BLOB链接

    1. 更新容器名称

    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 
    
  • +0

    嗨,感谢您的帮助,这工作的一种享受。如果可能的话,还有一个快速问题,生成此SAS令牌可以在“到期时间”字段中指定的时间内提供对容器的访问权限。这是否意味着当三个或四个人工授精使用相同的代码时,生成的SAS令牌在整个持续时间内仍然有效,直到到期时间?此外,这对SAS密钥(Key1和Key2)有影响希望有道理,并再次感谢您的帮助:) –