簡體   English   中英

AWS Lambda - 無法訪問捆綁在層 (Node.js) 中的 JS 文件

[英]AWS Lambda - Not able to a access JS file bundled in Layer (Node.js)

我在 node.js 上創建了一個 lambda 函數並附加了一個層。 但是當我執行我的 lambda 函數時,它沒有讀取捆綁在層中的 JS。 如果我在這里犯了任何錯誤,請告訴我。

按照這篇文章創建了一個層“my-utility”並上傳了 nodejs.zip。

AWS 控制台 > Lambda > 層 > 創建層

層結構

my-utility
   - nodejs
     - node_modules   
     - myutil.js
     - package.json
     - package-lock.json
   - nodejs.zip 

myutil.js

function myFun(name) {
     console.log("Hello.. " + name);
}

Lambda 代碼(Node.js 10.x)

const myutil = require('/opt/nodejs/myutil.js');
exports.handler = async (event) => {

    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };

    console.log('Layer Code :', myutil);

    return response;
};

在上面的 lambda 測試之后,它給出了以下結果:

Response:
{
  "statusCode": 200,
  "body": "\"Hello from Lambda!\""
}

Request ID:
"5dbfd4ab-04d2-47eb-89dd-c9c6a650cbb0"

Function Logs:
START RequestId: 5dbfd4ab-04d2-47eb-89dd-c9c6a650cbb0 Version: $LATEST
2019-06-18T18:35:35.125Z    5dbfd4ab-04d2-47eb-89dd-c9c6a650cbb0    INFO    Layer Code :  {}
END RequestId: 5dbfd4ab-04d2-47eb-89dd-c9c6a650cbb0
REPORT RequestId: 5dbfd4ab-04d2-47eb-89dd-c9c6a650cbb0  Duration: 133.56 ms Billed Duration: 200 ms     Memory Size: 128 MB Max Memory Used: 26 MB

如果您注意到,當我嘗試打印 'myutil' 常量時,它被打印為空。 這意味着,在 lambda 執行期間不會注入層代碼。

信息層代碼:{}

如果您嘗試使用無服務器訪問 Lambda 層內的靜態文件,請確保通過從 AWS 層部分下載層的 .zip 來打包它們,如果它們在那里,您可以輸出/opt文件夾的內容到您的 CloudWatch 日志以確保您的文件在那里。

console.log('/opt/');
fs.readdirSync('/opt/').forEach(file => {
  console.log(file);
});

我聯系了 AWS 支持團隊並解決了這個問題。 我必須在 myutil.js 中編寫如下所示的函數。 這個鏈接也有幫助。

module.exports = {
  myFun:function (name) {
     console.log("Hello.. " + name);
     return 'narendra';
  }
};

我可以看到 lambda 從層調用 js 函數並正確打印返回值。

Lambda 函數日志

START RequestId: 39bfa864-9a31-4c0c-b9d3-ce7c2b3d1aaf Version: $LATEST
2019-06-18T21:28:06.505Z    39bfa864-9a31-4c0c-b9d3-ce7c2b3d1aaf    INFO    Hello.. narendra
2019-06-18T21:28:06.505Z    39bfa864-9a31-4c0c-b9d3-ce7c2b3d1aaf    INFO    Layer Code :  narendra
END RequestId: 39bfa864-9a31-4c0c-b9d3-ce7c2b3d1aaf
REPORT RequestId: 39bfa864-9a31-4c0c-b9d3-ce7c2b3d1aaf  Duration: 85.38 ms  Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 26 MB

暫無
暫無

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

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