我试图将一条记录插入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。如果需要,我会提供更多细节。提前谢谢。
答案 0 :(得分:7)
您在node.js中执行此操作,错误表明您未返回服务预期事件源。
当lambda函数完成执行时,您应该调用context.done()。此外,在Cognito用户池服务生成的任何触发源中,您只能编辑源的“响应”部分。例如,PreSignUp触发源中的“autoConfirmUser”标志。
请查看我们developer guide中的示例,了解有关详情。
答案 1 :(得分:3)
@ user3479125 要在python中执行相同操作,只需按原样返回事件,或者在数据集中进行修改。
此代码应该在移动设备和cognito之间运行,因此它可以修改事件并将其返回,因此Sync事件将成功完成。
更多解释here
答案 2 :(得分:0)
尝试返回callback("null", event);
这可以解决您的问题。