LoginSignup
2
0

More than 1 year has passed since last update.

【前編:概要編】空メールを送ったら登録用メールが返ってくるアレをSESで実装する

Last updated at Posted at 2022-12-20

ごきげんよう、@An_nAです!
この記事はハンズラボ Advent Calendar 2022 21日目の記事です。

今年わたしが初めて体験したことの一つに、Amazon Simple Email Service(以降、SESと表記します)でのメール受信があります。ただ受信すれば良いわけではなく、SESでメールを受信したらメールのデータを保存しつつメール送信元にSESでメールを送る、という構成でした。

これ、思っていたよりややこしかったんですよね。
備忘録がてら実施したことをまとめますので、どなたかの参考になれば幸いです。

前編となる本記事では、まずは概要とおさえておきたいポイントをご紹介します。
短い記事ですが、後編の前提知識となりますので、ぜひご一読いただければと思います。
コードだけ見たい!という方は後編の記事をご参照ください。

実現したいこと

今回は、以下を実現したいと思います。

  • ユーザーがシステム宛に空メールを送ると、システムから登録用URLが記載されたメールが届く。

受信したメールの送信元アドレスをどこかに保存しておきたいですね。
もうちょっと流れを噛み砕いてみましょう。

  1. ユーザーがシステム宛にメールを送信
  2. 受信したメールの情報をDynamoDBに登録
  3. 登録用URLを生成
  4. システムから、ユーザー(メール送信元)に登録用のURLを記載したメールを送信

という感じでいけそうです。

おさえておきたいポイント

SESでは「受信ルール」というものを使うことで、受信したメールをS3バケットに保存したり、Lambda関数を呼び出したりすることが可能です。今回もこの受信ルールから呼び出したLambdaでDynamoDBへのデータ保存処理やメール送信処理を行います。

参考:
Amazon SES を使用した E メールの受信
受信ルールを使用した受信者ベースの制御

概要を構成図で表現すると、こんな感じです。
メール受信用SESとLambdaがバージニア北部(us-east-1)に配置されている点が特徴的ですね。
理由はのちほど説明します。

メールデータの保存用DynamoDBやメール送信用SESは他の機能(本記事のスコープ外なのであえて描いていません)でも使用したいので、バージニア北部ではなく東京に置くこととします。

Advent2022.png

さて、SESでのメールの受信と受信ルールの使用にあたり、おさえておきたいポイントを2つご紹介します。

SESでメールを受信できるリージョンは限定されている

構成図をもう一度見てみましょう。
前述の通り、SESがバージニア北部(us-east-1)と東京(ap-northeast-1)にそれぞれ存在していますね。これは、メールの受信が以下のリージョンでのみ可能(2022年12月現在)なためです。

  • US East (N. Virginia)
  • US West (Oregon)
  • Europe (Ireland)

残念ながら東京リージョンのSESにはメールを受信する機能がないので、今回の構成ではメール受信にバージニア北部のSESを利用します。

参考:
Amazon Simple Email Service endpoints and quotas

受信ルールで呼び出すLambdaは、受信用SESと同じリージョンに配置する

受信ルールで呼び出すLambdaは、メール受信に利用するSESと同じリージョンに配置する必要があります。今回の例だとバージニア北部ですね。

参考:
Lambda 関数のアクションを呼び出す

バージニア北部のLambdaから東京のDynamoDBやSESを利用するとなると、少し工夫が要りそうな予感がします。


SESでメールを受信するにあたり、気をつけないければならないポイントをご紹介しました。
短いですが、前編はここまでです。
後編では、ご紹介したポイントを踏まえつつ、実装していきますよ。
どうぞお楽しみに!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0