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

时间:2016-05-24 21:03:58

标签: amazon-web-services aws-sdk aws-lambda amazon-cognito

我试图将一条记录插入DynamoDB调用"预注册" Cognito用户池的触发器。

对于测试目的,Lambda函数非常简单,但AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool.signUp调用中的客户端应用程序始终存在错误

用例1

Lambda body:

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

结果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON

用例2

Lambda body:

callback("null", "success");

结果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON

用例3

Lambda body:

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

结果:

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

那么,任何想法都可能出错?

最新错误是否可能与Cognito用户池的测试版状态有关?

P.S。如果需要,我会提供更多细节。提前谢谢。

3 个答案:

答案 0 :(得分:7)

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

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

请查看我们developer guide中的示例,了解有关详情。

答案 1 :(得分:3)

@ user3479125 要在python中执行相同操作,只需按原样返回事件,或者在数据集中进行修改。

此代码应该在移动设备和cognito之间运行,因此它可以修改事件并将其返回,因此Sync事件将成功完成。

更多解释here

答案 2 :(得分:0)

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

这可以解决您的问题。