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
我正在尝试向 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