LoginSignup
5
3

More than 5 years have passed since last update.

CognitoでAdminCreateUser時の招待メッセージをカスタマイズする

Last updated at Posted at 2017-08-06

概要

CognitoではLabmdaトリガーを使って様々な処理を行うことが出来ます。
そのうちの一つとして送信するメッセージのカスタマイズがあるのですが、AdminCreateUserがトリガーイベントの場合のドキュメントがなかったのでメモしておきます。
AWSのドキュメントが更新されたら不要になります。

参考

詳細

AdminCreateUserは管理者がユーザを作成するAPIです。
管理者がユーザを作成すると、一時パスワードが作成されてユーザにメールが届きます。
ユーザがログイン後にパスワードを変更するとCONFIRMED状態になります。

先に結論として、うまく動作したLambdaのソースコードを載せておきます。

def lambda_handler(event, context):
    if event["triggerSource"] == "CustomMessage_AdminCreateUser":
        event["response"] = {
            "emailSubject": "Custom Subject",
            "emailMessage": "Your username is " + event["request"]["usernameParameter"] + "<br>Your temporary password is " + event["request"]["codeParameter"]
        }


    return event

カスタムメッセージのレスポンスは以下のようにドキュメントに記載されています。

"response": {
    "smsMessage": "string",
    "emailMessage": "string",
    "emailSubject": "string";
}

SMSのメッセージとメールの件名・本文が変更可能なようです。
emailMessageの説明は以下のようになっています。

emailMessage
ユーザーに送信されるカスタム E メールメッセージ。リクエストで受信される codeParameter 値を含める必要があります。

なるほど codeParameter を入れれば良いのか!ということでドキュメントのサンプルコードを参考に以下のようなコードを書きます。

event["response"]["emailSubject"] = "Welcome to the service"
event["response"]["emailMessage"] = "Your confirmation code is " + event["request"]["codeParameter"]

しかし、件名は変わるものの本文は変わりません。

ドキュメントどおりにやっているのに動かない...ということで他の人がどうやっているのか調べていったところ、レスポンスに usernameParameter を含めていることが分かりました。
これはリクエストに含まれており、 codeParameter のようなものです。
そこで usernameParameter を入れたところあっさり成功しました。

まとめ

usernameParameter についてAWSのドキュメントを探しても全く見つかりませんでしたが、AdminCreateUser時の招待メッセージをカスタマイズしたい場合は必要なようでした。

5
3
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
5
3