PrivateSubnetからNatGatewayを経由してSESメール配信


NATGatewayの作成

VPCからNATゲートウェイ選択、作成クリック

適当に名前をつけ、NATゲートウェイをおくパブリックサブネットを指定。ElasticIPの割り当ては自動でよければElasticIpの割り当てボタンをクリックすると勝手に振ってくれる。

EC2から外部ネットワークへNATGatewayを経由して接続

VPCのルートテーブルから、対象のEC2インスタンスが存在するPrivateSubnetが明示的に関連づけられたルートテーブルを選択

ルートの編集をクリック

送信先を指定、ターゲットに先ほどPublicSubnetに配置したNATを指定。このNATGatewayをSESだけに使用したい場合には、SESのサポートからElasticIPをメールサバーに紐づけるようリクエストして、送信先をそのIPにする。(今回はIP絞らないお手軽版)
ルートの保存をクリック

アクセステスト

コマンドラインを使用して Amazon SES SMTP インターフェイスへの接続をテストする
送信元になる予定のインスタンス内部で接続テストを実施

openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587

上記で接続確認ができれば、あとはアプリケーションから認証情報を持たせて普通に配信できる。

備考

S3の場合いはVPCエンドポイントを使用してセキュアにアクセスすることができた、SESの場合にもエンドポイントの使用が可能になったがまだ東京リージョンでは利用できないため今回の対応は暫定的。