株式会社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
がうまくやってくれるようです。
Aws::Rails.add_action_mailer_delivery_method(
:aws_sdk,
region: 'ap-northeast-1'
)
config/environments/production.rb
でメール送信の設定を以下のようにして、aws_sdk
を使うようにします。
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を利用してメールの送信をすることができます。
参考記事(圧倒的感謝)