LoginSignup
11
7

More than 1 year has passed since last update.

Amazon SES導入

Last updated at Posted at 2022-04-21

開発しているアプリにAmazon SESを導入した話をまとめました。
Amazon SESは、Eメールを送信するサービスになります。

AmazonSESの設定

ドメイン検証

検証済みの特定のドメインからであれば、任意のどのようなメールアドレスにでも送信できるようになるので、ドメインの検証を行う

  • Domains

    • Verify a New Domain
      • Domainを入力
        • 所持しているドメインを入力
      • Generate DKIM Settingsにチェック
        image.png
  • CSVをダウンロード
    image.png

  • Use Route53

    • 受信もしたい場合はMXレコードの設定にチェック
    • もし同じドメインでgoogle workspace等で受信設定していたりなど、受信は別のツールで行う場合は、MXレコードのチェックは外す。
    • 外さないと、勝手に受信のためのMXレコードに値が上書きされてしまい、元々Route53に登録していたMXレコードが上書きされてしまい、既存のツールで受信ができなくなってしまったりするので注意が必要
    • そのほかの項目はチェックする

image.png

AWSへ本番環境利用申請

  • 初期は以下のようにsandboxになっている
    image.png

  • Amazon SESダッシュボードからSending StatisticsEdit your account details

image.png

  • 申請中
    image.png

  • 承認

image.png

  • Sending Statisticsを確認
    • sandbox制限が解除されているか
      image.png

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での設定方法が公式と違うようで送信できなかった。
image.png (651.7 kB)

参考:SMTPで作る場合は以下の手順(この場合だとRailsの設定ファイルの書き方が変わる)

  • SMTP Settings
    • Create My SMTP Credentials
    • user_nameとpasswordを発行
    • IAMユーザーが新規作成される
image.png (122.6 kB) image.png (145.4 kB)

メールアドレスの検証

  • 本番環境の申請を通していないと、予め設定されたメールアドレスにしかメールを送信することができないので、検証用に自分のメアドを登録しておく
  • 本番の申請が承認された後も、fromのemailはここでリスト登録しておかないとエラーになるので、fromに指定予定のemailはここで登録しておく。

image.png

届いたemailのリンクを踏むとverifiedになる

image.png

Test Mail が送信できることを確認

  • Identiity Management > Domains > my-domain.com を選択 > Send a Test Email

image.png

Railsの設定

  • gem aws-sdk-railsの導入

gem 'aws-sdk-rails'
  • 初期設定
config/initializers/aws_ses.rb
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

environment/production.rb
config.action_mailer.delivery_method = :ses
  config.action_mailer.default_url_options = { host: 'hoge.com' }
  • gem letter_opener導入
    • メールの送信履歴をローカルで確認
config/development.rb
config.action_mailer.delivery_method = :letter_opener_web
  • ActionMailer Preview
    • メール本文の確認

1日あたり送信できるメールの上限数を増やす方法

今回は、本番用の申請が通ればデフォルトで50000emails per 24hoursだったので、それより増やす必要はなく対応せず。

  • サポートセンター(Amazon SES画面のRequest Increased Sending Limitsからでも可能)
    image.png

  • create case

image.png (79.8 kB)
  • 上限数を設定
image.png (238.0 kB) image.png (90.3 kB) image.png (115.0 kB)

image.png

参考

ありがとうございます。

https://zenn.dev/yukito0616/articles/3f224d68382c0d
https://qiita.com/tanakaworld/items/94f1ba66801100f6a44f

いかがでしたでしょうか?よろしくお願いいたします。

11
7
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
11
7