DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【AWS入門】SES経由でプライベートサブネットからメールを送信する - PrismScaler

【AWS入門】SES経由でプライベートサブネットからメールを送信する - PrismScaler

1. はじめに

こんにちは!株式会社Definerの阪本です!
今回は、SES経由でプライベートサブネットからメールを送信する方法をご紹介したいと思います。

2. 目的・ユースケース

この記事では、メール送信を手軽に実施するという目的に向けて、Amazon SESという技術を活用します。
ITの現場で、AWSのプライベートサブネットからメールを送信したいときに、参考になる情報やプラクティスをまとめています。

3. Amazon SESとは

Amazon SESはSimple Email Serviceの略で、AWSが提供するメール配信サービスです。
自身でメールサーバを構築する必要がなく、メールを使う多くのユースケースに対応しています。
SESは設定すればすぐに使えますが、開始時にはメール送信に制限がかかっています(スパムなどの悪質利用を考えれば当然ですが)。SESのサンドボックス解除設定を行うと、制限なくサービスを利用することができます。
 
SESでメールを送信するには、インターネットへアクセスする必要があります。
パブリックサブネットであれば、EC2から直接インターネットへアクセスすればメールが送信できますが、プライベートサブネットの場合はどのようにすれば良いのでしょうか。

4. プライベートサブネットからSESを使ってメール送信

それでは、プライベートサブネットからSESを使ってメールを送信する方法をご紹介していきます。
SESの作成やメール送信については、「TerraformでAmazon SESを作成する」も参考にしてみてください。
 
プライベートサブネットからSESを使ってメールを送信するには、以下どちらかの対応が必要です。
 
①NAT Gatewayの作成
NAT gatewayは、パブリックIPを持たないプライベートサブネットから、インターネットに接続できるようにするサービスです。
NAT gatewayは、プライベートIPアドレスをパブリックIPアドレスに変換します。NAT Gatewayを経由することで、プライベートサブネットのリソースはインターネットへアクセスすることができます。(もちろん、インターネットからプライベートサブネットへアクセスされることはありません)
以下のコマンドで、NAT Gatewayを作成し、Route Tableへルーティングを設定できます。
 
②VPCエンドポイントの作成
VPCエンドポイントは、インターネットに出られない環境からAWSの特定のサービスと通信したい時や、セキュリティポリシー的に通信をインターネット経由にしたくない時に使用するサービスです。
SESだけでなく、色々なサービスのVPCエンドポイントが提供されています。
メール送信用のVPCエンドポイントは、「com.amazonaws.ap-northeast-1.email-smtp」です。
注意点として、SES APIではなくSMTPによるメール送信のロジックが必要です。
以下に、メール送信用のVPCエンドポイントの作成コマンドを記載しました。
 
要件などに応じて、この2つの方法を使い分けてメール送信を行なってみてください!
 
## NAT Gatewayに必要なアドレスを割当
aws ec2 allocate-address --domain vpc

## NAT Gateway作成
aws ec2 create-nat-gateway
--subnet-id ${サブネットID}  \
--allocation-id ${EIPのID}

## RouteTableのNAT Gatewayのルート追加
aws ec2 create-route
--route-table-id ${ルートテーブルID}  \
--destination-cidr-block 0.0.0.0/0
--nat-gateway-id ${NAT Gateway ID}  \                
## メール送信のエンドポイント作成のコマンド
aws ec2 create-vpc-endpoint  \
--vpc-endpoint-type Interface  \
--service-name com.amazonaws.ap-northeast-1.email-smtp  \
--vpc-id ${VPC ID}  \
--subnet-id ${サブネットID}  \
--security-group-id ${SecurityGroup ID}                  

5. 引用・参考記事

6. 独自ソリューション「PrismScaler」について

・ PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
・ クラウド基盤にまつわる「自動構築」「自動監視」「問題検知」「構成可視化」などの効率化を実現し、クラウドエンジニア、SRE/DevOpsエンジニアが行う泥臭く大変な作業を肩代わりするソリューションです。
・ クラウド基盤構築/クラウド移行や、クラウドの保守運用・コスト最適化など幅広い利用シーンを想定しており、IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
 

7. お問合せ

本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。