提问者:小点点

在Azure中使用SAS-token按标签过滤blobCLI失败并出现身份验证错误


使用AzureCLI我正在尝试使用标记过滤器查找所有blob。但是我无法这样做。我得到了错误

"身份验证失败。这可能是由为您的存储帐户提供的无效帐户密钥、连接字符串或sas令牌值引起的。"

下面是我尝试的CLI命令

az storage blob filter --tag-filter  "@container= 'containerxx' and Tag1='value'" --account-name stracc1 --sas-token "sv=2021-08-06&st=2022-10-11T07%3A40%3A00Z&se=2022-10-13T07%3A40%3A47Z&sr=c&sp=racwdxltf&sig=mZ4%2F4oXQV3Y4xcBoxxxxxEjJ1zmozb3ikmEddRc%3D" 

我试图通过运行下面的命令来确认提供的sas令牌是否有效,它确实执行得很好,返回了一个json。这确认了SAS令牌是有效的。您还可以看到我在生成的sas令牌中授予了Filter标记权限(f)。

az存储blob存在-帐户名称stracc1-容器名称容器xx-名称yy. html-sas-token"sv=2021-08-06

请帮忙。

更新/附加信息:我已经在容器级别生成了SAS,而不是在存储帐户级别,我希望它能与容器级别SAS一起工作。我确实尝试了添加'?'以及SAS,但出现了同样的错误


共1个答案

匿名用户

我试图在我的环境中重现相同的我得到了如下相同的错误。

要解决此错误,请确保为您提供正确的存储帐户名称和SaS令牌,如下所示。

要在您的存储帐户中生成SAS令牌-

检查您在blob容器中是否给出了正确的tag=value,如下所示。

当我运行这个下面的命令时,得到了成功的结果,如下所示。

az storage blob filter --tag-filter  "@container= '<Container name >' and tag='< file body index tag >'" --account-name <str account name> --sas-token "< SAS-Token >"

根据讨论,您无法在存储帐户级别上使用生成的SAS,或者您可以使用以下命令

az storage blob filter --tag-filter  "@container= '<containername>' and tag='val' " --account-name <accountname> --auth-mode "key"