📧

【遂に】Amazon SES メール受信が東京リージョンで行えます!【待ってた】

2023/09/28に公開

(2023/10/6 更新)東京リージョンでドメインの検証を行う手順が抜けていたので追加しました。

本日の #ちょっぴりDD でSES受信が東京リージョンで使えるようになったのを知りました。

https://aws.amazon.com/jp/about-aws/whats-new/2023/09/amazon-ses-email-service-7-regions/

今まではus-east-1を代表する海外リージョンでしか使えなかったので、SESをSMTPサーバとして使っている各位は「送信は東京リージョンだけど受信が海外リージョンでややこしいなぁ」と思っていました。(決めつけ)
実際僕も、以前案件でお客様に「受信ルールないんやけど」って突っ込まれたこと何回かありましたので、これは嬉しいですね~。

お伝えしたいことは正直以上なのですが、せっかくなのでus-east-1のSESをap-northeast-1に引っ越してみようと思います。

ざっくり流れ

  1. 東京リージョンにEメール受信ルールセットを作成する
  2. (オプション)受信ルールで使用しているLambda関数を東京リージョンに複製する
  3. 1で作成した受信ルールセット内に受信ルールを作成する
  4. 受信ルールと受信ルールセットを有効化する
  5. 東京リージョンでドメインの検証を行う
  6. MXレコードを書き換える

やってみた

東京リージョンにEメール受信ルールセットを作成する

名前決めてボタン押すだけ。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/receiving-email-receipt-rules-console-walkthrough.html

(オプション)受信ルールで使用しているLambda関数を東京リージョンに複製する

アクションを指定してない人には関係ないです。
アクションでLambda関数の実行を指定している場合、同じリージョンしか指定出来ないので複製してくる必要があります。実はこれが一番面倒でした。
ちなみにS3は他リージョンでも指定出来ます。

「関数のエクスポート」でSAMテンプレートとLambdaコードをダウンロード

「関数のエクスポート」を実行すると、既存Lambda関数の設定を全てSAMテンプレートに出力してくれます。また、Lambdaコードもダウンロード出来ます。

「AWS SAM ファイルのダウンロード」と「Download function code .zip」どちらもクリックして両方のファイルをダウンロードしてください。

SAM(CloudFormation)を実行してLambda関数をデプロイする

先ほどダウンロードしたSAMファイルを実行してLambda関数を東京リージョンにデプロイします。

ローカルでsam deployコマンドを実行するか、CloudFormationコンソールから実行します。(リージョン注意)
今回はCloudFormationコンソールから実行しました。

コンソールから実行する場合は事前にLambdaコードをS3にアップロードしておく必要があります。
また、SAMファイル内CodeUriを、LambdaコードをアップロードしたS3URLに書き換えておくのを忘れないでください。
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-codeuri


SAMファイルをアップロードして実行するだけです。

これでus-east-1にあったLambda関数をそっくりそのままap-northeast-1に複製出来ました。

1で作成した受信ルールセット内に受信ルールを作成する

受信ルールセット内に受信ルールを作成します。
名前を決めて、「受信者の条件」でガイドライン(最近出来た)を参考に受信条件を指定します。今回はドメインとサブドメイン全て受信する形にしました。

「アクションの追加」でメール受信した際のアクションを指定します。今回は先ほど複製してきたLambda関数の呼び出しと、受信したメールをS3に保存するアクションを追加しました。

これで受信ルールの作成が出来ました。

受信ルールと受信ルールセットを有効化する

これ忘れててしばらくメール受信できませんでした。
どちらも有効化されてることを確認してください。されてない場合は右上あたりにそれっぽいボタンがあるので探してください。

ちなみに受信ルールが有効化されてないと、送信側に下記のようなエラーが返されます。
550 5.1.1 Requested action not taken: mailbox unacailable

東京リージョンでドメインの検証を行う

これを忘れててしばらくメール受信できませんでした。
旧リージョンで行っていたドメインの検証を改めて行う必要があります。
検証済みIDの作成を参考にドメインの検証を実施してください。
ドメイン ID の作成

MXレコードを書き換える

当該ドメインのDNSに登録されているMXレコードを書き換えます。

### old
example.com MX 10 inbound-smtp.us-east-1.amazonaws.com

### new
example.com MX 10 inbound-smtp.ap-northeast-1.amazonaws.com

以上で東京リージョンにSESメール受信をお引越しすることが出来ました。

やる意味ある?

正直ないですね。海外リージョンはマズいってことじゃなければ。

参考

https://repost.aws/ja/knowledge-center/lambda-function-migration-console

Discussion