SES API へのリクエスト時の署名バージョンを確認する方法

2020.07.03

困っていた内容

SES API 利用時の署名バージョンが 2020年10月以降は バージョン4 のみがサポートされると記載がありますが、現在利用している署名バージョンを確認する方法はありますか?(2020/07/03 時点)

Important

Beginning October 1st, 2020, Amazon SES will only support requests signed using Signature Version 4.
If you use an older version of the AWS Signature, you must adopt AWS Signature Version 4 prior to that date.

↓↓↓ 機械翻訳 ↓↓↓

重要

2020年10月1日より、Amazon SESはSignature Version 4を使用して署名されたリクエストのみをサポートするようになります。
古いバージョンのAWS署名を使用している場合は、それ以前にAWS署名バージョン4を採用する必要があります。

引用元: Authenticating requests to the Amazon SES API

どうすればいいの?

残念ながら CloudTrail では SES の全 API が記録されているわけではありません。

そのため、リクエストヘッダーを確認することで、利用している署名バージョンを確認することが可能です。
以下のドキュメントの例では AWS33 の部分がバージョンとなります。

X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HMACSHA256,Signature=lBP67vCvGl ...

引用元: Authenticating requests to the Amazon SES API

また AWS SDK や AWS CLI ではそれぞれが提供しているロギングやデバッグ機能を利用して確認することが可能です。

例: AWS CLI

$ aws ses send-email --from *****@classmethod.jp --to xxxxx@classmethod.jp --subject "test" --text "Hello,Goodbye" --region us-east-1 --debug
2020-07-03 16:47:40,878 - MainThread - awscli.clidriver - DEBUG - CLI version: aws-cli/2.0.8 Python/3.7.4 Darwin/19.5.0 botocore/2.0.0dev12

(中略)

2020-07-03 16:47:41,063 - MainThread - botocore.auth - DEBUG - StringToSign:
AWS4-HMAC-SHA256
20200703T074741Z
20200703/us-east-1/ses/aws4_request

(以下、略)

今回であれば利用しているバージョンが 3以下の場合は 署名バージョン4 を利用するように修正します。

  • AWS SDK および AWS CLI を利用: 最新バージョンへアップデート
  • 直接 API へリクエスト: 処理内で利用している署名バージョンを変更

参考情報

テクニカルサポートノートとは?

クラスメソッドのカルチャー(CLP) の「情報発信を通じて、全ての人々の創造活動に貢献し続ける」という考えから、クラスメソッド メンバーズをご利用のお客様よりいただいたお問い合わせより、他の AWS ユーザーにとっても 有益な情報を一般的な TIPS としてご紹介しています。