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

2020.07.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2020/08/18 AWS Tools for Windows PowerShell でのデバッグ情報リンクを追加
2020/08/18 署名バージョン4 への移行情報のリンクを追加

困っていた内容

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

(以下、略)

例: AWS Tools for Windows PowerShell

Response Logging in AWS Tools for Windows PowerShell

署名バージョン4 への移行

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

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

参考情報