我正在使用 Cloudfront 和使用 KMS 加密对象的 S3 源。在向 S3 存储桶中的对象发送 GET 请求时,我收到以下错误。
Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4.
我以为 Cloudfront 会足够智能,在请求对象时使用 AWS Signature Version 4,但也许不是?
它看起来像这样新的 S3 区域存在问题。 亚马逊最近增加了支持对于这些新区域,但我不认为他们已经解决 KMS 加密对象的问题。
有谁有这方面的经验并且知道是否有办法让 Cloudfront 的原始访问标识使用签名 v4?
答案1
您需要配置您的AWS 签名版本例如
aws configure set default.s3.signature_version s3v4
或者针对特定的配置文件:
aws configure set profile.<profilename>.s3.signature_version s3v4
然后重试,例如
aws s3 cp s3://rkbtest/check.png ./
来源:GitHub 上的 aws/aws-cli/issues/1006。
如果使用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
。