如何在Node.js Lambda中使用AWS User Pool功能?

时间:2016-07-31 12:07:58

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

我正在尝试使用用户池注册用户,并使用并调整了我的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也允许我访问它... 有什么想法吗?

2 个答案:

答案 0 :(得分:3)

所以,我已经弄明白了。首先,是的,你可以使用标准的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);
  }
});

答案 1 :(得分:0)

您的代码中似乎有语法错误。尝试更改此内容:

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

对此:

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