我花了一天时间尝试从模板存储帐户部署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
我看不出我做错了什么,或者我的整个方法有缺陷?
非常感谢任何帮助\指导
提前致谢:)
答案 0 :(得分:0)
我看到有两个问题会导致您的问题。
从代码中,您为名为“ json ”的Azure存储容器生成共享访问签名(SAS)令牌,但是要为资源组下载的Blob部署所在的容器与您为其生成SAS令牌的容器不同。
您的模板和模板参数链接都没有附加容器SAS令牌,这意味着您无权访问它们。
解决问题的方法:
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