5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[小ネタ] Terraform で Amazon SES のSMTPパスワード(IAMアクセスキー)を発行する際はSESと同じリージョンで発行しよう

Last updated at Posted at 2023-07-21

SMTPのパスワードを ses_smtp_password_v4 に切り替えたらメール送信できなくなった

Amazon SES といえば、AWSのメール送信サービスですが、昔は日本リージョンがなく、米国リージョン(us-east-1 など)を使うのが普通でした。

そんな米国リージョンの歴史あるSESを使っているサービスをTerraformで管理していたのですが、つい先日 TerraformのAWSプロバイダ を新バージョンに切り替えていた際に 「ses_smtp_password が deprecated になっている」 という警告が出ました。

resource "..." {
  name  = "SMTPPassword"
  # !! ses_smtp_password は非推奨だよ (※最新版では削除) !!
  value = aws_iam_access_key.ses_mail_sender.ses_smtp_password
}

ses_smtp_password の代わりに ses_smtp_password_v4 を使えとのことらしいので、そのまま切り替えると、

resource "..." {
  name  = "SMTPPassword"
  value = aws_iam_access_key.ses_mail_sender.ses_smtp_password_v4
}

Terraform 上での変更はうまくいきましたが、いざメールを送信しようとすると認証エラーで失敗するようになってしまいました。なぜ?!

ses_smtp_password_v4ses_smtp_password と違ってAmazon SESのリージョンで発行する必要がある

ses_smtp_password_v4 の発行元のリソースとなる aws_iam_access_key はそもそも、下記のように ap-northeast-1 のリージョンで定義していました。

Before
resource "aws_iam_access_key" "ses_mail_sender" {
  # プロバイダのメインリージョンは ap-northeast-1 (Tokyo)
  user = aws_iam_user.ses_mail_sender.name
}

ses_smtp_password では上記でうまくいくのですが、 新しいses_smtp_password_v4 は発行するリージョンをAmazon SESのリージョンと同じにしないと機能しません。

After
resource "aws_iam_access_key" "ses_mail_sender" {
  # プロバイダのメインリージョンはAmazon SESと同じ us-east-1 (North Virginia)
  provider = aws.ses_region_provider

  user = aws_iam_user.ses_mail_sender.name
}

このことはAWSのドキュメントでも明記されています。

The credentials that you use to send email through the SES SMTP interface are unique to each AWS Region.
If you use the SES SMTP interface to send email in more than one Region, you must generate a set of SMTP credentials for each Region that you plan to use.

https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html#smtp-credentials-convert

Amazon SESと同じリージョンでIAMアクセスキーを生成するようにしたところ、無事認証が通るようになりました。 古いAWSのTerraform定義をアップグレードする際は気をつけましょう。

(別解としては、Amazon SESのリージョンを ap-northeast-1 (Tokyo) に変更してもよかったと思います。)

参考

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?