簡體   English   中英

AWS JS SDK V3(Lambda 模塊) - 無法連接到實例元數據服務

[英]AWS JS SDK V3 (Lambda module) - Unable to connect to instance metadata service

我以前使用多合一的aws-sdk npm 模塊 ( 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
        );
        ...

現在,從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
        );
        ...

就其價值而言,這是在 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)有關)

庫是否不穩定,或者我做錯了什么

您必須使用密鑰credentials傳遞您的credentials 喜歡:

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

或者:

const lambda = new AWS.Lambda({
    credentials,
    region: Config.REGION
});

是的,SDK 的第 3 版仍處於 Beta 預覽版中, 他們表示預計會有重大更改:

當 SDK 處於預覽階段時,您可能會遇到錯誤。

回答您的問題,是的,目前生產絕對不穩定 您的具體問題很常見,我也無法深入了解。 我的生產工作仍然使用 v2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM