AWS JS SDK V3(Lambda 模块) - 无法连接到实例元数据服务

Div*_*nka 4 amazon-web-services aws-lambda aws-sdk-js

我以前使用多合一的aws-sdknpm 模块 ( https://www.npmjs.com/package/aws-sdk ) 来调用 AWS Lambda 函数,为此,以下代码运行良好:

        //Some code to get "credentials"
        ...
        const AWS = require('aws-sdk');
        const lambda = new AWS.Lambda({
            accessKeyId: credentials.accessKeyId,
            secretAccessKey: credentials.secretAccessKey,
            region: Config.REGION
        });
        lambda.invoke(pullParams, (err, data) =>
            //I would do something with data
        );
        ...
Run Code Online (Sandbox Code Playgroud)

现在,从https://github.com/aws/aws-sdk-js-v3得到提示,我希望使用模块化@aws-sdk/client-lambda-node,因为它是我项目中唯一需要的类。因此,我已经更改了我的代码(如此处所建议的:https : //github.com/aws/aws-sdk-js-v3/tree/master/packages/client-lambda-node#usage),如下所示:

        import * as AWS from "@aws-sdk/client-lambda-node/Lambda";
        /*
          I believe there is a typo in the form of 
          "
           import * as AWS from "@aws-sdk/@aws-sdk/client-lambda-node/Lambda";
          "
          at the original page
        */
        ...
        //Some code to get the same "credentials" as above
        const lambda = new AWS.Lambda({
            accessKeyId: credentials.accessKeyId,
            secretAccessKey: credentials.secretAccessKey,
            region: Config.REGION
        });
        lambda.invokeAsync(pullParams, (err, data) =>
            //I want to do something with err / data
        );
        ...
Run Code Online (Sandbox Code Playgroud)

就其价值而言,这是在 ReactJS 应用程序中(尽管我确定那不相关)。0.1.0-preview.5在浏览器中使用版本尝试上面的代码(它之前工作的地方)永远给了我

  1. http://169.254.169.254/latest/meta-data/iam/security-credentials/ net::ERR_CONNECTION_TIMED_OUT
  2. Error: Unable to connect to instance metadata service (我猜与(1)有关)

库使用不稳定,还是我做错了什么

Vla*_*huk 5

您必须使用 key 传递您的凭据credentials。喜欢:

const lambda = new AWS.Lambda({
    credentials: {
        accessKeyId: credentials.accessKeyId,
        secretAccessKey: credentials.secretAccessKey,
    },
    region: Config.REGION
});
Run Code Online (Sandbox Code Playgroud)

或者:

const lambda = new AWS.Lambda({
    credentials,
    region: Config.REGION
});
Run Code Online (Sandbox Code Playgroud)