サービスの認証にCognitoを使う際、サービスへの初回登録時の確認コード送信や、パスワード変更確認メールの送信などをする必要が出てくるかと思います。
そのようなシステムメールの送信元メールアドレスをカスタマイズする方法です。
方法としては、SESに送信元にしたいアドレスを登録し、それをCognitoから参照する形になります。
SESに登録したアドレスを送信元として使えるようにするためには、SES登録後、そのアドレスに送信される確認URLにアクセスする必要があります。
送信元に使いたいアドレスが既にメールを受信できる状態であればつまづくことはないかと思いますが、Route53でドメインを取得した時点ではメールを受信する手段がないためSESからの確認メールを確認する手段がないことになります。
今回はそんな場合の対処法です。
ちなみにドメインは取得済みの想定です。
SES、SNSはバージニアリージョンです。
設定値
- ドメイン:
ykarakita.com
- Cognitoに設定する送信元メールアドレス :
info@ykarakita.com
- 確認メールが受信可能なメールアドレス:
xxx@gmail.com
手順
- SNSのトピックを作成し、受信可能なメールアドレス(gmailとか)をサブスクリプションとして登録する
- ドメインをSESに登録する、同時にRoute53にMXレコードとTXTレコードを作成する
- SESの受信ルールを作成し、1.で作成したSNSトピックを指定する
- Cognitoで送信元にするメールアドレスをSESに登録する
- 1.で登録したメールアドレスに確認メールが届くので承認リンクをブラウザで開く
1. SNSのトピックを作成し、受信可能なメールアドレス(gmailとか)をサブスクリプションとして登録する
コンソールでSESを開き、TopicsからCreate new topicを開く。
Display nameはメール送信時の送信者名になる。
名前を入力してCreate Topic
作成したTopicのARNのリンクからTopic詳細画面へ。
こんな感じで入力する。Endpointはメール受信可能なメールアドレス。Create subscription する。
これでこのSNSトピックにパブリッシュしたらgmailにメールが飛ぶようになっているはず。
2. ドメインをSESに登録する、同時にRoute53にMXレコードとTXTレコードを作成する
SESコンソール左側のDomainsを選択。
Verify a New Domainから、あらかじめRoute53で取得済みのドメイン名を入力。
このドメイン所有者の確認としてDNSレコードを登録するように言われる。今回はホストゾーンもRoute53に作成しているためそのままUse Route53へ。
すべてチェックを付けてCreate Record Sets。
登録したドメインのステータスはpending verificationになっている。
1分くらいたつとverifiedになる。
3. SESの受信ルールを作成し、1.で作成したSNSトピックを指定する
SESのコンソールからRule Sets → View Active Rule Set → Create Ruleを開く。
ここにはCognitoの送信元にしたいメールアドレスを入力。Add Recipientで追加。
4. Cognitoで送信元にするメールアドレスをSESに登録する
Verify a New Email Addressから送信元メールアドレスにしたいアドレスを入力。
5. 1.で登録したメールアドレスに確認メールが届くので承認リンクをブラウザで開く
メールアドレスを登録すると、SNSサブスクリプションに登録したメールアドレスあてに確認メールが届くので、その中から下の方にあるhttps://email-verification.us-east-1.amazonaws.com
で始まるURLを探し出してブラウザで開く。
これでCognitoの送信元メールアドレスに指定する準備ができました。
Cognitoの設定画面で選択できる!
以上です。