AWS Lambda Layers 终极指南:如何用 awesome-layers 加速无服务器开发
AWS Lambda Layers 终极指南:如何用 awesome-layers 加速无服务器开发
AWS Lambda Layers 是一种可包含任意代码和数据的新型构件,可被多个函数同时引用,实现跨函数共享通用依赖,如 SDK、框架和运行时,大幅提升无服务器开发效率。awesome-layers 作为精选的 AWS Lambda Layers 列表,汇集了丰富的现成图层资源,能帮助开发者快速构建高效的无服务器应用。
什么是 Lambda Layers?
Lambda Layers 是 AWS Lambda 提供的一种代码共享机制,允许开发者将通用的代码和依赖打包成图层,供多个 Lambda 函数重复使用。这不仅减少了函数代码的体积,还便于集中管理和更新共享组件,是无服务器开发中的重要优化手段。
Lambda Layers 是一种新型的构件,可以包含任意代码和数据,并且可以同时被零个、一个或多个函数引用。无服务器应用中的 Lambda 函数通常共享诸如 SDK、框架等常见依赖,现在运行时也可以共享。通过图层,您可以跨多个函数集中管理通用组件,实现更好的代码复用。
— https://aws.amazon.com/about-aws/whats-new/2018/11/aws-lambda-now-supports-custom-runtimes-and-layers/
如何创建和使用 Lambda Layers?
多种创建方式
- 使用 Serverless Framework:通过 Serverless Framework 可以轻松创建和发布 Lambda Layers,简化配置和部署流程。
- 使用 SAM:AWS Serverless Application Model (SAM) 提供了定义 LayerVersion 的模板语法,方便集成到 SAM 应用中。
- 使用 AWS 控制台:通过 AWS 管理控制台直观地创建和管理 Lambda Layers,适合初学者操作。
- 使用 AWS CLI:通过命令行工具可以自动化创建和管理图层,适合集成到 CI/CD 流程中,例如 tutorial。
- 使用 Stackery:Stackery 提供了可视化的方式来创建和管理 Lambda Layers,进一步简化开发流程。
快速使用步骤
- 从 awesome-layers 中选择合适的图层,获取其 ARN 或链接。
- 在创建或编辑 Lambda 函数时,添加该图层的 ARN。
- 函数即可直接使用图层中包含的代码和依赖,无需重复打包和部署。
如何共享 Lambda Layers 公开?
公开共享方法
要公开共享 Lambda Layers,可以参考 Tutorial with CLI examples。通过 AWS CLI 可以将图层设置为公开访问,让其他开发者能够方便地引用和使用您创建的图层,促进社区共享和协作。
awesome-layers 精选图层分类
运行时(Runtimes)
| Name | ARN / Link | Compatible Runtimes | Latest Version |
|---|---|---|---|
| C++ (official) | Link: awslabs/aws-lambda-cpp |
provided |
Self publish |
| Rust (official) | Link: awslabs/aws-lambda-rust-runtime |
provided |
Self publish |
| Bash | ARN: arn:aws:lambda:<region>:744348701589:layer:bash:<version>Link: gkrizek/bash-lambda-layer |
provided |
|
| Node.js v12 | ARN: arn:aws:lambda:<region>:553035198032:layer:nodejs12:<version>Link: lambci/node-custom-lambda |
provided |
|
| Python 3.8 | 可通过 keithrozario/Klayers 获取,包含 requests 等常用 Python 包 | python3.8 |
... |
实用工具(Utilities)
| Name | ARN / Link | Compatible Runtimes | Latest Version |
|---|---|---|---|
| AWS CLI | Link: aws-samples/aws-lambda-layer-awscli |
all | Self publish |
| FFmpeg/FFprobe | ARN: arn:aws:lambda:us-east-1:145266761615:layer:ffmpeg:4Link: serverlesspub/ffmpeg-aws-lambda-layer |
all | Self publish |
| Git + SSH | ARN: arn:aws:lambda:<region>:553035198032:layer:git:<version>Link: lambci/git-lambda-layer |
all | |
| OpenAI | Link: erenyasarkurt/OpenAI-AWS-Lambda-LayerOpenAI Python packages and the required dependencies |
python3.7 python3.8 python3.9 |
Self publish |
监控(Monitoring)
| Name | ARN / Link | Compatible Runtimes | Latest Version |
|---|---|---|---|
| Datadog | ARN: arn:aws:lambda:<region>:464622532012:layer:Datadog-Python37:1Link: Datadog's Lambda Layer |
python2.7, python3.6, python3.7, |
|
| Lumigo Node | ARN: arn:aws:lambda:YOUR-REGION:724777057400:layer:lumigo-node-tracer:<version>Link: Lumigo Node Layer |
nodejs8.10, nodejs10.X |
AWS 官方 Lambda 图层
| Name | ARN / Link | Compatible Runtimes | Latest Version |
|---|---|---|---|
| AWSLambdaPowertoolsTypeScript | ARN: [arn:aws:lambda:{region}:094274105915:layer:AWSLambdaPowertoolsTypeScript:18] | see documentation | |
| AWSLambdaPowertoolsPythonV2 | ARN: [arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV2:42] | see documentation | |
| AWS-Parameters-and-Secrets-Lambda-Extension | ARN: [arn:aws:lambda:{region}:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension:10] | see documentation |
如何开始使用 awesome-layers?
要开始使用 awesome-layers 加速您的无服务器开发,只需执行以下步骤:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/aw/awesome-layers - 浏览 README.md 文件,了解图层的分类和详细信息。
- 根据您的项目需求,选择合适的图层 ARN。
- 在 AWS Lambda 函数配置中添加该图层 ARN,即可享受图层带来的便利。
通过合理利用 awesome-layers 中的资源,您可以显著减少重复劳动,专注于核心业务逻辑的开发,快速构建高效、可维护的无服务器应用。赶快行动起来,体验 Lambda Layers 带来的开发新方式吧! 🚀
更多推荐


所有评论(0)