如何使用无服务器框架正确部署Lambda层

时间:2020-04-07 14:06:59

标签: node.js amazon-web-services aws-lambda serverless-framework aws-lambda-layers

我正在尝试使用无服务器框架在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

1 个答案:

答案 0 :(得分:2)

最后发现我在做什么错。 上面的配置没有任何问题,我的错误是需要来自各层的文件。
代替这个:
const index = require('/opt/nodejs/index');
我应该这样做:
const index = require('/opt/index');