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

Sta*_*lau 6 amazon-web-services amazon-cognito aws-sdk aws-lambda

我正在尝试在DynamoDB中插入记录,调用Cognito用户池的"预注册"触发器.

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

用例1

Lambda身体:

console.log('Received event:', JSON.stringify(event, null, 2));
Run Code Online (Sandbox Code Playgroud)

结果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON
Run Code Online (Sandbox Code Playgroud)

用例2

Lambda身体:

callback("null", "success");
Run Code Online (Sandbox Code Playgroud)

结果:

InvalidLambdaResponseException: Invalid lambda function output : Invalid JSON
Run Code Online (Sandbox Code Playgroud)

用例3

Lambda身体:

new AWS.DynamoDB.DocumentClient().put(params, callback);
Run Code Online (Sandbox Code Playgroud)

结果:

InvalidLambdaResponseException: Invalid cognito sign in version. Version should be 1
Run Code Online (Sandbox Code Playgroud)

那么,任何想法可能是错的?

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

PS我会在需要时提供更多细节.提前致谢.

小智 9

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

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

这里还有一些解释

  • 非常感谢!奇怪的是,除了博客中提到的那个之外,没有人愿意在文档中的任何地方提及这一点。 (2认同)

Che*_*hta 8

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

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

请查看开发者指南中的示例,了解有关此内容的更多详细信息.

  • 有人知道如何在 python lambda 中解决这个问题吗?没有 `contex.done()` 方法,也没有 `callback` 作为 `nodejs` lambdas 中的第三个参数。 (2认同)