開発しているアプリにAmazon SESを導入した話をまとめました。
Amazon SESは、Eメールを送信するサービスになります。
AmazonSESの設定
- リージョンは東京リージョンを選択
-
https://aws.amazon.com/jp/blogs/news/amazon-ses-tokyo/
- 2020年に東京リージョンが開設した模様
ドメイン検証
検証済みの特定のドメインからであれば、任意のどのようなメールアドレスにでも送信できるようになるので、ドメインの検証を行う
-
Domains
-
Use Route53
- 受信もしたい場合はMXレコードの設定にチェック
- もし同じドメインでgoogle workspace等で受信設定していたりなど、受信は別のツールで行う場合は、MXレコードのチェックは外す。
- 外さないと、勝手に受信のためのMXレコードに値が上書きされてしまい、元々Route53に登録していたMXレコードが上書きされてしまい、既存のツールで受信ができなくなってしまったりするので注意が必要
- そのほかの項目はチェックする
AWSへ本番環境利用申請
AWS IAM 設定
2通りの方法がある
- SMTP SettingsからIAMユーザーを作りクレデンシャル発行
- IAMユーザーを作成しses fullaccessのポリシーをアタッチ
今回はIAM > Users > Create New Users から新規ユーザーを作成し、発行された、Access key IDとSecret access keyを使用。
※Note: にも記載があるように SMTP Credentialsは AWS access key とは別の識別子のようで、Railsでの設定方法が公式と違うようで送信できなかった。
参考:SMTPで作る場合は以下の手順(この場合だとRailsの設定ファイルの書き方が変わる)
- SMTP Settings
- Create My SMTP Credentials
- user_nameとpasswordを発行
- IAMユーザーが新規作成される
メールアドレスの検証
- 本番環境の申請を通していないと、予め設定されたメールアドレスにしかメールを送信することができないので、検証用に自分のメアドを登録しておく
- 本番の申請が承認された後も、fromのemailはここでリスト登録しておかないとエラーになるので、fromに指定予定のemailはここで登録しておく。
届いたemailのリンクを踏むとverifiedになる
Test Mail が送信できることを確認
- Identiity Management > Domains > my-domain.com を選択 > Send a Test Email
Railsの設定
- gem aws-sdk-railsの導入
gem 'aws-sdk-rails'
- 初期設定
unless Rails.env.development? || Rails.env.test?
creds = Aws::Credentials.new(
Rails.application.credentials.aws_ses.fetch(:access_key_id),
Rails.application.credentials.aws_ses.fetch(:secret_access_key)
)
Aws::Rails.add_action_mailer_delivery_method(:ses, credentials: creds, region: 'ap-northeast-1')
end
- 各環境の設定
- mailerをses経由で使う設定
- 2.7 Action MailerのビューでURLを生成するための設定
https://railsguides.jp/action_mailer_basics.html#action-mailer%E3%81%AE%E3%83%93%E3%83%A5%E3%83%BC%E3%81%A7url%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B
config.action_mailer.delivery_method = :ses
config.action_mailer.default_url_options = { host: 'hoge.com' }
- gem letter_opener導入
- メールの送信履歴をローカルで確認
config.action_mailer.delivery_method = :letter_opener_web
- ActionMailer Preview
- メール本文の確認
1日あたり送信できるメールの上限数を増やす方法
今回は、本番用の申請が通ればデフォルトで50000emails per 24hoursだったので、それより増やす必要はなく対応せず。
- 上限数を設定
参考
ありがとうございます。
https://zenn.dev/yukito0616/articles/3f224d68382c0d
https://qiita.com/tanakaworld/items/94f1ba66801100f6a44f
いかがでしたでしょうか?よろしくお願いいたします。