cas*_*tle 5 aws-lambda aws-api-gateway micronaut micronaut-aws
我正在 AWS API Gateway 代理中使用micronaut
1.1.0.RC2
Kotlin micronaut-function-aws-api-proxy
1.1.0.RC3
Lambda 函数。micronaut aws api 代理适用于我的所有 API 函数(文件上传路由除外)。类和路由定义如下所示:
@Controller("/things/{id}/attachments")
class AttachmentController {
@Post(consumes = [MediaType.MULTIPART_FORM_DATA])
fun post(request: HttpRequest<Any>, id: Int, file: CompletedFileUpload): Attachment? {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在本地运行,效果很好。但是,当我通过 API Gateway 和 Lambda 使用它时,我不断收到以下错误:
ERROR c.a.s.p.AwsProxyExceptionHandler Called exception handler for:
io.micronaut.web.router.exceptions.UnsatisfiedRouteException: Required argument [CompletedFileUpload file] not specified
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:279)
at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:122)
...
Run Code Online (Sandbox Code Playgroud)
同样,如果我在本地运行 micronaut 应用程序并直接访问 API(没有 micronaut AWS 代理),它就能完美运行。但是,当我将其部署到 AWS 时,micronaut aws 代理似乎存在问题,无法正确解析多部分表单数据。
我确实已multipart/form-data
在 API 网关上设置为二进制媒体类型。我尝试使用micronaut 主要文档(https://docs.micronaut.io/1.1.0.RC2/guide/index.htmlCompletedFileUpload
)中描述的类型和类型,得到相同的结果。StreamingFileUpload
无论如何,我使用 AWS Spark 代理 (aws-serverless-java-container-spark) 对同一件事进行了不同的实现,并且它运行正常。
为了进行测试,我正在运行以下curl命令:
curl -X POST https://<host>/things/42/attachments -H 'content-type: multipart/form-data' -F file=@/path/to/file.png
Run Code Online (Sandbox Code Playgroud)
还有其他人有这样的运气吗?micronaut api 网关代理目前不支持它吗?任何帮助表示赞赏!
归档时间: |
|
查看次数: |
1729 次 |
最近记录: |