AWS
ses
route53
cognito

Route53で取得したドメインをCognitoユーザープールの送信元アドレスに使う

サービスの認証にCognitoを使う際、サービスへの初回登録時の確認コード送信や、パスワード変更確認メールの送信などをする必要が出てくるかと思います。
そのようなシステムメールの送信元メールアドレスをカスタマイズする方法です。

方法としては、SESに送信元にしたいアドレスを登録し、それをCognitoから参照する形になります。

SESに登録したアドレスを送信元として使えるようにするためには、SES登録後、そのアドレスに送信される確認URLにアクセスする必要があります。

送信元に使いたいアドレスが既にメールを受信できる状態であればつまづくことはないかと思いますが、Route53でドメインを取得した時点ではメールを受信する手段がないためSESからの確認メールを確認する手段がないことになります。

今回はそんな場合の対処法です。
ちなみにドメインは取得済みの想定です。
SES、SNSはバージニアリージョンです。

設定値

  • ドメイン:ykarakita.com
  • Cognitoに設定する送信元メールアドレス :info@ykarakita.com
  • 確認メールが受信可能なメールアドレス:xxx@gmail.com

手順

  1. SNSのトピックを作成し、受信可能なメールアドレス(gmailとか)をサブスクリプションとして登録する
  2. ドメインをSESに登録する、同時にRoute53にMXレコードとTXTレコードを作成する
  3. SESの受信ルールを作成し、1.で作成したSNSトピックを指定する
  4. Cognitoで送信元にするメールアドレスをSESに登録する
  5. 1.で登録したメールアドレスに確認メールが届くので承認リンクをブラウザで開く

1. SNSのトピックを作成し、受信可能なメールアドレス(gmailとか)をサブスクリプションとして登録する

10.png
コンソールでSESを開き、TopicsからCreate new topicを開く。

11.png
Display nameはメール送信時の送信者名になる。
名前を入力してCreate Topic

12.png
作成したTopicのARNのリンクからTopic詳細画面へ。

13.png
Create subscriptionをクリック

14.png
こんな感じで入力する。Endpointはメール受信可能なメールアドレス。Create subscription する。

スクリーンショット 2018-02-02 0.44.41.png
そうすると、登録されたメールアドレスに確認メールが届くのでConfirm subscriptionのリンクへ行くと下のような画面が表示される。

スクリーンショット 2018-02-02 0.44.46.png

これでこのSNSトピックにパブリッシュしたらgmailにメールが飛ぶようになっているはず。

2. ドメインをSESに登録する、同時にRoute53にMXレコードとTXTレコードを作成する

SESコンソール左側のDomainsを選択。
9.png
Verify a New Domainから、あらかじめRoute53で取得済みのドメイン名を入力。

スクリーンショット 2018-02-01 23.52.52.png
このドメイン所有者の確認としてDNSレコードを登録するように言われる。今回はホストゾーンもRoute53に作成しているためそのままUse Route53へ。

スクリーンショット 2018-02-01 23.52.56.png
すべてチェックを付けてCreate Record Sets

1.png
登録したドメインのステータスはpending verificationになっている。
1分くらいたつとverifiedになる。

3. SESの受信ルールを作成し、1.で作成したSNSトピックを指定する

SESのコンソールからRule SetsView Active Rule SetCreate Ruleを開く。
7.png

8.png

スクリーンショット 2018-02-02 0.55.30.png
ここにはCognitoの送信元にしたいメールアドレスを入力。Add Recipientで追加。

スクリーンショット 2018-02-01 22.34.44.png
Next Stepへ。

5.png
Actionには先ほど作成したSNSトピックを選択する。

スクリーンショット 2018-02-01 23.49.20.png
スクリーンショット 2018-02-01 23.50.33.png
スクリーンショット 2018-02-01 23.50.39.png
こんな感じ。

4. Cognitoで送信元にするメールアドレスをSESに登録する

SESコンソールのEmail Addressesを開く。
2.png

3.png
Verify a New Email Addressから送信元メールアドレスにしたいアドレスを入力。

4.png

5. 1.で登録したメールアドレスに確認メールが届くので承認リンクをブラウザで開く

メールアドレスを登録すると、SNSサブスクリプションに登録したメールアドレスあてに確認メールが届くので、その中から下の方にあるhttps://email-verification.us-east-1.amazonaws.comで始まるURLを探し出してブラウザで開く。

スクリーンショット 2018-02-02 1.10.51.png
こんな画面が表示される!

20.png
ちゃんとverifiedになりました。

これでCognitoの送信元メールアドレスに指定する準備ができました。

スクリーンショット 2018-02-02 10.15.52.png

Cognitoの設定画面で選択できる!

以上です。