Lambda AWS PreSignUp 响应的正确格式是啥

Posted

技术标签:

【中文标题】Lambda AWS PreSignUp 响应的正确格式是啥【英文标题】:Which is the correct format for Lambda AWS PreSignUp ResponseLambda AWS PreSignUp 响应的正确格式是什么 【发布时间】:2021-11-28 00:52:15 【问题描述】:

我正在开发一个 VUE+Amplify 项目,它几乎完成了,但是 cognito 不提供邮件重复检查,所以我必须手动进行,因为我们知道 AWS 有一些触发器,我正在使用 PreSignUp 调用Lambda函数,我的代码是:

var AWS = require("aws-sdk");
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();


exports.handler =  function(event, context, callback) 
  var params = 
    UserPoolId: "us-east-1_xxxXXXxXX",
    AttributesToGet: ["email"]
  ;

  cognitoidentityserviceprovider.listUsers(params, (err, data) => 
    if (err) 
      console.log(err, err.stack);
      callback(err)        // here is the error return
     else 
      data.Users.forEach(function(usuario) 
        if(usuario.Attributes[0].Value == event.request.userAttributes.email)
          return ;
        
      );
      callback(event);
    
  );

但我不明白我做错了什么,lambda执行返回......

Object  code: "UserLambdaValidationException", name: "UserLambdaValidationException", message: "PreSignUp failed with error [object Object]." 

有什么想法吗?

【问题讨论】:

【参考方案1】:

需要返回事件对象

https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html

【讨论】:

谢谢,这正是我一直在做的,我刚刚添加了callback (full, event);,但它不起作用,但是有没有办法取消注册事件并发送自定义消息?如果我发送一个空对象callback (full, ); Cognito 返回 code: "InvalidLambdaResponseException", name: "InvalidLambdaResponseException", message: "Invalid version. Version should be 1" App.vue:204 你不能只返回事件吗?

以上是关于Lambda AWS PreSignUp 响应的正确格式是啥的主要内容,如果未能解决你的问题,请参考以下文章

由于错误 AccessDeniedException(Lambda 别名作为 Cognito 触发器),AWS Cognito 用户池引发 PreSignUp 调用失败

python 适当的AWS lambda函数,它形成lambda代理的响应

AWS lambda 函数-“发生错误:收到来自 Lambda 的错误响应:已处理”

AWS Java Lambda 压缩 JSON 响应失败:“由于配置错误,执行失败:格式错误的 Lambda 代理响应”

AWS Lambda,API Gateway 返回 Malformed Lambda 代理响应,502 错误

AWS Lambda 和 API Gateway 响应集成问题