Aws lambda 公开/部署多个处理程序(quarkus lambda)

Aws lambda 公开/部署多个处理程序(quarkus lambda),aws-lambda,quarkus,Aws Lambda,Quarkus,显示公开的处理程序(通过打包应用程序中的io.quarkus.amazon.lambda.runtime.QuarkUstreamHandler::HandlerRequest)是通过在应用程序.properties中设置quarkus.lambda.handler配置的。但是在我的例子中,我希望从同一个项目部署多个处理程序 有人知道从quarkus lambda项目中暴露多个处理程序的方法吗,或者是否可能 编辑:通读之后,现在似乎确实不可能这样做,对吗?您应该只编写一个RestEasy资源,然

显示公开的处理程序(通过打包应用程序中的io.quarkus.amazon.lambda.runtime.QuarkUstreamHandler::HandlerRequest)是通过在
应用程序.properties
中设置
quarkus.lambda.handler
配置的。但是在我的例子中,我希望从同一个项目部署多个处理程序

有人知道从quarkus lambda项目中暴露多个处理程序的方法吗,或者是否可能


编辑:通读之后,现在似乎确实不可能这样做,对吗?

您应该只编写一个RestEasy资源,然后按照此处所述的步骤进行操作:

有关RestEasy和DynamoDB的完整示例,请阅读以下内容:

基本上,您只需在Quarkus中编写Rest资源,Quarkus通过SAM CLI将所有资源端点部署和配置为Api网关和AWS中的Lambda和处理程序

确保类路径中有以下2个依赖项:

    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>url-connection-client</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-amazon-lambda-http</artifactId>
    </dependency>

确保在/target文件夹中创建必要的工件。

这种方法的关键是,它将使用“monolambda”模式来支持这些多个端点。基本上,它归结为一个API网关端点,将所有内容代理给quarkus微服务。然而,出于各种原因,我们的用例不需要这样做,因为我们的处理程序遵循最小特权原则是更重要的原则之一具有相同的权限和安全限制?Quarkus lambda处理程序只是AWS lambda运行时进入应用程序的入口点。超过这一点,你做什么完全取决于你自己。因此,您实际上不需要多个Quarkus lambda处理程序。您只需要一个处理程序就可以接收Lambda事件。然后,您可以使用Lambda中的上下文信息,结合类似于模式的命令或策略,将处理路由到应用程序中的其他位置。您必须拥有多个lambda处理程序,这有一个很难理解的原因吗?我知道我可以做到这一点,但是我们当前的策略是利用API网关集成,使用NodeJS运行时输出lambda。因此,假设我在API网关中有一个关于
/pets/{id}
GET
,和一个关于
/pets
POST
,那么它们将在同一部署中与不同的处理程序集成。好处是我们可以在lambda上使用LPP,我们可以在每个端点上使用不同的IAM策略,等等,同时仍然可以在每个服务上使用共享的代码库。我认为使用你所描述的“monolambda”方法意味着我们必须至少放弃其中的一部分。对,re:放弃粒度访问控制。否则,您需要精简Quarkus应用程序,使其成为真正的微服务。
mvn clean install