AWS Cognito トリガーを使ってサインアップ・サインインのログを取る


目的

Cognitoで認証システムを構築したをWebサイトに対して、サインアップやサインインがどのくらい行われたのかログを取りたかった。

トリガー

上記のようにlambda関数を指定する。すると以下のようなログがCloudWatch Logsに出力される。

サインアップ前・・・サインアップ時にユーザーが送信する情報が含まれる

{
    'version': '1',
    'region': 'ap-northeast-1',
    'userPoolId': 'ap-northeast-1_XXXXXXXXX',
    'userName': 'test-user-29',
    'callerContext': {
        'awsSdkVersion': 'aws-sdk-js-2.6.4',
        'clientId': 'xxxxxxxxxxxxxxxxxxxxxxxxx'
    },
    'triggerSource': 'PreSignUp_SignUp',
    'request': {
        'userAttributes': {
            'email': '[email protected]'
        },
        'validationData': None
    },
    'response': {
        'autoConfirmUser': False,
        'autoVerifyEmail': False,
        'autoVerifyPhone': False
    }
}

認証前・・・サインイン時にユーザーが送信する情報が含まれる

{
    'version': '1',
    'region': 'ap-northeast-1',
    'userPoolId': 'ap-northeast-1_XXXXXXXXX',
    'userName': 'test-user-13',
    'callerContext': {
        'awsSdkVersion': 'aws-sdk-js-2.6.4',
        'clientId': 'xxxxxxxxxxxxxxxxxxxxxxxxx'
    },
    'triggerSource': 'PreAuthentication_Authentication',
    'request': {
        'userAttributes': {
            'sub': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
            'email_verified': 'true',
            'cognito:user_status': 'CONFIRMED',
            'email': '[email protected]'
        },
        'validationData': {},
        'userNotFound': False
    },
    'response': {}
}

Lambda関数

画像にあるlambda関数は以下の通り。

def lambda_handler(event, context):
    print(event)
    return event

参考記事