メモ:AWS CLI のS3 署名にsigv4 を利用するように設定する

2019年6月24日をもって、sigv2 は廃止されますので(追記:延期されました。)、先立ってAWS CLI 環境にsigv4 の設定方法を調べたのでメモ。現状 AWS CLI の最新バージョンへのバージョンアップだけではsigv4 署名にならず、CLI の追加の設定が必要だった。

参考ドキュメント:

AWS SDK、CLI、Explorer の使用 - Amazon Simple Storage Service
AWS SDK for Java、AWS SDK for PHP、AWS SDK for .NET、および Ruby を使用してアプリケーションを開発します。

Default プロファイルの設定

$ aws configure set default.s3.signature_version s3v4

個別のプロファイルの設定

$ aws configure set profile.your_profile_name.s3.signature_version s3v4

確認方法:

sigv2 の場合

https://hoge.s3.amazonaws.com/test?
AWSAccessKeyId=xxxx&Signature=xxxx&x-amz-security-token=xxxxx

sigv4 の場合

https://hoge.s3.amazonaws.com/test?
X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxx&X-Amz-Date=20190604T140542Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=xxxxx

注意:細かい挙動の違いとしては、Sigv2 の有効期限は無制限に設定することができましたが、Sigv4 は最長7日間となります。今までsigv2 で7日以上有効な署名付きURLを利用していた場合は、運用ルールなどを見直す必要があります。