AWS SESをGoでサンプルアプリケーションを作ってみた


仕事でsesを使う機会があったので、手元で試してみたく、サンプルアプリケーションを作りました。

前提

実装は組み込めるようにしたものではなく、サンプルアプリケーションを動かすだけのものです。

sesの設定

SMTPの設定

SMTP Settings > Create My SMTP Credentialsを選び、適当な名前でIAM Userを作成します。
ここを参照するとわかりやすいです。
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/smtp-credentials.html

ポリシーの設定

IAM Userを作成しただけでは、メールが送信できませんでした。

$ go run main.go
AccessDenied: User `arn:aws:iam::11111111:user/ses-smtp-user' is not authorized to perform `ses:SendEmail' on resource `arn:aws:ses:us-west-2:11111111:identity/[email protected]'
    status code: 403, request id: 111111111

なので、IAMのコンソール画面で SendEmailポリシーの設定をします
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/control-user-access.html#iam-and-ses-examples-email-sending-actions

使用するメールアドレスを有効にする

実際に使う場合はドメインを設定する必要があると思いますが、一旦メールアドレスを設定します。
Email Addresses > Verify a New Email Addressから適当なメールアドレスを入力します。
Verify This Email Addressを押すと入力したメールアドレスにメールが届くので、そのメールの中のリンクをクリックしてメールアドレスを使えるようにします。

認証ファイルの作成

~/.aws/credentials
[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

アプリケーションの実装

サンプルはこちら
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/examples-send-using-sdk.html

ConfigSetを使用すると送信数などを計測できるようになるようですが、一旦必要ないのでそこはコメントアウトしています。
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/event-publishing-create-configuration-set.html

$ go run main.go
Email Sent!
{
  MessageId: "0101016ff173d049~~~~~~"
}

実際に届いたメールはこちら

まとめ

ただ、メールを送信するだけならとても簡単にできそうでした。
実際に本番に適用する際に何が必要なのかもう少し調べてみようと思います