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でユーザ情報を取得する方法について説明しました。この情報が皆さんの開発に役立つことを願っています。