Amazon S3 を利用している企業(AWS を利用している企業はほぼ S3 を利用していると思いますが)にとって重要な情報です。
AWS 公式サイトによると 2019年6月24日(月) 以降は Amazon S3 の署名バージョン 2 が廃止され、署名バージョン 4 で署名された API リクエストのみ受け付けるようになります。
Amazon S3 における AWS 署名バージョン 2 の廃止
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-sig2-deprecation
そのため署名バージョンを 4 にバージョンアップしておかないと、突然 S3 に接続できなくなる可能性があります。
S3 には重要な情報が保存され、企業を支える各システムと連携していると思いますので、業務が止まらないように事前に対策しておきましょう。
【超重要】対応しないと使えなくなるかも?!今、全S3ユーザがチェックすべき署名バージョン2の廃止について
https://dev.classmethod.jp/cloud/aws/s3-sigv2-abolition/
Amazon S3 における署名(しょめい)バージョンとは?
AWS には 2 つの署名バージョンがあります。
- 署名バージョン 4
- 署名バージョン 2
HTTP で AWS に対して HTTP リクエストを送る場合に、リクエストに署名する必要があります。
リクエストを送る先は Amazon S3 の API だったり、各 AWS のオブジェクトに送信します。
その署名にバージョン 2 と 4 があり、署名バージョン 3 はないようです。
その署名は Amazon S3 でも利用していおり、S3 へ API リクエストを投げ、Amazon S3 は署名内容を見てリクエストの送信者を識別し、認証を通ったリクエストのみ許可します。(アカウントとパスワードの組み合わせで認証が通らなかったらアクセスさせないといったようなもの)
通常の AWS へのリクエスト
通常 AWS へリクエストを投げる時は「アクセスキー」を使用して署名します。
アクセスキーは、以下の 2 つのキーで構成されます。
- アクセスキー ID
- シークレットアクセスキー
これらの 2 つのキーはセキュリティ認証情報と呼ばれます。
AWS CLI 及び AWS SDK を利用した AWS リクエストの場合は自動的に署名される
AWS CLI(AWS Command Line Interface)もしくは AWS SDK を利用して AWS へのリクエストを作成すると、ツールの中で自動的にリクエストに署名されます。
つまり、自分で署名する必要はありません。
ただし、自動的に署名されるということは、知らず知らずのうちに古いバージョンで署名されている可能性があり、今自分が投げているリクエストのバージョンが古いことに気が付かない可能性もあります。
では、どうすれば自分が利用している AWS CLI 及び AWS SDK で自動署名されるバージョンが分かるのでしょうか?
AWS CLI 及び AWS SDK のバージョンでどの署名バージョンが使われるかが決まる
AWS CLI 及び AWS SDK のバージョンでどの署名バージョンが使われるかが決まります。
つまり、古い AWS CLI もしくは 古い AWS SDK を利用している場合は、署名バージョンが 2 の可能性が高いです。
署名バージョン 4 への移行が必要な AWS CLI と AWS SDK のバージョン一覧
以下のページに各バージョンと最低限アップグレードするバージョンが記載されています。
署名バージョン 2 から署名バージョン 4 への移行
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingAWSSDK.html#UsingAWSSDK-move-to-Sig4
一番簡単な対処方法
一番簡単な対処方法ですが、AWS CLI も AWS SDK も最新のバージョンアップすることです。
とりあえずこれで対策は完了です。
※ただし全部を無計画に最新にバージョンアップするとアプリが動かなくなることもあるので注意が必要です。
AWS CLI のバージョン確認【Linux】
aws –version コマンドで確認できます。
[ec2-user@redhat7 ~]$ aws –version |
aws –version コマンドで以下のバージョンが分かります。
- aws-cli バージョン : 1.16.92
- Python バージョン : 2.7.5
- Linux カーネルバージョン : 3.10.0-957
- botocore バージョン : 1.12.82
下の表で確認すると AWS CLI は 1.11.108 以上にアップグレードすれば問題ないということなので、現在のバージョンは 1.16.92 だから問題ないと言えます。
ただし定期的に最新のバージョンにアップグレードすることを推奨しているのでバージョンアップを実施してみます。
botocore とは?
botocore とは、ローレベルのライブラリで、その上に AWS CLI や boto3 などが動いています。
botocore の公式サイトです。
Welcome to botocore
https://botocore.amazonaws.com/v1/documentation/api/latest/index.html
Botocore is a low-level interface to a growing number of Amazon Web Services. Botocore serves as the foundation for the AWS-CLI command line utilities. It will also play an important role in the boto3.x project.
The botocore package is compatible with Python versions 2.6.5, Python 2.7.x, and Python 3.3.x and higher.
botocore は、Amazon Web Service(AWS)の低レベルインターフェースです。
botocore は AWS-CLI コマンドラインユーティリティのベースとして機能します。
boto3.x プロジェクトでも重要な役割を果たしています。
AWS CLI のバージョンアップ手順【Linux】
AWS CLI のバージョンアップは pip コマンドで行います。
まずは pip がインストールされていることを確認します。
pip — version コマンドで結果が返ってくれば pip がインストールされています。
[ec2-user@redhat7 ~]$ pip –version |
awscli のバージョンアップは、「pip install –upgrade xxx」コマンドで行います。
[ec2-user@redhat7 ~]$ sudo pip install –upgrade awscli |
再度バージョンを確認します。
[ec2-user@redhat7 ~]$ aws –version |
AWS CLI のバージョンが「1.16.92」から「1.16.121」へアップグレードされています。