使用 CLI 时,Azure CLI 在存储容器中找不到 blob
Azure CLI cannot find blob in storage container when using CLI
我对 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 存储管理器复制文件的位置但是它仍然 returns 一条错误消息说 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.
我遗漏了什么或使用不正确,这应该是一个非常简单的命令,但是它给了我很多悲伤。
我要回应不要在 folder/file 名称中使用特殊字符的建议。即便如此,在某些时候我们都会 运行 变成特殊字符,一个有用的方法是用单引号和双引号将字符串包裹起来,如下所示:
'"file$name.txt"'
这些是一些更详细的资源:
- Use Azure CLI effectively
- Quoting issues with PowerShell
- Escaping the pipe character in PowerShell commands
(注意:您在 $containername 和 --account-name 之间缺少一个 space,并且在您给出的示例中使用了两次 -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
我对 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 存储管理器复制文件的位置但是它仍然 returns 一条错误消息说 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.
我遗漏了什么或使用不正确,这应该是一个非常简单的命令,但是它给了我很多悲伤。
我要回应不要在 folder/file 名称中使用特殊字符的建议。即便如此,在某些时候我们都会 运行 变成特殊字符,一个有用的方法是用单引号和双引号将字符串包裹起来,如下所示:
'"file$name.txt"'
这些是一些更详细的资源:
- Use Azure CLI effectively
- Quoting issues with PowerShell
- Escaping the pipe character in PowerShell commands
(注意:您在 $containername 和 --account-name 之间缺少一个 space,并且在您给出的示例中使用了两次 -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