【问题标题】:How do you use AWS User Pool functions in a Node.js Lambda?如何在 Node.js Lambda 中使用 AWS 用户池函数?
【发布时间】:2016-08-08 16:53:45
【问题描述】:

我正在尝试使用用户池注册用户,并在我的 lambda 中使用并修改了示例 here 中的代码。

我以正常方式引用 AWS:

var AWS = require('aws-sdk');

并尝试引用现有用户池:

AWS.config.region = 'eu-east-1';

var poolData = { 
    UserPoolId : 'eu-west-1_xxxxxxx',
    ClientId : 'xxxxxxx'
};

var userPool = AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData);

但我收到以下错误:

TypeError:AWS.CognitoIdentityServiceProvider.CognitoUserPool 不是函数

我是否使用了错误的 SDK? the setup page 解释了 aws-cognito-sdk.min.js 如何是完整 SDK 的变体,但仅引用 Cognito 身份服务,因此我假设完整的 SDK 也将允许我访问它... 有什么想法吗?

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda


    【解决方案1】:

    所以,我想通了。首先,是的,您可以使用标准的 aws-sdk。 代码如下:

    var params = {
      ClientId: 'xxxxxxxxxxxxxx',
      Password: 'password',
      Username: 'Ross',
      UserAttributes: [
        {
          Name: 'email',
          Value: 'email@email.com'
        }
      ]
    };
    var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
    cognitoidentityserviceprovider.signUp(params, function(err, data) {
      if (err) {
        console.log(err, err.stack);
        context.fail(err);
      } else {
        console.log(data);
        context.succeed(data);
      }
    });
    

    【讨论】:

    • 完美的一次回答。我花了 3 到 4 个小时寻找这样一个简单的例子,直到找到这个。
    • 您好,我正在尝试像您一样使用纯 SDK for JS 执行 Cognito 请求,但我看到的示例使用的是 cognito 身份 SDK。你能告诉我你是否找到任何材料,以及在哪里找到答案吗?谢谢。
    【解决方案2】:

    您的代码中似乎存在语法错误。尝试改变这个:

    var userPool = newAWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
    

    对此:

    var userPool = new AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
    

    【讨论】:

    • 感谢您的发现 - 这可能是在转移到 StackOverflow 时发生的!
    猜你喜欢
    • 2021-09-19
    • 2023-03-29
    • 1970-01-01
    • 2017-02-17
    • 2021-09-23
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多