在 Cognito 中 post 确认后将用户添加到群组时出错
Error adding a user to a group after post confirmation in Cognito
我在 Cognito
中创建了一个用户池。
我想做的是,当新用户尝试使用 UI 注册时,他会得到一个验证码。用户输入代码后,必须触发 Post confirmation
lambda,并且必须将这个新创建的用户直接添加到名为 users
.
的组中
我找到 admin_add_user_to_group 客户端并编写了以下代码并将其部署为 lambda:
import boto3
import hmac
import hashlib
import base64
USER_POOL_ID = ''
CLIENT_ID = ''
CLIENT_SECRET = ''
def lambda_handler(event, context):
client = boto3.client('cognito-idp')
try:
username = event['username']
response = client.admin_add_user_to_group(
UserPoolId=USER_POOL_ID,
Username=username,
GroupName='users'
)
except client.exceptions.InvalidParameterException:
return {"error": True, "success": False, "message": "Username doesnt exists"}
except client.exceptions.ResourceNotFoundException:
return {"error": True, "success": False, "message": "Invalid Verification code"}
except client.exceptions.NotAuthorizedException:
return {"error": True, "success": False, "message": "User is already confirmed"}
except Exception as e:
return {"error": True, "success": False, "message": f"Unknown error {e.__str__()} "}
return event
部署代码后,我将其连接到 Post confirmation
触发器。现在,当用户尝试注册时,会发送一个代码。但是,当我粘贴代码以确认用户时,发生了两件事:
- 用户得到确认但是,
- 用户未添加到
users
组。
显示以下错误:
我犯了什么错误?
post-确认必须returnevent
,总是。
在您的代码中,您正在捕获错误,然后 不是 returning event
。
所以,发生的事情是您的代码捕获了这些错误之一,但没有 return 事件。
我在 Cognito
中创建了一个用户池。
我想做的是,当新用户尝试使用 UI 注册时,他会得到一个验证码。用户输入代码后,必须触发 Post confirmation
lambda,并且必须将这个新创建的用户直接添加到名为 users
.
我找到 admin_add_user_to_group 客户端并编写了以下代码并将其部署为 lambda:
import boto3
import hmac
import hashlib
import base64
USER_POOL_ID = ''
CLIENT_ID = ''
CLIENT_SECRET = ''
def lambda_handler(event, context):
client = boto3.client('cognito-idp')
try:
username = event['username']
response = client.admin_add_user_to_group(
UserPoolId=USER_POOL_ID,
Username=username,
GroupName='users'
)
except client.exceptions.InvalidParameterException:
return {"error": True, "success": False, "message": "Username doesnt exists"}
except client.exceptions.ResourceNotFoundException:
return {"error": True, "success": False, "message": "Invalid Verification code"}
except client.exceptions.NotAuthorizedException:
return {"error": True, "success": False, "message": "User is already confirmed"}
except Exception as e:
return {"error": True, "success": False, "message": f"Unknown error {e.__str__()} "}
return event
部署代码后,我将其连接到 Post confirmation
触发器。现在,当用户尝试注册时,会发送一个代码。但是,当我粘贴代码以确认用户时,发生了两件事:
- 用户得到确认但是,
- 用户未添加到
users
组。
显示以下错误:
我犯了什么错误?
post-确认必须returnevent
,总是。
在您的代码中,您正在捕获错误,然后 不是 returning event
。
所以,发生的事情是您的代码捕获了这些错误之一,但没有 return 事件。