终端设备: EMC ECS协议: AWS S3
我试图使用Python脚本进行身份验证,并使用Paw构建相同的请求。
Python和boto运行得很好。原始代码:
from boto.s3.connection import S3Connection
accessKeyId = 'objuser'
secretKey = 'spl4vDHl11H7uW/683WZCoYrle03Bn1hd42gy8bd'
host = '10.10.10.10'
port = 9020
conn = S3Connection(aws_access_key_id=accessKeyId,
aws_secret_access_key=secretKey,
host=host,
port=port,
calling_format='boto.s3.connection.ProtocolIndependentOrdinaryCallingFormat',
is_secure=False)
print conn.get_all_buckets()正确的标头被S3服务器接受
Date: Fri, 08 Apr 2016 07:38:34 GMT
Authorisation: AWS obtuser:Gi/qcdbyYcVMdI9EkdORPMx2wbo=接下来,我用Paw重新创建相同的请求,但是得到错误的标题:
Date: Fri, 08 Apr 2016 07:38:34 GMT
Authorisation: AWS obtuser:/znFNFviqD5fw3t1oWUwBQ8B5M4= 当然,它会被S3服务器拒绝。
在Paw中,我使用授权头和标准的"S3 Amazon S3授权头“动态值。AWS访问密钥ID、和秘密访问密钥ID与脚本中的相同(三重检查)。
根据ECS文档,S3身份验证遵循签署和验证REST请求,因此签名是基于标准HMAC-SHA1的。我希望Paw也会使用同样的方法。
你能告诉我为什么Paw没有创建正确的授权头的潜在原因是什么,以及如何解决这个问题?
事先非常感谢!
发布于 2016-05-14 12:57:08
很抱歉回答得太晚了!我已经使用我们的AWS帐户再次测试了这一点,例如,我能够轻松地列出我们的所有S3存储桶,请看下面的屏幕快照:

这似乎是一个与授权头配置方式有关的问题,或者是在URL字段中插入无效字符的问题。(截图将有助于发现什么可能是错误的)
发布于 2017-04-20 10:12:51
使用Pawv3.0.16和"Amazon授权头“动态值,该S3发生SignatureDoesNotMatch错误。
GET https://s3-ap-northeast-1.amazonaws.com/bucket123/sub456/some789.json
这个URL运行得很好。
GET https://bucket123.s3.amazonaws.com/sub456/some789.json
http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
https://stackoverflow.com/questions/36494994
复制相似问题