

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 認証後の Lambda トリガー
<a name="user-pool-lambda-post-authentication"></a>

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

リクエスト本文を Amazon Cognito に返さない認証後 Lambda は、認証の完了に失敗する可能性があります。詳細については、「[Lambda トリガーについて知っておくべきこと](cognito-user-pools-working-with-lambda-triggers.md#important-lambda-considerations)」を参照してください。

**Topics**
+ [認証フローの概要](#user-pool-lambda-post-authentication-1)
+ [認証後の Lambda トリガーのパラメータ](#cognito-user-pools-lambda-trigger-syntax-post-auth)
+ [認証後の例](#aws-lambda-triggers-post-authentication-example)

## 認証フローの概要
<a name="user-pool-lambda-post-authentication-1"></a>

![\[認証後の Lambda トリガー - クライアントフロー\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/images/lambda-post-authentication-1.png)


詳細については、「[認証セッションの例](authentication.md#amazon-cognito-user-pools-authentication-flow)」を参照してください。

## 認証後の Lambda トリガーのパラメータ
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth"></a>

Amazon Cognito がこの Lambda 関数に渡すリクエストは、以下のパラメータと Amazon Cognito がすべてのリクエストに追加する[共通パラメータ](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html#cognito-user-pools-lambda-trigger-syntax-shared)を組み合わせたものです。

------
#### [ JSON ]

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

------

### 認証後のリクエストパラメータ
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth-request"></a>

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

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

**clientMetadata**  
認証後のトリガーに指定する Lambda 関数へのカスタム入力として提供できる 1 つ、または複数のキー/値ペア。このデータを Lambda 関数に渡すには、[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) および [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) API アクションで ClientMetadata パラメータを使用します。Amazon Cognito は、認証後関数に渡すリクエストの [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) および [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) API オペレーションの ClientMetadata パラメータからのデータを含めません。

### 認証後のレスポンスパラメータ
<a name="cognito-user-pools-lambda-trigger-syntax-post-auth-response"></a>

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

## 認証後の例
<a name="aws-lambda-triggers-post-authentication-example"></a>

この認証後の 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": {}
}
```

------