当前位置: 首页 > 知识库问答 >
问题:

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

葛兴发
2023-03-14

我试图使用Micronaut、GraalVM和Docker在Java中创建和部署AWS Lambda函数。我正在按照本教程使用GraalVM运行时创建AWS lambda。

我使用micronaut命令$mn create-app my-app--features aws-api-gateway-graal创建了java项目。然后在不改变代码或配置文件的情况下,尝试用GraalVM本机映像构建Docker映像。在docker build步骤中,当构建graalvm本机映像时,我会收到以下警告:

警告:正在中止独立映像生成。对于在映像运行时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打印基础异常的stacktrace*

警告:映像'server'是一个需要JDK执行的回退映像(使用--no-fallback来抑制回退映像的生成)。

{  "errorType": "Runtime.ExitError",
   "errorMessage": "RequestId: 888854d7-0e0e-42b4-a138-9a003c3455e1 Error: Runtime exited with error:
    exit status 1"
}

开始请求D:888854D7-0E0E-42B4-A138-9A003C3455E1版本:$最新
错误:没有bin/java且没有环境变量java_home
结束请求D:888854D7-0E0E-42B4-A138-9A003C3455E1
报告请求D:888854D7-0E0E-42B4-A138-9A003C3455E1持续时间:415.09毫秒记账持续时间:500毫秒内存大小:128 MB最大使用内存:16 MB
请求D:888854D7-0E0E-42B4-A138

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

共有1个答案

符棋
2023-03-14

此类调用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
 类似资料:
  • 当我像这样创建时,它工作得很好: 但是当我试图发送消息时,它会抛出一个异常,创建如下所示: 发送功能:

  • 我在这里将Micronaut应用程序作为Graalvm本地映像进行试用。

  • 我正在尝试用Dockers创建一个GraalVM本地映像。我已经创建了一个Micronaut项目,并成功创建了jar应用程序,并在docker中运行;此外,我已经用这个jar文件创建了一个GraalVM本机映像,现在可以运行这个应用程序,但我需要在docker中运行一个GraalVM本机映像,在论坛中寻找答案。我发现有必要在docker中构建本机映像。因此我尝试了这个docker文件: 它不会抛出

  • 我在多核机器(多个垂直)上运行这个vertx应用程序,我想创建一个PaceRedisConnection的单例实例。它创建的垂直点数量与单个实例一样多 源代码: https://github.com/himanshumps/micronaut-vertx-issue.git

  • 我目前正在将现有的Micronaut应用程序从版本1.2. x升级到2.2.1(最新),我认为开始使用来执行任何数据库交互也是一个好主意是必需的。 我已经实现了所有各种代码更改,并且还将代码移植到使用Micronaut自己的存储库,但是每当我启动应用程序时,每次它尝试执行任何类型的数据库相关交互时,都会失败并出现以下错误: 我遵循了这里找到的关于设置Micronaut Data的配置指南,我想我已

  • 当我像这样创建时,它工作得很好: 但当我尝试发送消息创建if时,它会抛出一个异常: 发送功能: 函数有什么问题?