在 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 触发器。现在,当用户尝试注册时,会发送一个代码。但是,当我粘贴代码以确认用户时,发生了两件事:

  1. 用户得到确认但是,
  2. 用户未添加到 users 组。

显示以下错误:

我犯了什么错误?

post-确认必须returnevent总是

在您的代码中,您正在捕获错误,然后 不是 returning event

所以,发生的事情是您的代码捕获了这些错误之一,但没有 return 事件。