概要
LocalStack を使ってローカル環境で AWS SES を動かせるようにします。
Docker Compose のセットアップ
LocalStack の Docker イメージを使って SES だけを起動させるよう設定します。
version: "3"
services:
localstack:
image: localstack/localstack
ports:
- 4579:4579
environment:
- SERVICES=ses
- DEFAULT_REGION=us-west-2
保存したら、docker-compose up
して起動しておきます。
SDK を使って接続してみる
次は SDK for Ruby を使ってローカル環境の SES に接続してみます。
require 'aws-sdk-ses'
client = Aws::SES::Client.new(region: 'us-west-2', endpoint: 'http://localhost:4579')
まずはインスタンスを生成します。その時に endpoint でローカルホストを指定してあげます。
client.verify_email_identity(email_address: 'sender@example.com')
次に送信者の E メールアドレスを検証させます。
これをしないと Aws::SES::Errors::MessageRejected
となってメールを送ることができません。
あとは通常と同じように send_email を呼び出してやれば、うまくいきます。
resp = client.send_email(
destination: {
to_addresses: ['user@example.com']
},
message: {
body: {
text: {
data: 'test local'
}
},
subject: {
data: 'local title'
}
},
source: 'sender@example.com'
)
puts resp #=> {:message_id=>"atqvvxkubdyizegr-pezwthgw-glxd-czoe-osqu-gugatgymuiyx-awwpde"}