0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2のIAMロールを使ってRailsからSESを使う方法

Last updated at Posted at 2023-08-18

株式会社TECH LUCKという会社で代表兼エンジニアをしている齊藤です。

DXプロジェクト、開発プロジェクト、Rails開発などでお困りごとがありましたら弊社HPからご相談をいただけますと幸いです。
以下のような問題に対応することが可能です。

  • プロジェクトでRailsエンジニアが足りなくて困っている
  • Railsのバージョンアップをしたいがノウハウ・リソースが足りなくて困っている
  • オフショア開発をしているが、要件の齟齬やコード品質が悪いので改善したい

また、Railsエンジニアも募集しておりますので、興味がありましたら弊社HPからご連絡いただけますと幸いです。

前提

インフラをAWSで構成しており、AWS EC2上で稼働しているRailsアプリケーションから、AWS SESを使ってメールを送信する構成を作りました。
その際に、EC2からSESを利用する設定方法があまり記事になっていなかったので記事にしました。

Railsプロジェクトでの設定

gemの導入

Gemfileにgem 'aws-sdk-rails'を追記して、bundle installします。
ここで注意、gem 'aws-ses'ではないということです。他の記事などでgem 'aws-ses'を利用する人もいましたが、この記事では利用しません。

aws-sdk-railsについて詳しく知りたい方はこちらのリポジトリをご参照ください。

AWS SESの利用設定

次に、config/initializers/aws_ses.rbファイルを作成し以下の記述をします。
ここでも注意なのが、秘匿情報(credentials情報)をRailsプロジェクト内で明示的に設定しなくても、aws-sdk-railsがうまくやってくれるようです。

config/initializers/aws_ses.rb
Aws::Rails.add_action_mailer_delivery_method(
  :aws_sdk,
  region: 'ap-northeast-1'
)

config/environments/production.rbでメール送信の設定を以下のようにして、aws_sdkを使うようにします。

config/environments/production.rb
config.action_mailer.delivery_method = :aws_sdk

AWSでの設定

SESの設定

SESの自体の作成方法や設定方法はさまざまな記事で紹介されているので割愛します。
以下の記事を参考にしてみてください。

EC2に権限を付与する

AWS EC2のインスタンスに、AWS SESのFullAcess権限がついたIAMロールを付与します。
これをしないとAWS EC2からAWS SESを利用することができず、エラーで弾かれてしまいます。(これで1日潰しました。)

これで、AWS EC2に構築されたRailsアプリケーションから、AWS SESを利用してメールの送信をすることができます。

参考記事(圧倒的感謝)

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?