AWS Cognito 目前还没有支持直接使用 SCIM API 进行 User Management 的功能,但可以通过使用 Lambda 自定义代码来实现。
下面是一个使用 Python 3 搭建的简单的 Lambda 函数作为示例,用于将接收到的 SCIM 消息通过 AWS Cognito API 完成用户管理操作:
import json
import boto3
def lambda_handler(event, context):
client = boto3.client('cognito-idp')
for resource in event['Resources']:
if resource['type'] == 'User':
if resource['operation'] == 'create':
response = client.admin_create_user(
UserPoolId='your-user-pool-id',
Username=resource['userName'],
UserAttributes=[
{
'Name': 'given_name',
'Value': resource['name']['givenName']
},
{
'Name': 'family_name',
'Value': resource['name']['familyName']
},
{
'Name': 'email',
'Value': resource['emails'][0]['value']
},
],
MessageAction='SUPPRESS',
)
elif resource['operation'] == 'update':
user = client.admin_get_user(
UserPoolId='your-user-pool-id',
Username=resource['userName']
)
response = client.admin_update_user_attributes(
UserPoolId='your-user-pool-id',
Username=resource['userName'],
UserAttributes=[
{
'Name': 'given_name',
'Value': resource['name']['givenName']
},
{
'Name': 'family_name',
'Value': resource['name']['familyName']
},
{
'Name': 'email',
'Value': resource['emails'][0]['value']
},
]
)
elif resource['operation'] == 'delete':
response = client.admin_delete_user(
UserPoolId='your-user-pool-id',
Username=resource['userName']
)
return {
'statusCode': 200,
'body': json.dumps(response)
}
该 Lambda 函数可被部
上一篇:AWSIAM受信实体