AWS LambdaとCognitoを用いてPythonでユーザ情報を取得する方法について説明します。この記事では、Cognitoのユーザープールからユーザー情報を取得し、その情報を基にメール送信の判断を行う実装について考察します。

Cognitoユーザープール情報の取得

まずは、Cognitoのユーザープールからユーザー情報を取得する方法について見ていきましょう。以下のコードは、PythonでAWS SDK (boto3) を用いてCognitoのユーザープールからユーザー情報を取得する例です。

import boto3

cognito_client = boto3.client('cognito-idp')

def user_from_cognito(email):
    users = cognito_client.list_users(
        UserPoolId='[プールID]',
        Filter=f'email = "{email}"',
    ).get('Users')

    if users and len(users) > 0:
        return users[0]

    return None

user = user_from_cognito(event['email'])

このコードでは、list_usersメソッドを用いて指定したメールアドレスを持つユーザーの情報を取得しています。

注意点

この実装には注意が必要です。Lambdaの実行ロールには、Cognitoのユーザープールに対するListUsers権限が必要です。この権限がない場合、AccessDeniedExceptionエラーが発生します。

また、取得したユーザー情報は次のような形式で得られます。

{
    'Username': 'xxxxxxxxxxxx',
    'Attributes': [
        {'Name': 'sub', 'Value': ''},
        {'Name': 'email_verified', 'Value': 'true'},
        {'Name': 'email', 'Value': '[email protected]'}
    ],
    'UserCreateDate': datetime.datetime(2000, 1, 1, 1, 1, 1, 1, tzinfo=tzlocal()),
    'UserLastModifiedDate': datetime.datetime(2000, 1, 1, 1, 1, 1, 1, tzinfo=tzlocal()),
    'Enabled': True,
    'UserStatus': 'CONFIRMED'
}

以上、AWS LambdaとCognitoを用いてPythonでユーザ情報を取得する方法について説明しました。この情報が皆さんの開発に役立つことを願っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です