在 Cognito 中发布确认后将用户添加到组时出错

Jun*_*rat 0 amazon-web-services python-3.x amazon-cognito aws-lambda amazon-cognito-triggers

我已经在 中创建了一个用户池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
Run Code Online (Sandbox Code Playgroud)

部署代码后,我将其连接到Post confirmation触发器。现在,当用户尝试注册时,系统会发送一个代码。但是,当我粘贴代码来确认用户时,会发生两件事:

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

它显示以下错误:

在此输入图像描述

我犯了什么错误?

das*_*mug 5

确认后必须返回event,始终

在您的代码中,您捕获错误,然后返回event.

因此,发生的情况是您的代码捕获了这些错误之一并且没有返回事件。