認証後の Lambda トリガー - Amazon Cognito

認証後の Lambda トリガー

認証後トリガーは、ユーザーの認証フローを変更しません。Amazon Cognito は、認証が完了した後で、ユーザーがトークンを受け取る前に、この Lambda を呼び出します。次のサインインに反映されるログ記録やユーザープロファイルの調整など、認証イベントの後処理をカスタムで追加する場合は、認証後トリガーを追加します。

リクエスト本文を Amazon Cognito に返さない認証後 Lambda は、認証の完了に失敗する可能性があります。詳細については、「重要な考慮事項」を参照してください。

認証フローの概要

認証後の Lambda トリガー - クライアントフロー

詳細については、「ユーザープール認証フロー」を参照してください。

認証後の Lambda トリガーのパラメータ

Amazon Cognito がこの Lambda 関数に渡すリクエストは、以下のパラメータと Amazon Cognito がすべてのリクエストに追加する共通パラメータを組み合わせたものです。

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "newDeviceUsed": boolean, "clientMetadata": { "string": "string", . . . } }, "response": {} }

認証後のリクエストパラメータ

newDeviceUsed

このフラグは、ユーザーが新しいデバイスにサインインしているかどうかを示します。Amazon Cognito は、ユーザープールの記憶済みデバイス値が Always または User Opt-In である場合にのみ、このフラグを設定します。

userAttributes

ユーザー属性を表す 1 つ以上の名前 - 値ペア。

clientMetadata

認証後のトリガーに指定する Lambda 関数へのカスタム入力として提供できる 1 つ、または複数のキー/値ペア。このデータを Lambda 関数に渡すには、AdminRespondToAuthChallenge および RespondToAuthChallenge API アクションで ClientMetadata パラメータを使用します。Amazon Cognito は、認証後関数に渡すリクエストの AdminInitiateAuth および InitiateAuth API オペレーションの ClientMetadata パラメータからのデータを含めません。

認証後のレスポンスパラメータ

Amazon Cognito は、レスポンスに追加の返品情報を期待しません。関数では、API オペレーションを使用してリソースをクエリして変更したり、イベントメタデータを外部システムに記録することができます。

認証チュートリアル

Amazon Cognito がユーザーにサインインした直後、認証後の Lambda 関数をアクティブ化します。JavaScript、Android、iOS に関する以下のサインインチュートリアルを参照してください。

プラットフォーム チュートリアル
JavaScript ID SDK JavaScript でのユーザーのサインイン
Android ID SDK Android でのユーザーのサインイン
iOS ID SDK iOS でのユーザーのサインイン

認証後の例

この認証後の Lambda 関数のサンプルは、正常に行われたサインインからのデータをCloudWatch Logs に送信します。

Node.js
const handler = async (event) => { // Send post authentication data to Amazon CloudWatch logs console.log("Authentication successful"); console.log("Trigger function =", event.triggerSource); console.log("User pool = ", event.userPoolId); console.log("App client ID = ", event.callerContext.clientId); console.log("User ID = ", event.userName); return event; }; export { handler };
Python
import os def lambda_handler(event, context): # Send post authentication data to Cloudwatch logs print ("Authentication successful") print ("Trigger function =", event['triggerSource']) print ("User pool = ", event['userPoolId']) print ("App client ID = ", event['callerContext']['clientId']) print ("User ID = ", event['userName']) # Return to Amazon Cognito return event

Amazon Cognito は Lambda 関数にイベント情報を渡します。関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。

JSON
{ "triggerSource": "testTrigger", "userPoolId": "testPool", "userName": "testName", "callerContext": { "clientId": "12345" }, "response": {} }