Cognito 用户池触发器上的 AWS Lambda 错误

AWS Lambda error on Cognito User Pool trigger

我正在尝试向 DynamoDB 中插入一条记录,调用 "Pre sign-up" Cognito 用户池的触发器。

Lambda 函数对于测试目的来说非常简单,但客户端应用程序在 AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool.signUp 调用

时总是会出错

用例 1

Lambda 主体:

console.log('Received event:', JSON.stringify(event, null, 2));

结果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON

用例 2

Lambda 主体:

callback("null", "success");

结果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON

用例 3

Lambda 主体:

new AWS.DynamoDB.DocumentClient().put(params, callback);

结果:

InvalidLambdaResponseException: Invalid cognito sign in version. Version should be 1

那么,有什么想法可能是错误的吗?

最近的错误可能与 Cognito 用户池的 Beta 状态有关吗?

P.S。如果需要,我会提供更多详细信息。提前致谢。

您在 node.js 中执行此操作,错误表明您没有返回服务预期的事件源。

您应该在 lambda 函数完成执行后调用 context.done()。此外,在 Cognito 用户池服务生成的任何触发源中,您只能编辑源的 "response" 部分。例如,PreSignUp 触发源中的 "autoConfirmUser" 标志。

查看我们 developer guide 中的示例以了解更多详细信息。

尝试返回 callback("null", event);

这应该可以解决您的问题。

@user3479125 要在 python 中做同样的事情,只需 return 一个事件,或者在数据集中进行修改。

此代码应该 运行 在移动设备和 Cognito 之间,因此它可以修改事件并且它应该 return 它返回,这样同步事件就会成功完成。

更多解释here