3

我在 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 执行期间不会注入层代码。

信息层代码:{}

4

2 回答 2

2

如果您尝试使用无服务器访问 Lambda 层内的静态文件,请确保通过从 AWS 层部分下载该层的 .zip 来打包它们,如果它们在那里,您可以将/opt文件夹的内容输出到您的CloudWatch 日志以确保您的文件在那里。

console.log('/opt/');
fs.readdirSync('/opt/').forEach(file => {
  console.log(file);
});
于 2020-01-23T21:16:06.727 回答
1

我联系了 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
于 2019-06-18T21:32:35.393 回答