咨询AWS Lambda支持的Java部署ZIP/JAR文件格式的官方文档详情
AWS Lambda Java 部署包规范详解
1. Multirelease JARs 限制的文档说明
AWS Lambda官方的Java运行时特性与限制章节明确规定:Lambda不支持multirelease JARs。原因是Lambda采用固定版本的JVM执行代码,多版本JAR的动态版本切换机制无法适配Lambda的运行环境。
2. 不使用Maven Shade Plugin时的结构支持
Lambda完全支持两种无需合并依赖的归档结构,并非仅支持包层级类文件:
- 分层结构:自身业务类的字节码文件放在归档根目录(保持原包层级,比如
com/yourteam/YourHandler.class),所有第三方依赖JAR放在根目录下的lib子目录中。Lambda的Java运行时会自动将lib目录下的所有JAR加入类路径。 - 扁平化结构:手动解压所有依赖JAR,将解压后的类文件与自身业务类文件按包层级合并后,直接打包进ZIP/JAR的根目录。这种结构和Shade插件的输出效果一致,无需插件也能手动实现。
3. ZIP/JAR的具体内容要求与支持变体
核心要求
- 必须包含Lambda配置中指定的Handler入口类的字节码文件,该类需能从类路径中被加载(无论是根目录的类文件,还是
lib目录下JAR中的类都可)。 - 归档可以是标准JAR文件,也可以是ZIP压缩包,两者的结构规则完全一致。
支持的变体
- 分层结构(自身类+
lib目录依赖JAR) - 扁平化结构(所有类文件直接放在根目录)
- 包含针对Lambda运行时(Amazon Linux 2/2023)编译的Native库,可放在
lib目录或对应系统库路径下。
禁止的内容/结构
- Multirelease JARs(如前所述)
- 多余的本地开发文件(比如IDE配置文件、测试用例资源等),避免增大归档体积
- 修改过的签名JAR(签名后修改归档内容会导致JVM验证失败)
相关文档位置
以上所有规范均收录在AWS Lambda官方的Java开发指南 - 创建部署包章节,以及Java运行时特性与限制章节中,涵盖了部署包结构、依赖管理、运行时限制等全部细节。
内容的提问来源于stack exchange,提问作者Garret Wilson
相关产品推荐
相关产品推荐

