【问题标题】:Azure CLI cannot find blob in storage container when using CLI使用 CLI 时 Azure CLI 在存储容器中找不到 blob
【发布时间】:2021-08-25 08:22:13
【问题描述】:

我对 azure 比较陌生,尤其是通过使用 Azure CLI,我需要找到一种方法来使用我可以在脚本中使用的 SAS 令牌为客户下载 blob 存储。

到目前为止,我正在使用此命令,但它总是告诉我 blob 不存在,但据我所知,blob 都存在并且命令中的语法是正确的:

az storage blob download -c $containername--account-name $storageaccountname -f aztest --name $filepathwithname -f tempfile --sas-token $SAStoken

这里的 $filepath 看起来像“sql$2021/folder1/folder2/targetfile”,其中 sql$2021 是我在存储帐户容器中看到的第一个文件夹

据我所知,这是正确的语法,并已尝试调整 qoutes 等并从 azure 存储管理器复制文件的位置,但它仍然返回一条错误消息,指出 blob 不存在:

At C:\Users\me\blob_download.ps1:3 char:1
+ az storage blob download -c $container--account-name $accountname -f ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (ERROR: Client-R...ssage></Error>.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
ERROR: The specified blob does not exist. ErrorCode: BlobNotFound
<?xml version="1.0" encoding="utf-8"?><Error><Code>BlobNotFound</Code><Message>The specified blob does not exist.

我遗漏了什么或以其他方式使用不正确,这应该是一个非常简单的命令,但是它给了我很多悲伤。

【问题讨论】:

  • 我建议试试这个命令看看它发生了什么:docs.microsoft.com/en-us/cli/azure/storage/…。尝试列出文件夹中的 blob,看看是否找到了 blob,以及是否有与您要查找的内容不同的内容。
  • 我在编写此命令之前使用过 azure blob list,但我再次这样做了,并且在使用 list 命令时返回了文件。因此,我已将名称字段直接从该脚本复制到要使用的脚本中,但仍然找不到匹配项。由于在 powershell 脚本中使用了 $ 字符,这可能是格式问题吗?
  • 嗯,是的,我认为可以,尽管存储中的文件夹是虚拟文件夹,但在文件夹名称中添加特殊字符是一种不好的做法。我将尝试使用不带任何特殊字符的文件夹名称创建一个测试 blob,然后我将再次尝试使用该 blob 的脚本,看看发生了什么,因为我没有看到任何错误...

标签: azure command-line-interface


【解决方案1】:

我将重申不要在文件夹/文件名中使用特殊字符的建议。尽管如此,在某些时候我们都会遇到特殊字符,一个有用的方法是用单引号和双引号将字符串双重包装,如下所示:

'"file$name.txt"'

这些是一些更详细的资源:

注意:您在 $containername 和 --account-name 之间缺少一个空格,并且在您给出的示例中使用了两次 -f。我会快速回顾一下。)

我尝试了双引号和双引号周围的单引号。双引号不起作用(您可以在第一个示例中看到 $ 没有被视为文本),而将单引号括在双引号周围:

您会注意到我收到的错误是“身份验证失败。这可能是由为您的存储帐户提供的无效帐户密钥、连接字符串或 sas 令牌值引起的。”

在双重包装我的 sas 密钥之前,我的测试文件没有特殊字符(“指定的资源不存在。错误代码:ResourceNotFound”),我遇到了与您的错误非常相似的错误:

无论哪种情况,我希望这会有所帮助!

$SASToken = '"sp=racw&st=2021-08-26T01:13:44Z&se=2021-08-26T09:13:44Z&spr=https&sv=2020-08-04&sr=b&sig=Eu5SohLylE%2F12dxsNlKAw9qPMA7TKx9PguaCDpW60GI%3D"'

az storage blob download --container-name "kobulloc-container-specialcharblob" --file "C:\testimage.png" --name '"busines$penguin.png"' --account-name "kobulloc210825spccharblb" --sas-token $SASToken

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 2021-06-22
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多