Я использую Cloudfront с источником S3, который использует KMS для шифрования объектов. Я получаю следующую ошибку при отправке запроса GET для объекта в корзине S3.
Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4.
Я предположил, что Cloudfront будет достаточно умен, чтобы использовать AWS Signature Version 4 при запросе объекта, но, может быть, нет?
Это выглядит так возникла проблема с новыми регионами S3. Amazon недавно добавила поддержку для этих новых регионов, но я не думаю, что они решили проблему с объектами, зашифрованными с помощью KMS.
Кто-нибудь имеет опыт работы с этим и знает, есть ли способ получить идентификатор доступа Cloudfront для использования подписи v4?
Вам необходимо настроить свой Версия подписи 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 ./
Источник: aws / aws-cli / issues / 1006 на 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
.