K..*_*K.. 6 amazon-web-services node.js aws-lambda
在AWS Lambda函数之间共享代码的首选方法是什么?
我有这样的结构:
这让每个函数都保留了自己的node_modules,我可以用CLI打包整个东西.
但是需要共享的自定义代码呢?
我可以,require("../mylibrary")但包命令仍然不包括它.
正如 dmigo 已经提到的,Lambda 层是可能的。下面是一些使用 Lambda 层代码的SAM模板代码:
Globals:
Function:
Runtime: nodejs8.10
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: a/
Handler: index.handler
Layers:
- !Ref MySharedLayer
MySharedLayer:
Type: AWS::Serverless::LayerVersion
Properties:
LayerName: SharedLayer
Description: Some code to share with the other lambda functions
ContentUri: layer/
CompatibleRuntimes:
- nodejs8.10
RetentionPolicy: Retain
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用层在函数之间共享库和代码。您可以从 zip 文件创建层,就像为函数创建层一样。
图层包看起来或多或少是这样的:
my-layer.zip
? nodejs/node_modules/mylibrary
Run Code Online (Sandbox Code Playgroud)
如果您在此层之上创建函数,则在代码中可以像这样引用它:
const shared = require('mylibrary');
Run Code Online (Sandbox Code Playgroud)
值得注意的是,Layer 支持版本控制并与 Functions 进行多对多关联。这使他们成为第二个 npm。
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |