search
LoginSignup
6

posted at

updated at

Organization

Amazon SES導入

開発しているアプリに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

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

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
What you can do with signing up
6