你如何从 NodeJS Lambda 调用 adminInitiateAuth?

How do you call adminInitiateAuth from NodeJS 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 is not a function

知道我在这里做错了什么吗?以相同方式调用其他函数(如 signUp)也能正常工作!

我也一直在研究这个问题,似乎为 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.

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

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