【发布时间】:2019-06-24 11:38:43
【问题描述】:
我正在尝试使用 Micronaut、GraalVM 和 Docker 在 Java 中创建和部署 AWS Lambda 函数。我正在关注 this tutorial 使用 GraalVM 运行时创建 AWS lambda。
我使用micronaut 命令$ mn create-app my-app --features aws-api-gateway-graal 创建了java 项目。然后在不更改代码或配置文件的情况下,尝试使用 GraalVM 原生镜像构建 Docker 镜像。在构建 graalvm 本机映像时的 docker build 步骤中,我收到以下警告:
警告:正在中止独立映像构建。不允许有实例 初始化或重新初始化的类的图像堆 图像运行时 com.amazonaws.serverless.proxy.model.ContainerConfig。 尝试将此类标记为构建时初始化 --initialize-at-build-time=com.amazonaws.serverless.proxy.model.ContainerConfig
Detailed message: Trace: field io.micronaut.function.aws.proxy.AbstractLambdaContainerHandler.config警告:使用 -H:+ReportExceptionStackTraces 打印底层堆栈跟踪 异常*
警告:图像“服务器”是备用图像,需要 JDK 才能运行 执行(使用 --no-fallback 来抑制后备图像生成)。
构建后,我将带有引导文件的 docker 映像导出到 function.zip 文件,因为它是在教程中编写的。然后我将 function.zip 文件上传到我创建的 AWS lambda 函数,当我尝试测试函数时,我得到了这个错误:
{ "errorType": "Runtime.ExitError", "errorMessage": "RequestId: 888854d7-0e0e-42b4-a138-9a003c3455e1 Error: Runtime exited with error: exit status 1" }START RequestId:888854d7-0e0e-42b4-a138-9a003c3455e1 版本: $LATEST
错误:没有 bin/java 并且没有环境变量 JAVA_HOME
END RequestId:888854d7-0e0e-42b4-a138-9a003c3455e1
REPORT RequestId: 888854d7-0e0e-42b4-a138-9a003c3455e1 持续时间:415.09 毫秒 持续时间:500 毫秒内存大小:128 MB 使用的最大内存:16 MB
RequestId:888854d7-0e0e-42b4-a138-9a003c3455e1 错误:运行时已退出 出现错误:退出状态 1
Runtime.ExitError
我不知道出了什么问题。我还没有找到任何解决这个问题的方法。
【问题讨论】:
-
尝试检查环境中是否设置了 JAVA_HOME
-
你指的是什么环境?在我的 Linux 机器上安装了 java 并且 JAVA_HOME 设置正确。
标签: java docker aws-lambda micronaut graalvm