こんにちは!
ポーラ・オルビスホールディングスのITプロダクト開発チームでスクラムマスターをしている川田です。
今回は、最近チームで実施したAmazon Cognitoの招待メッセージをカスタマイズする方法について、アウトプットも兼ねてご紹介しようと思います!
背景
以前の記事で、私たちの開発チームが利用している技術や開発環境についてご紹介しました。
その際には触れていませんでしたが、私たちが開発したシステムのユーザー認証にはAmazon Cognitoを利用しています。オルビスではMicrosoft Entra ID (Azure AD)によってアカウント管理を行っているので、Cognitoの外部IdPとしてEntra IDを指定することでSSOを行う構成となっています。
この対応によりオルビスで業務されているほとんどの方はSSOができる状態なのですが、一部の方は勤務体系等の都合によりEntra IDでの管理対象外となっている方がいます。そのような方も私たちのシステムを使用する場面があるため、Cognitoのユーザープールにユーザーを登録しています。
Cognitoでユーザー登録を行うと、登録したメールアドレス宛に招待メッセージと共に一時パスワード(または確認コード)が送られます。試しに自分を登録してみて、送られてきたメールを確認してみましょう!
とてもシンプルです・・・
ということで、この招待メッセージをカスタマイズしてユーザーフレンドリーな内容にしてみます。
マネジメントコンソールから変更してみる
まずはマネジメントコンソールから変更してみます。テンプレートの設定はユーザープール単位で行うため、Amazon Cognito → ユーザープールと辿ってから設定を行うユーザープールを選択します。
ユーザープールの概要の下に表示されているタブから、メッセージングを選択します。
メッセージテンプレートのメッセージタイプから招待メッセージをクリックし、表示されるウィンドウ内の編集ボタンをクリックします。
Eメールの件名とメッセージを変更しましょう。メッセージはHTMLメールで送信されるため、メッセージに改行を含める場合は改行タグ(<br>
)を使用する点に注意が必要です。
また{username}
と{####}
はテンプレートのプレースホルダーとして準備されており、それぞれユーザー名と一時パスワード(確認コード)に置き換えられてメールが送られます。
以上の変更を保存し、実際にメールを送ってみたところイイ感じになりました!
AWS CDKで変更してみる
続いて、マネジメントコンソールで実施した内容をAWS CDKでやってみます。AWS CDKを使うことで、インフラストラクチャをコードで定義してプロビジョニングを実現できます。
AWS CDKでは、UserPoolクラスに対してuserInvitationの各プロパティを設定することで実現可能です。
マネジメントコンソールと同様の内容を、以下のように設定します。
new cognito.UserPool(this, 'myuserpool', {
// ...
userInvitation: {
emailSubject: 'XXシステム仮パスワード発行のお知らせ',
emailBody: ' {username} 様<br>
<br>
管理者があなたをXXXに招待しました。<br>
下記のURLにアクセスして、ログインIDとパスワードでログインしてください。<br>
<br>
URL: <a href=" https://my-cool-system.co.jp/">https://my-cool-system.co.jp/</a><br>
ログインID: {username}<br>
初期パスワード: {####}<br>',
},
});
こちらの設定内容でプロビジョニングし、実際にメールを送ってみたところ、マネジメントコンソールで実施した内容と同じ結果が得られました!
おわりに
今回はCognitoから送信される招待メッセージをマネジメントコンソールで簡単にカスタマイズする方法と、それをAWS CDKから実現する方法についてご紹介しました。
AWS Lambdaを利用することでより詳細なカスタマイズを行うことも可能なので、機会があればトライしたいと思います!