You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda容器镜像构建中使用Gradle的shadowJar

解决方案

完全可以直接使用Gradle Shadow插件生成的Shadow JAR构建AWS Lambda Java容器镜像,无需额外引入复制依赖的任务,实现方式更简洁。

具体操作步骤

  • 保留AWS官方Java Lambda基础镜像作为父镜像,无需修改基础层配置
  • 修改Dockerfile,直接将生成的Shadow JAR复制到镜像内${LAMBDA_TASK_ROOT}/lib/目录即可,Lambda的Java运行环境会自动加载该目录下所有JAR包的类资源。
    调整后的Dockerfile参考:
FROM public.ecr.aws/lambda/java:11

# 直接复制Shadow插件生成的全量JAR包
COPY build/libs/*-all.jar ${LAMBDA_TASK_ROOT}/lib/

# CMD保持为你的handler全类名即可,无需修改
CMD [ "com.example.LambdaHandler::handleRequest" ]
  • Gradle配置侧无需再添加copyRuntimeDependencies相关任务,只要你已经正确引入Shadow插件,执行gradlew shadowJar命令即可生成打包了所有依赖的*-all.jar文件,构建镜像前先执行该构建任务即可。

注意事项

如果你的Lambda函数依赖了包含服务提供者配置(SPI)的组件(比如AWS SDK等),需要在Shadow插件配置中开启服务文件合并,避免运行时出现类加载异常,配置参考:

shadowJar {
    mergeServiceFiles()
}

内容的提问来源于stack exchange,提问作者madhead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:03