【发布时间】:2022-06-16 21:26:41
【问题描述】:
我正在升级 Spring Cloud Functions lambda 以在 JDK 17 上运行。Amazon 不提供 JDK 17 的基本映像,因此我没有部署 ZIP 文件,而是创建了一个运行 Docker 映像的 lambda。对于运行 Java 映像,我的 Dockerfile 通常如下所示:
FROM amazoncorretto:17
VOLUME /tmp
COPY ./my-lambda-project/build/libs/my-lambda-project-1.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
它运行首先使用 bootRun Gradle 任务创建的 jar。我的 Application.java 类的主要方法如下所示:
public static void main(String[] args) {
FunctionalSpringApplication.run(Application.class, args);
}
主要方法使用 FunctionalSpringApplication 而不是 SpringApplication.run(为了更快地启动),在 lambda 配置中我将函数处理程序指定为 org.springframework.cloud.function.adapter.aws.FunctionInvoker::handleRequest。
使用 Dockerfile 方法,我可以使用 ENTRYPOINT 或 CMD 的某种组合。有没有办法让这个 docker 镜像在推送到 ECR 时使用 JDK 17 运行 lambda?
【问题讨论】:
标签: java spring amazon-web-services docker aws-lambda