选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

打包层内容

聚焦模式
打包层内容 - AWS Lambda

Lambda 层是包含补充代码或数据的 .zip 文件存档。层通常包含库依赖项、自定义运行时系统或配置文件。

本部分介绍如何正确打包层内容。有关层的更多概念性信息以及您可能会考虑使用层的原因,请参阅 使用层管理 Lambda 依赖项

创建层的第一步是将所有层内容捆绑到.zip 文件存档中。由于 Lambda 函数在 Amazon Linux 上运行,因此层内容必须能够在 Linux 环境中编译和构建。

为确保层内容在 Linux 环境中正常运行,推荐使用 DockerAWS Cloud9 等工具创建层内容。AWS Cloud9 是一个基于云的集成式开发环境(IDE),提供对 Linux 服务器的内置访问权限,用于运行和测试代码。有关更多信息,请参阅 AWS 计算博客上的 Using Lambda layers to simplify your development process

每个 Lambda 运行时的层路径

当您向函数添加层时,Lambda 会将层内容加载到该执行环境的 /opt 目录中。对于每个 Lambda 运行时系统,PATH 变量都包括 /opt 目录中的特定文件夹路径。为确保 Lambda 能够获取层内容,层 .zip 文件应在以下文件夹路径中具有依赖项:

运行时 路径

Node.js

nodejs/node_modules

nodejs/node16/node_modules (NODE_PATH)

nodejs/node18/node_modules (NODE_PATH)

nodejs/node20/node_modules (NODE_PATH)

Python

python

python/lib/python3.x/site-packages(站点目录)

Java

java/lib (CLASSPATH)

Ruby

ruby/gems/3.3.0 (GEM_PATH)

ruby/lib (RUBYLIB)

所有运行时

bin (PATH)

lib (LD_LIBRARY_PATH)

以下示例显示了如何构建层 .zip 存档中的文件夹架构。

Node.js
例 适用于 Node.js 的 AWS X-Ray 软件开发工具包的文件结构
xray-sdk.zip └ nodejs/node_modules/aws-xray-sdk
Python
例 请求库的文件结构
layer_content.zip └ python └ lib └ python3.13 └ site-packages └ requests └ <other_dependencies> (i.e. dependencies of the requests package) └ ...
Ruby
例 JSON gem 的文件结构
json.zip └ ruby/gems/3.3.0/ | build_info | cache | doc | extensions | gems | └ json-2.1.0 └ specifications └ json-2.1.0.gemspec
Java
例 Jackson JAR 文件的文件结构
layer_content.zip └ java └ lib └ jackson-core-2.17.0.jar └ <other potential dependencies> └ ...
All
例 JQ 库的文件结构
jq.zipbin/jq
例 适用于 Node.js 的 AWS X-Ray 软件开发工具包的文件结构
xray-sdk.zip └ nodejs/node_modules/aws-xray-sdk

有关打包、创建和添加层的特定语言说明,请参阅以下页面:

建议使用层来管理用 Go 和 Rust 编写的 Lambda 函数的依赖项。这是因为用这些语言编写的 Lambda 函数编译成单个可执行文件,您在部署函数时将其提供给 Lambda。这个可执行文件包含您编译的函数代码及其所有依赖项。使用层不仅会使此过程复杂化,还会导致冷启动时间增加,因为函数需要在初始化阶段将额外的程序集手动加载到内存中。

要在 Go 和 Rust Lambda 函数中使用外部依赖项,请直接将其包含在部署包中。

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。