我試圖用AzCopy 5.1.0下載從使用SAS的Blob存儲容器單斑點由存儲資源管理器生成下載的Blob:如何使用SAS
https://myaccount.blob.core.windows.net/mycontainer/[blob-uuid]?st=2016-11-23T18%3A26%3A00Z&se=2016-11-24T18%3A26%3A00Z&sp=rl&sv=2015-12-11&sr=b&sig=[signature]
azcopy /Source:https://myaccount.blob.core.windows.net/mycontainer /SourceSAS:"?st=2016-11-23T18%3A26%3A00Z&se=2016-11-24T18%3A26%3A00Z&sp=rl&sv=2015-12-11&sr=b&sig=[signature]" /Dest:"c:\data"
如果/ Source應該是blob容器,並且/ SourceSAS應該是SAS 令牌,那麼我需要在實際的Blob密鑰([blob-uuid])中傳遞某個地方。
恕我直言,這應該是/ SourceKey,但指定我的BLOB鍵會返回錯誤:「提供的存儲鍵(SourceKey)不是有效的Base64字符串。」這與將該參數描述爲「存儲帳戶密鑰」的命令行幫助一致。
我能找到的唯一的其他候選人是/ Pattern,但是對於通過枚舉容器內容來下載blob的情況來說,這似乎更多。這似乎與我在這裏指定確切的blob鍵時得到的403錯誤一致;該容器是私人的。
在任何情況下,AzCopy都會抱怨「服務器未能對請求進行身份驗證,請確保授權標頭的值包含簽名正確形成。」這在我的經驗中表明SAS簽名生成的原始URI沒有被正確重構。
我能夠直接通過curl使用原始的SAS URI,所以它不是簽名不一致的問題。
我也嘗試使用SDK以編程方式生成SAS URI,因此我可以指定共享訪問策略,但這也不起作用。我仍然認爲AzCopy需要SAS URI的缺失部分。
您是否建議/ SourceKey參數的「關鍵」是沒有前面問號的SAS令牌?因爲這會導致我描述的相同錯誤:「提供的存儲密鑰(SourceKey)不是有效的Base64字符串」 命令行幫助:azcopy/?: SourceKey如此描述參數:'/ SourceKey:指定存儲帳戶密鑰「,與錯誤消息一致,但與整體下載操作不一致。 –
ayang
上面寫的astaykov是正確的,但讓我澄清更多的例子,你可以像這樣調用AzCopy:azcopy /Source:https://myaccount.blob.core.windows.net/mycontainer/SourceSAS:「?st = 2016-11-23T18%3A26%3A00Z&se = 2016-11-24T18%3A26%3A00Z&sp = rl&sv = 2015-12-11&sr = b&sig = [signature]「/ Dest:」c:\ data「/ Pattern:」[blob- uuid]「 –
根據」sr = b「,您使用的是blob SAS而不是容器SAS,因此請確保您的AzCopy已升級到最新版本,因爲舊的AzCopy不支持blob SAS作爲源SAS。 –