我正在使用Cloudfront和一个使用KMSencryption对象的S3来源。 发送S3存储桶中的对象的GET请求时出现以下错误。
Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4.
我认为Cloudfront在使用AWS签名版本4时足够聪明,但可能不是?
看起来这是新S3地区的问题 。 亚马逊最近增加了对这些新地区的支持 ,但是我不认为他们已经用KMSencryption的对象解决了这个问题。
有没有人有这方面的经验,并知道是否有办法让Cloudfront的原产地访问标识使用签名V4?
您需要configuration您的AWS签名版本 ,例如
aws configure set default.s3.signature_version s3v4
或针对特定configuration文件:
aws configure set profile.<profilename>.s3.signature_version s3v4
然后重新尝试,例如
aws s3 cp s3://rkbtest/check.png ./
资料来源: aws / aws-cli / issues / 1006 at GitHub 。
如果使用curl / wget命令,则需要在请求中添加额外的Authorization标头,例如
GET /photos/puppy.jpg HTTP/1.1 Host: johnsmith.s3.amazonaws.com Date: Tue, 27 Mar 2007 19:36:42 +0000 Authorization: AWS AKIAIOSFODNN7EXAMPLE: bWq2s1WEIj+Ydj0vQ697zp+IXMU=
语法: Authorization: AWS AWSAccessKeyId:Signature 。
请参阅: 签名和authenticationREST请求 。