首页 > 解决方案 > 如何使用无服务器框架正确部署 Lambda 层

问题描述

我正在尝试使用无服务器框架在 AWS 中配置和部署一些层。
图层文件所在的目录结构如下:

lambda-layers
    |
    | - test-layers
         |
         | - nodejs
         |      | - index.js
         |      | - test.js
         |
         | - serverless.yml   

我的serverless.yml文件看起来像这样

service: test-layers

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: region

layers:
  TestLayer:
    path: nodejs

我运行sls deploy,我可以看到该层已部署,但是当我尝试从我的 Lambda 中的层中的文件访问函数时,如下所示:
const index = require('/opt/nodejs/index');
我的 Lambda 崩溃并抱怨索引模块不存在。

当我压缩图层内容并将它们手动上传到 AWS 时,一切正常。


我尝试过的事情:
-serverless.yml进入 nodejs 目录并从那里部署,但这给了我以下错误:
No file matches include / exclude patterns

标签: node.jsamazon-web-servicesaws-lambdaserverless-frameworkaws-lambda-layers

解决方案


终于发现我做错了什么。上面的配置没有问题,我的错误是需要图层中的文件。
而不是这个:
const index = require('/opt/nodejs/index');
我应该这样做:
const index = require('/opt/index');


推荐阅读