You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Micronaut+Kotlin的Lambda函数无法通过URL正确调用

问题原因及解决方案

问题出在Lambda URL的请求事件格式与Micronaut默认Lambda处理器的适配性上:

  • CLI和Lambda控制台测试时,你传入的是API Gateway V1格式的请求(包含path字段),MicronautLambdaHandler可以正确解析路径,匹配对应控制器。
  • 但Lambda URL发送的是API Gateway V2格式的事件,默认处理器无法正确提取请求路径,导致所有请求都被路由到根路径(/)的控制器。

解决步骤:

  1. 添加V2事件支持依赖
    在你的构建配置文件(如build.gradle.kts)中添加Micronaut AWS Lambda V2事件依赖:
implementation("io.micronaut.aws:micronaut-function-aws-lambda-events")
  1. 创建自定义Lambda Handler
    在项目中新增一个Handler类,专门处理V2格式的事件:
package com.example

import io.micronaut.function.aws.proxy.MicronautLambdaHandler
import software.amazon.awssdk.services.lambda.runtime.events.APIGatewayV2HTTPEvent
import software.amazon.awssdk.services.lambda.runtime.events.APIGatewayV2HTTPResponse

class CustomLambdaHandler : MicronautLambdaHandler<APIGatewayV2HTTPEvent, APIGatewayV2HTTPResponse>()
  1. 更新Lambda函数处理器配置
    在AWS Lambda控制台中,将函数的处理器设置为com.example.CustomLambdaHandler(替换原来的io.micronaut.function.aws.proxy.MicronautLambdaHandler)。

完成以上步骤后,重新部署Lambda函数,再通过公共URL调用/somefunc路径,就能正确返回对应控制器的结果了。

内容的提问来源于stack exchange,提问作者MadCatERZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:50:43