你如何从NodeJS Lambda调用adminInitiateAuth?

时间:2016-07-31 17:38:21

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

我正在尝试调用adminInitiateAuth,如下所示:

var params = {
        AuthFlow: 'ADMIN_NO_SRP_AUTH',
        ClientId: 'xxxxxxxxx',
        UserPoolId: 'eu-west-1_xxxxxx',
        AuthParameters: {
            email: email,
            password: password
        }
    };

    var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
    cognitoidentityserviceprovider.adminInitiateAuth(params, function(err, data) {
      if (err) {
            console.log(err, err.stack);
        } else {
            console.log(data);
        }
    });

但是我收到以下错误:

  

TypeError:cognitoidentityserviceprovider.adminInitiateAuth不是函数

我在这里做错了什么想法?其他功能,如signUp以相同的方式调用时工作!

2 个答案:

答案 0 :(得分:5)

我也一直在研究这个问题,看来为Lambda函数提供的NodeJS AWS sdk版本是2.4.9,您可以通过运行来检查:

console.log('SDK Version is ' + AWS.VERSION)

adminInitiateAuth发布的版本是2.4.11版。我认为亚马逊很快就会更新他们的lambda机器,但在此期间你可以尝试通过手动添加新的sdk

npm install aws-sdk

然后zipping up your lambda file with the node_modules folder

答案 1 :(得分:0)

如上所述,Lambda容器中的当前SDK版本早于此API。解决方案是将您需要的SDK版本捆绑到Lambda zip文件中。

对于可靠性很重要的应用程序,您应该在任何情况下明确地捆绑所有依赖项。这会将您的函数与Lambda更新容器中的API时引入的行为更改或错误隔离开来。