使用Micronaut和GraalVM创建AWS Lambda函数的问题

时间:2019-06-24 11:38:43

标签: java docker aws-lambda micronaut graalvm

我正在尝试使用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构建的步骤中,我得到以下警告:

  

警告:中止独立映像构建。不允许实例   在以下位置初始化或重新初始化的类的图像堆   映像运行时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 ms已结算   持续时间:500 ms内存大小:128 MB已使用的最大内存:16 MB
  RequestId:888854d7-0e0e-42b4-a138-9a003c3455e1错误:已退出运行时   出现错误:退出状态为1
Runtime.ExitError

我不知道怎么了。我还没有找到解决这个问题的方法。

1 个答案:

答案 0 :(得分:0)

此类调用defaultConfig类的静态方法ContainerConfig

io.micronaut.function.aws.proxy.AbstractLambdaContainerHandler
com.amazonaws.serverless.proxy.internal.LambdaContainerHandler

要解决此问题,我们需要在运行时而不是编译时初始化该类。

我对GraalVM完全陌生,目前无法解释其原因。

我的native-image配置。

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

资源: https://medium.com/graalvm/understanding-class-initialization-in-graalvm-native-image-generation-d765b7e4d6ed