0

我在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组中。

它显示以下错误:

在此处输入图像描述

我犯了什么错误?

4

1 回答 1

4

后确认必须返回event, always

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

所以,发生的事情是您的代码捕获了其中一个错误并且没有返回事件。

于 2020-11-18T23:53:40.620 回答