Amazon Simple Email Service (SES) を使用して、Amazon 仮想プライベートクラウド (VPC) 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたは AWS Lambda 関数からメールを送信したいです。
簡単な説明
デフォルトでは、Amazon VPC 内にデプロイした Amazon EC2 インスタンスと Lambda 関数は、インターネットに直接アクセスできません。メールを送信するには、Amazon SES API には Amazon SES サービスと通信するためのアウトバウンドインターネット接続が必要です。
解決策
Amazon VPC エンドポイントで Amazon SES SMTP インターフェイスを使用する
Amazon SES Simple Mail Transfer Protocol (SMTP) インターフェイスを使用してメールを送信するには、次の手順を実行します。
- Amazon VPC に Amazon SES SMTP サービス用の新しい Amazon VPC エンドポイントを作成します。
注: Amazon VPC エンドポイントは、複数 AWS リージョンにわたるリクエストをサポートしていません。エンドポイントは、API コールの送信元と同じリージョンに作成してください。
- インスタンスまたは Lambda 関数のアクセスコントロールリスト (ACL) が Amazon SES SMTP エンドポイントへのアウトバウンドトラフィックを許可していることを確認します。Lambda 関数を使用する場合は、Amazon SES SMTP エンドポイントが Lambda 関数と同じサブネットに関連付けられていることを確認してください。
- アプリケーションが SMTP プロトコルを使用して Amazon SES SMTP エンドポイントに接続するように、アプリケーションを更新します。
Amazon SES API をインターネットに接続する
前提条件 インスタンスのロールまたは Lambda 実行ロールに、アクセス許可 ses:SendEmail と ses:SendRawEmail があることを確認してください。さらに、メールアドレスの ID またはドメインの ID を確認してください。
Amazon SES API を使用するには、パブリックサブネットで NAT ゲートウェイを設定し、プライベートサブネットからのインターネットアクセスを許可します。パブリックサブネットでプロキシサーバーをデプロイ、設定しても、インターネットトラフィックをプライベートサブネットに転送できます。
次に、Amazon SES SMTP エンドポイントへの接続をテストします。
注: デフォルトでは、Amazon EC2 ではすべてのインスタンスのアウトバウンドトラフィックは、SMTO ポート 25 では制限されています。
関連情報
Amazon SES SMTP インターフェイスを使用してメールを送信する
Lambda 関数に Amazon VPC 内のリソースへのアクセスを許可する
Amazon SES で発生する、SMTP 接続またはタイムアウトの問題をトラブルシューティングする方法を教えてください