AzCopy-如何使用SAS将单个文件上传到容器

时间:2019-03-22 01:04:09

标签: azure azure-blob-storage azcopy

我有一个用于容器的SAS(仅WRITE,但我也尝试READ-WRITE-LIST)。我需要将单个文件上传到该容器。所以我为此使用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:somefile.ext /Dest:https://account.blob.core.windows.net/container/somefile.ext /DestSAS:******

但这也不起作用。

我尝试了两个AzCopy版本-7.1.3和8.1!我还应该尝试什么?

顺便说一句,使用Powershell时,它就像一个魅力一样,具有相同的SAS令牌! Windows 10最新版。

更新

日志(在完全不同的机器上制成):

  

[2019.03.22 06:39:41.551 + 03:00] >>>>>>>>>>>>>>>> [[2019.03.22   06:39:41.561 + 03:00] [详细]完成:0个文件,0个B;平均速度:0   每秒[2019.03.22 06:39:41.569 + 03:00] [详细] 8.1.0:AzCopy   /来源:somefile.ext   /目的地:https://account.blob.core.windows.net/korch/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] [详细] [显示]您要覆盖   日记开始新的操作?选择是覆盖,选择否   取消当前操作。 (是/否):是[2019.03.22   06:39:43.230 + 03:00] [详细]尝试解析地址'somefile.ext'   到目录,因为候选位置成功。 [2019.03.22   06:39:43.232 + 03:00] [详细]尝试解析地址'somefile.ext'   到单个文件作为候选位置成功。 [2019.03.22   06:39:43.239 + 03:00] [详细]源代码解释为本地文件:   G:\ 1 \ somefile.ext。 [2019.03.22 06:39:43.260 + 03:00] [详细]尝试   解析地址   'https://account.blob.core.windows.net/korch/somefile.ext'到   目录作为候选位置成功。 [2019.03.22   06:39:43.269 + 03:00] [详细]尝试解析地址   'https://account.blob.core.windows.net/korch/somefile.ext'到单个   文件作为候选位置成功。 [2019.03.22   06:39:43.270 + 03:00] [详细]将目标解释为单个文件   因为提供的源是单个文件。 [2019.03.22   06:39:43.271 + 03:00] [详细]目标被解释为云   Blob:https://account.blob.core.windows.net/korch/somefile.ext。   [2019.03.22 06:39:43.942 + 03:00] [详细]开始转移:   G:\ 1 \ somefile.ext =>   https://account.blob.core.windows.net/korch/somefile.ext [2019.03.22   06:39:44.149 + 03:00] [详细]传输失败:G:\ 1 \ somefile.ext =>   https://account.blob.core.windows.net/korch/somefile.ext。 [2019.03.22   06:39:44.158 + 03:00] [错误]发生未知错误:转移   失败了服务器无法验证请求。确保值   授权标头的格式正确,包括签名。   HttpStatusMessage:服务器无法验证请求。确保   授权标头的值格式正确,包括   签名。 RequestId:76ffafce-901e-0132-6460-e00b82000000时间:周五,22   2019年3月06:39:44 GMT [2019.03.22 06:39:44.161 + 03:00]转移   摘要:   -----------------传输的文件总数:1传输成功:0跳过传输:0传输失败:1经过的时间:   00.00:00:02

2 个答案:

答案 0 :(得分:1)

好的,我创建了一个.CMD文件,用于AzCopy'ing一个文件。但是我不知道我必须在Windows批处理文件中转义%。这就是为什么SAS令牌最后不正确的原因。

答案 1 :(得分:0)

这就是我尝试过的方法。

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令牌。