捆绑为 docker 映像的原生 Spring 函数不适用于 AWS lambda

问题描述

我正在尝试使用由 paketobuildpacks/builder 使用 spring-native + spring-cloud-function-aws 构建的 Docker 映像运行 AWS Lambda,但它不处理传入值,只是启动和返回错误,我错过了什么吗?

日志输出

START RequestId: f7a451f1-f43b-4ba0-be3d-58526bfa0d10 Version: $LATEST
2021-06-30 00:20:58.229  INFO 8 --- [           main] o.s.nativex.NativeListener               : This application is bootstrapped with code generated with Spring AOT

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__,| / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.1)

2021-06-30 00:20:58.251  INFO 8 --- [           main] o.s.boot.SpringApplication               : Starting application using Java 11.0.11 on 169.254.41.117 with PID 8 (started by sbx_user1051 in /workspace)
2021-06-30 00:20:58.251  INFO 8 --- [           main] o.s.boot.SpringApplication               : No active profile set,falling back to default profiles: default
2021-06-30 00:20:58.551  INFO 8 --- [           main] o.s.boot.SpringApplication               : Started application in 0.42 seconds (JVM running for 0.421)
END RequestId: f7a451f1-f43b-4ba0-be3d-58526bfa0d10
REPORT RequestId: f7a451f1-f43b-4ba0-be3d-58526bfa0d10  Duration: 840.41 ms Billed Duration: 841 ms Memory Size: 128 MB Max Memory Used: 29 MB  
RequestId: f7a451f1-f43b-4ba0-be3d-58526bfa0d10 Error: Runtime exited without providing a reason
Runtime.ExitError

在下面找到我的配置:

Gradle 插件

kotlin("jvm")
kotlin("plugin.spring")
id("io.spring.dependency-management")
id("org.springframework.boot")
id("org.springframework.experimental.aot")
id("org.graalvm.buildtools.native")

依赖:

implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.springframework.cloud:spring-cloud-function-adapter-aws")
implementation("com.amazonaws:aws-lambda-java-events:2.0.2")
implementation("com.amazonaws:aws-lambda-java-core:1.1.0")

GraalVM 插件配置:

tasks.withType<BootBuildImage> {
    builder = "paketobuildpacks/builder:tiny"
    environment = mapOf("BP_NATIVE_IMAGE" to "true")
}

应用来源:

@SpringBootApplication
class LinkGeneratorApplication: ApplicationContextinitializer<GenericApplicationContext>  {
    override fun initialize(applicationContext: GenericApplicationContext) {
        applicationContext.registerBean(
            "function",FunctionRegistration::class.java,{
                FunctionRegistration(Function<Input,Result> { Result("Here") })
                    .type(
                        FunctionType
                            .from(Input::class.java)
                            .to(Result::class.java)
                            .type
                    )
            }
        )
    }

}

data class Input(val sellerId: String,val ownerId: String,val market: String)
data class Result(val message: String)

fun main(args: Array<String>) {
    runApplication<LinkGeneratorApplication>(*args)
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)