2017-03-09 88 views
4

我试图在AWS中实现一个自动确认机制,由于Lambda响应,我得到一个错误。我无法在文档中找到正确的返回类型。无法识别的Lambda输出Cognito

LAMBDA:

exports.handler = (event, context, callback) => { 
    event.response.autoConfirmUser = true; 
    context.succeed(event.response); 
}; 

例外:

无法辨认的拉姆达输出(服务: AWSCognitoIdentityProviderService;状态码:400;错误代码: InvalidLambdaResponseException;请求ID: 5c7a2436-0515-11e7 -b971-41a89adf53ea)

回答

6

如t他在Cognito开发人员指南中使用PreSignUp trigger example,在触发器结束时应使用context.done(null, event);context.succeed(event);

Cognito期望完整的事件源返回来自您的lambda触发器作为不同Cognit用户池流程的一部分被调用的响应。

+0

谢谢。我不知道我是如何错过文档中的这一行的! – KnowHoper

+0

@Chetan在Java中等价于什么? –

+0

@Chetan,Java中有这样的例子吗? – rd22

0

很简单。

  1. 与此代码创建lambda函数:例如:http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html#aws-lambda-triggers-pre-registration-example

    exports.handler =函数(事件,上下文){// 此lambda函数返回一个标志,以指示如果用户应该是自动-confirmed。

    //执行任何必要的验证。

    //将所有用户池的最小用户名长度限制为5。 (event.userName.length < 5){var error = new Error('failed!'); context.done(error,event); }

    //访问你的资源包含谁被邀请注册

    //从请求比较电子邮件ID列表到允许列表 如果用户的电子邮件列表(event.userPoolId ===“yourSpecialUserPool”){if(event.request.userAttributes.email in listOfEmailsInvited){ event.response.autoConfirmUser = true; } } //将结果返回给Cognito context.done(null,event); };

注:作用:LAMBDA基本执行

  • 创建从cognito控制台触发器和选择功能的λ。
  • 测试 3.使用API​​和DONE创建用户。