はじめに
2020年10月1日以降、SESでは署名バージョン4を使用する旨のAWSからメールが届きました。gem aws-ses
を使っている場合、メールが送信できなくなる問題が起こりそうなのでメモ。
AWSからのアナウンス
AWS SESでは、署名バージョン4を使え、とのこと。
署名バージョン4では、シークレットアクセスキーの代わりに署名キーを使用することで、Amazon SESの顧客の認証と承認に関するセキュリティがさらに強化されています。お客様のセキュリティを向上させるため、2020年10月1日以降、Amazon SESではAmazon署名バージョン3が無効になり(非推奨)、署名バージョン4が優先されます。
2020年9月30日以降に行われた署名バージョン3で署名されたリクエストは、Amazon SESでの認証に失敗します。要求者には、要求が署名バージョン4で署名されている必要があることを示すエラーが表示されます。
公式情報
【要注意】gem aws-sesは署名バージョン3を使用している
2018年頃まで、RailsアプリでAWS SESと連携する場合、aws-ses のgemを使うケースが多かったように思います。
しかし、本gemは2018年からメンテナンスされておらず、署名バージョン3を利用するため、2020年10月1日以降は使用できなくなる可能性が高いと思われます。
該当箇所のソース
# Generates the HTTP Header String that Amazon looks for # # @param [String] key the AWS Access Key ID # @param [String] alg the algorithm used for the signature # @param [String] sig the signature itself def SES.authorization_header(key, alg, sig) "AWS3-HTTPS AWSAccessKeyId=#{key}, Algorithm=#{alg}, Signature=#{sig}" end
どうすればいいのか
- gem
aws-ses
の使用をやめる - AWS公式のgem
aws-sdk-rails
を使う- 公式があるなら公式を使うほうが無難です