Azure AzCopy-如何使用SAS将单个文件上载到容器
我有一个SAS for容器(只写,但我也尝试读写列表)。我需要上传一个文件到那个容器。因此,我使用AzCopy:Azure AzCopy-如何使用SAS将单个文件上载到容器,azure,azure-blob-storage,azcopy,Azure,Azure Blob Storage,Azcopy,我有一个SAS for容器(只写,但我也尝试读写列表)。我需要上传一个文件到那个容器。因此,我使用AzCopy: AzCopy /Source:./ /Dest:https://account.blob.core.windows.net/container/?sv=2018-03-28&si=write&sr=c&sig=****** /Pattern:somefile.ext /V:./AzCopy.log 我尝试了另一个版本: AzCopy /Source:some
AzCopy /Source:./ /Dest:https://account.blob.core.windows.net/container/?sv=2018-03-28&si=write&sr=c&sig=****** /Pattern:somefile.ext /V:./AzCopy.log
我尝试了另一个版本:
AzCopy /Source:somefile.ext /Dest:https://account.blob.core.windows.net/container/somefile.ext /DestSAS:******
但这也不行
我尝试了AzCopy的两个版本-7.1.3和8.1!我还应该尝试什么
顺便说一句,有了Powershell,它就像一个魔咒一样工作,使用相同的SAS令牌!
Windows10最新版本
更新
日志(在完全不同的机器上制作):
[2019.03.22 06:39:41.551+03:00]>>>>>>>>>>>>>>>>>>>[2019.03.22]
06:39:41.561+03:00][VERBOSE]已完成:0个文件,0个B;平均速度:0
B/s。[2019.03.22 06:39:41.569+03:00][VERBOSE]8.1.0:AzCopy
/来源:somefile.ext
/目的地:
/DestSAS:******/V:./AzCopy with SAS.log[2019.03.22]
06:39:41.589+03:00][错误]读取重新启动时出错
来自“C:\Users\user\AppData\Local\Microsoft\Azure\AzCopy”的日志。
详细错误:分析日志文件时出错:日志文件无效
由AzCopy的其他版本生成。[2019.03.22
06:39:43.175+03:00][VERBOSE][PROMPT]是否覆盖
要开始新操作吗?选择“是”覆盖,选择“否”
取消当前操作。(是/否):是[2019.03.22]
06:39:43.230+03:00][VERBOSE]尝试分析地址“somefile.ext”
成功将目录作为候选位置。[2019.03.22
06:39:43.232+03:00][VERBOSE]尝试分析地址“somefile.ext”
成功将单个文件作为候选位置。[2019.03.22
06:39:43.239+03:00][VERBOSE]源被解释为本地文件:
G:\1\somefile.ext。[2019.03.22 06:39:43.260+03:00][VERBOSE]试图
解析地址
”“是的
目录作为候选位置成功。[2019.03.22
06:39:43.269+03:00][VERBOSE]尝试分析地址
”“一个人
文件作为候选位置成功。[2019.03.22
06:39:43.270+03:00][VERBOSE]将目标解释为单个文件
因为提供的源是单个文件。[2019.03.22
06:39:43.271+03:00][VERBOSE]目标被解释为云
水滴:。
[2019.03.22 06:39:43.942+03:00][VERBOSE]开始传输:
G:\1\somefile.ext=>
[2019.03.22
06:39:44.149+03:00][VERBOSE]传输失败:G:\1\somefile.ext=>
. [2019.03.22
06:39:44.158+03:00][错误]发生未知错误:传输失败
失败。服务器无法对请求进行身份验证。请确定值
包含签名的授权标头的格式正确。
HttpStatusMessage:服务器无法验证请求。确保
授权标头的值已正确形成,包括
签名。请求ID:76ffafce-901e-0132-6460-e00b82000000时间:22日星期五
2019年3月06:39:44格林尼治标准时间[2019.03.22 06:39:44.161+03:00]换乘
总结:
-----------------传输的文件总数:1传输成功:0传输跳过:0传输失败:1运行时间:
00.00:00:02
这是我试过的有效方法
AzCopy /Source:D:\temp /Dest:https://account-name.blob.core.windows.net/blob-container-name /DestSAS:"?se=2019-03-30T18%3A30%3A00Z&sp=rw&sv=2018-03-28&sr=c&sig=xxxxx...%3D" /Pattern:test.txt
AzCopy /Source:D:\temp2 /Dest:"https://account-name.blob.core.windows.net/blob-container-name?se=2019-03-30T18%3A30%3A00Z&sp=rw&sv=2018-03-28&sr=c&sig=xxxxx...%3D" /Pattern:test.log
我注意到的一件事是,如果我只包含Write
权限,操作就会失败。我必须在SAS中添加Read
权限,操作才能成功
此外,我必须在双引号中包含SAS令牌。好的,我为AzCopy创建了一个.CMD文件,并使用了一个文件。但我不知道我必须在windows批处理文件中转义%。这就是为什么SAS令牌最后不正确。您还需要为源指定SAS?源是本地文件!您收到的错误消息是什么?未经授权的标题。能否编辑您的问题并包含完整的错误消息?我尝试了您上面使用的两个命令,并成功上载了本地文件。您确定您的SAS令牌使用了容器的策略吗?我没有使用策略。我在blob容器上创建了一个具有读写权限的特别SAS令牌。好的,我想我发现了问题。我制作了一个带有参数的.cmd文件,SAS令牌应该在批处理文件中转义。。。Gr。。。。!令人惊叹的!请包括您的解决方案作为答案。它可能会帮助其他使用命令文件方法的人。