Java 使用Micronaut和GraalVM创建AWS Lambda函数时出现问题
我正在尝试使用Micronaut、GraalVM和Docker在Java中创建和部署AWS Lambda函数。下面我将使用GraalVM运行时创建AWS lambda 我已经使用micronaut命令创建了java项目Java 使用Micronaut和GraalVM创建AWS Lambda函数时出现问题,java,docker,aws-lambda,micronaut,graalvm,Java,Docker,Aws Lambda,Micronaut,Graalvm,我正在尝试使用Micronaut、GraalVM和Docker在Java中创建和部署AWS Lambda函数。下面我将使用GraalVM运行时创建AWS lambda 我已经使用micronaut命令创建了java项目$mn create-app-my-app-功能是aws api网关graal。然后,在不更改代码或配置文件的情况下,尝试使用GraalVM原生映像构建Docker映像。在docker build步骤中,当graalvm native image正在构建时,我收到以下警告: 警告:
$mn create-app-my-app-功能是aws api网关graal
。然后,在不更改代码或配置文件的情况下,尝试使用GraalVM原生映像构建Docker映像。在docker build步骤中,当graalvm native image正在构建时,我收到以下警告:
警告:正在中止独立映像生成。中不允许有任何实例
在上初始化或重新初始化的类的映像堆
映像运行时com.amazonaws.serverless.proxy.model.ContainerConfig。
尝试使用标记此类以进行生成时初始化
--在构建时初始化=com.amazonaws.serverless.proxy.model.ContainerConfig
Detailed message:
Trace: field io.micronaut.function.aws.proxy.AbstractLambdaContainerHandler.config
警告:使用-H:+ReportExceptionsStackTraces打印底层的堆栈跟踪
例外情况*
警告:映像“服务器”是一个回退映像,需要JDK用于
执行(使用--no fallback来抑制回退映像生成)
构建之后,我将docker映像和引导文件导出到function.zip文件,正如在教程中编写的一样。然后,我将function.zip文件上载到我创建的AWS lambda函数中,当我尝试测试函数时,我遇到以下错误:
启动请求ID:888854d7-0e0e-42b4-a138-9a003c3455e1版本:
$LATEST错误:没有bin/java和环境变量java_HOME结束请求ID:888854d7-0e0e-42b4-a138-9a003c3455e1
报告请求ID: 888854d7-0e0e-42b4-a138-9a003c3455e1持续时间:415.09毫秒计费 持续时间:500毫秒内存大小:128 MB最大使用内存:16 MB
RequestId:888854d7-0e0e-42b4-a138-9a003c3455e1错误:运行时已退出 出现错误:退出状态1
运行时。退出错误
我不知道怎么了。我还没有找到这个问题的任何解决方案。这个类调用
ContainerConfig
类的静态方法defaultConfig
io.micronaut.function.aws.proxy.AbstractLambdaContainerHandler
com.amazonaws.serverless.proxy.internal.LambdaContainerHandler
为了解决这个问题,我们需要在运行时而不是编译时初始化这些类
我对GraalVM完全陌生,目前无法解释原因
我的本机映像
配置
native-image
--delay-class-initialization-to-runtime=io.micronaut.function.aws.proxy.AbstractLambdaContainerHandler,com.amazonaws.serverless.proxy.internal.LambdaContainerHandler
--no-fallback
--no-server
-cp build/libs/yourJarName.jar
资源:
该类调用
ContainerConfig
类的静态方法defaultConfig
io.micronaut.function.aws.proxy.AbstractLambdaContainerHandler
com.amazonaws.serverless.proxy.internal.LambdaContainerHandler
为了解决这个问题,我们需要在运行时而不是编译时初始化这些类
我对GraalVM完全陌生,目前无法解释原因
我的本机映像
配置
native-image
--delay-class-initialization-to-runtime=io.micronaut.function.aws.proxy.AbstractLambdaContainerHandler,com.amazonaws.serverless.proxy.internal.LambdaContainerHandler
--no-fallback
--no-server
-cp build/libs/yourJarName.jar
资源:
尝试检查JAVA\u HOME是否设置在环境中您指的是什么环境?在我的Linux机器中,安装了java,并且java\u HOME设置正确。请尝试检查环境中是否设置了java\u HOME您指的是什么环境?在我的Linux机器中安装了java,并且正确设置了java_HOME。