我使用admin\u create\u用户触发预签名lambda:
self.cognito.admin_create_user(
UserPoolId=self.user_pool_id,
Username=user.username,
UserAttributes=[
{
'Name': 'name',
'Value': user.username
},
{
'Name': 'email',
'Value': user.username
},
],
MessageAction='SUPPRESS')
这将使用此处理程序触发lambda:
def pre_signup(event, context):
event['response']['autoConfirmUser'] = True
event['response']['autoVerifyEmail'] = True
print(f"EVENT: {event}")
return event
然后在Cloudwatch上,事件是(感知数据已被掩盖):
EVENT: {'version': '1', 'region': 'us-east-X', 'userPoolId': 'us-east-X_XXXXXXXX', 'userName': 'XXXXXXXX-bd2d-4fec-b421-d2c4b89f3274', 'callerContext': {'awsSdkVersion': 'aws-sdk-unknown-unknown', 'clientId': 'CLIENT_ID_NOT_APPLICABLE'}, 'triggerSource': 'PreSignUp_AdminCreateUser', 'request': {'userAttributes': {'name': 'XXXXXXXXXX@XXXXXXXX.com', 'email': 'XXXXXXXXXX@XXXXXXXX.com'}, 'validationData': None}, 'response': {'autoConfirmUser': True, 'autoVerifyEmail': True, 'autoVerifyPhone': False}}
如您所见,autoVerifyEmail
选项设置为True,just as the docs state。问题是,这东西坏了,就是坏了
即使手动调用admin_update_user_attributes也不起作用
self.cognito.admin_update_user_attributes(
UserPoolId=self.user_pool_id,
Username=user.username,
UserAttributes=[
{
'Name': 'email_verified',
'Value': True
},
]
)
Even in the AWS forums there are no answers。那么,这东西是完全坏了还是我做错了什么?我甚至尝试将字符串设置为“true”,只是因为文档中有引号(“布尔”)。我不知道该怎么办了,用户不会被创建为具有已验证的电子邮件属性
对于那些将来会遇到这种情况的人,我已经用admin_update_user_attributes解决了它,值必须是字符串
事实证明,这是我的一个错误,我没有测试正确的端点,所以我无法在cloudwatch上看到这方面的变化。很难测试与AWS Cognito相关的任何内容,它不是一个非常用户友好的服务
相关问题 更多 >
编程相关推荐