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)有影響希望有道理,並再次感謝您的幫助:) –