使用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,但出现了同样的错误
我试图在我的环境中重现相同的我得到了如下相同的错误。
要解决此错误,请确保为您提供正确的存储帐户名称和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"