実装方法
Cognito User Pool を使用するためのユーティリティクラスの例を示します。このクラスは、AWS SDK の boto3 を使用して Cognito User Pool とのインタラクションを簡素化します。
import boto3
class CognitoUtils:
def __init__(self, user_pool_id, client_id):
self.user_pool_id = user_pool_id
self.client_id = client_id
self.cognito_client = boto3.client('cognito-idp')
def sign_up_user(self, username, password, attributes=None):
user_attributes = [
{'Name': attr_name, 'Value': attr_value}
for attr_name, attr_value in attributes.items()
] if attributes else []
response = self.cognito_client.sign_up(
ClientId=self.client_id,
Username=username,
Password=password,
UserAttributes=user_attributes
)
return response
def confirm_sign_up(self, username, confirmation_code):
response = self.cognito_client.confirm_sign_up(
ClientId=self.client_id,
Username=username,
ConfirmationCode=confirmation_code
)
return response
def initiate_auth(self, username, password):
response = self.cognito_client.initiate_auth(
ClientId=self.client_id,
AuthFlow='USER_PASSWORD_AUTH',
AuthParameters={
'USERNAME': username,
'PASSWORD': password
}
)
return response
上記の例では、CognitoUtils
というクラスが定義されています。このクラスは Cognito User Pool との操作をラップしています。
以下のメソッドが提供されています:
sign_up_user
: ユーザーのサインアップを行います。ユーザー名、パスワード、およびオプションの属性情報を受け取ります。confirm_sign_up
: ユーザーのサインアップ確認を行います。ユーザー名と確認コードを受け取ります。initiate_auth
: ユーザーの認証を開始します。ユーザー名とパスワードを受け取ります。
これらのメソッドを使用するには、CognitoUtils クラスのインスタンスを作成し、必要なメソッドを呼び出します。
例えば、以下のような使い方ができます:
def lambda_handler(event, context):
user_pool_id = 'your-user-pool-id'
client_id = 'your-client-id'
cognito_utils = CognitoUtils(user_pool_id, client_id)
# ユーザーのサインアップ
response = cognito_utils.sign_up_user(
username='user@example.com',
password='password',
attributes={
'given_name': 'John',
'family_name': 'Doe'
}
)
# サインアップ確認
confirmation_code = '123456'
confirm_response = cognito_utils.confirm_sign_up(
username='user@example.com',
confirmation_code=confirmation_code
)
# ユーザーの認証
auth_response = cognito_utils.initiate
参考
CognitoIdentityProvider - Boto3 1.35.44 documentation
boto3.amazonaws.com
CognitoIdentity - Boto3 1.35.44 documentation
boto3.amazonaws.com