【发布时间】:2022-09-27 19:03:43
【问题描述】:
我基于 Micronaut 和 Kotlin 创建了一个 lambda 函数。它提供了两个控制器, \"/\" 只是说 Hello World 和 \"/somefunc\" 用于做事。 当我通过 CLI 执行它时,它按预期工作
aws lambda invoke --function-name MYFUNC --cli-binary-format raw-in-base64-out --payload \'{ \"path\": \"/somefunc\" }\' response.json
当我在 lambda 页面 https://eu-central-1.console.aws.amazon.com/lambda/home?region=eu-central-1#/functions/MYFUNC?tab=testing 上调用测试时 ,它按预期工作
但是当我调用公共 URL https://THEPUBLICURL.lambda-url.eu-central-1.on.aws/somefunc 时,它总是得到调用 \"/\" 控制器的结果。 而当我调用https://THEPUBLICURL.lambda-url.eu-central-1.on.aws/somefuncthatdoesnotexist 时,它也会响应\"/\" 控制器的回复。
函数处理程序设置为 io.micronaut.function.aws.proxy.MicronautLambdaHandler
调用公共 URL 时我做错了什么?
编辑:这是示例代码:
package com.example
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.runtime.Micronaut.*
fun main(args: Array<String>) {
run(*args)
}
@Controller
open class HomeController {
@Get
fun hello() = mapOf(\"message\" to \"Hello World\")
@Get(\"/somefunc\")
fun somefunc() = mapOf(\"message\" to \"Hello some world\")
}
标签: amazon-web-services kotlin aws-lambda micronaut