Bra*_*don 4 node.js aws-lambda aws-serverless
我们有一个非常简单的用例——我们想与我们所有的 lambda 共享代码,我们不想使用 webpack。
我们不能将相对路径放在package.jsonlambda 文件夹中的文件中,因为当您执行sam build两次时,它会删除共享代码,我不知道为什么。
回答要求:
sam local start-apisam local invokesam build 作品sam deploy 作品Bra*_*don 10
TL; 博士
let math = require(process.env.AWS ? '/opt/nodejs/common' : '../../layers/layer1/nodejs/common');
let tuc = require(process.env.AWS ? 'temp-units-conv' : '../../layers/layer1/nodejs/node_modules/temp-units-conv');
Run Code Online (Sandbox Code Playgroud)
这是一个我们认为我们会发布的工作示例,以便其他人比我们更轻松。我们认为 AWS 应该让这件事变得更容易。
https://github.com/blmille1/aws-sam-layers-template.git
陷阱
此解决方案避免了以下问题。我之所以提到它,是因为它看起来是一个直接的解决方案,我花了很多时间才最终放弃它。
在 lambda 函数的 package.json 中添加文件夹引用非常诱人。
//...
"dependencies": {
"common":"file:../../layers/layer1/nodejs/common"
},
//...
Run Code Online (Sandbox Code Playgroud)
如果你这样做,它将首先起作用sam build。但是,第二次运行时sam build,您的共享代码文件夹和所有子目录都将被删除。这是因为当 sam 构建时,它会创建一个 .aws-sam 文件夹。如果该文件夹存在,它会执行 npm 清理,我认为这就是删除共享代码的原因。
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |