我正在尝试从Azure上的容器中列出并下载斑点。当我尝试使用存储帐户访问密钥进行操作时,它可以很好地工作。但是,使用SAS令牌时失败。我使用以下PowerShell脚本生成了SAS令牌:
$storageContext = New-AzureStorageContext -StorageAccountName "myAccount" -StorageAccountKey "<account key>"
$permission = "rwdl"
$sasToken = New-AzureStorageContainerSASToken -Name "myContainer" -Policy "testPolicy" -Context $storageContext >>sastoken.txt
"
我得到以下结果:
?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D
我用资源URI附加了SAS令牌以获取:
https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D
并运行以下CLI命令:
az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt
我有以下错误:
azure.multiapi.storage.v2018_03_28.common.storageclient: 客户端request-id = 0F7A 7762-3729-11E9-8B32-FFC4C9592D0A重试政策 不允许重试:Server- Timestamp = SAT,2019年2月23日05:08:30 GMT,Server-Request-ID = 21F07A6A-F01E-00E9-32 35-CB7D5C000000,HTTP 状态代码= 403,异常=服务器无法验证请求。 确保正确形成授权标题的价值 签名。errorcode:AuthenticationFailed
AuthenticationFailed
服务器无法验证输入请求。确保价值 授权标题是相关形成的 signature.requestid:21F07A6A-F01E-00EE9-3235-CB7D5C00000000TIME :2019-02-23T05:08:30.7149353Z 签名 大小无效。
您没有执行此操作所需的所需权限。根据您的操作,可能需要分配以下RO之一Les:
"Storage Blob Data Contributor (Preview)"
"Storage Blob Data Reader (Preview)"
"Storage Queue Data Contributor (Preview)"
"Storage Queue Data Reader (Preview)"
如果您想使用旧身份验证方法并允许查询right帐户密钥,请使用" - auth-mode"参数和"键"值。
事件:CommandInvoker.onfilterresult []'CommandResultItem'对象是 不是迭代的追溯(最新通话最后):文件 " c: users vssadm〜1 appdata local temp pip install-r8nye8gm knack knack knack cl cl cl i.py",第212行,在Invoke文件中 " c: users vssadm〜1 appdata local temp pip install-r8nye8gm knack knack knack knack ou tput.py",第132行,输入文件 " c: users vssadm〜1 appdata local temp pip install-r8nye8gm knack knack knack knack ou tput.py",第38行,format_json typeerror:'CommandResultItem' 对象不是遥测的遥控器:保存遥测记录 长度2499在缓存中
我尝试生成一个存储帐户级别SAS门户,但没有找到任何运气。
请帮忙!
对于与403 AuthenticationFailed
相同的AZCOPY错误的任何其他人,但细节显示Signature size is invalid
-我在尝试从Windows .bat文件脚本脚本AZCOPY时遇到了相同的问题。当您获得SAS URL时,字符串中会有百分比符号。从.bat文件运行时,您必须将百分比符号的百分比符号加倍到" Escape" 。例如无论您在URL中看到一个%的位置,都可以使其%% - 希望这会有所帮助!
有趣的是,我记得在我编写的前3个Azcopy脚本中这样做,几周后,为一个新的存储帐户制作了第四个,并且无法弄清楚为什么我一直在403下次我再次忘记时要提醒自己:)
您遇到此错误的原因是因为您使用了完整的SAS URL而不是SAS令牌。
请更改以下内容:
az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt
to
az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt
您应该能够列出斑点。