【问题标题】:AWS Lambda error on Cognito User Pool triggerCognito 用户池触发器上的 AWS Lambda 错误
【发布时间】:2016-09-22 06:35:19
【问题描述】:

我正在尝试将一条记录插入到 DynamoDB 中,调用 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 状态有关吗?

附:如果需要,我会提供更多细节。提前致谢。

【问题讨论】:

  • 您需要在回调中返回相同的event,以及@user1268855 callback(null, event); 在我的情况下我不返回null 作为字符串。

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


【解决方案1】:

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

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

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

【讨论】:

  • 是的,完全正确。我记得我在某个地方读到了我需要处理 context 的内容,但是在阅读了数千页不同的文档之后,头脑中已经有些混乱了 :) 非常感谢您的帮助!
  • @Stanislau - 在用户池中的确认后触发器上尝试将用户数据插入 dynamodb 时,我遇到了确切的问题。你能告诉我你是怎么解决这个问题的吗?
  • @Asa - 因此,正如 Chetan 在他的回复中提到的,context.done() 完成了这项工作。在您的 lambda 函数中,您只需要在某个时间点调用 context.done(null, event)context.done(err)(例如 exports.handler = (event, context) => {"your code here"; context.done(null, event)}
  • @Stanislau - 非常感谢。我会试试这个,让你知道进展。由于我已经开始从事其他项目,因此我需要几天的时间来测试它。
  • 有人知道如何在 python lambda 中解决这个问题吗?没有contex.done() 方法,也没有callback 作为nodejs lambdas 中的第三个参数。
【解决方案2】:

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

这段代码应该在移动设备和cognito之间运行,所以它可以修改事件并返回它,所以同步事件会成功完成。

更多解释here

【讨论】:

  • 谢谢,米哈伊尔。巨大的帮助
  • 非常感谢!奇怪的是,除了博客中提到的之外,没有人愿意在文档中的任何地方提及这一点。
  • 谢谢@Mykhail Martsyniuk!
【解决方案3】:

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

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

【讨论】:

  • null 不应该用引号引起来(否则是字符串而不是 null),应该是 callback(null, event)
猜你喜欢
  • 2021-05-20
  • 2019-05-15
  • 2021-11-05
  • 2022-01-18
  • 2023-03-29
  • 2016-11-12
  • 2020-09-01
  • 2018-04-02
  • 2023-01-01
相关资源
最近更新 更多