CloudFront是否支持KMSencryption对象的S3签名版本4?

我正在使用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请求 。