AWS lambda 上的 Spring Cloud Function 中的多个函数

问题描述 投票:0回答:2

我有一个 Spring Cloud Function 应用程序,具有两个功能:

@Component
public class MyFunctionOne implements Function<Object, Boolean> {

    @Override
    public Boolean apply(Object o) {
        return true;
    }
}

@Component
public class MyFunctionTwo implements Function<Object, Boolean> {

    @Override
    public Boolean apply(Object o) {
        return true;
    }
}

我的项目依赖项中有

spring-cloud-starter-function-web
spring-cloud-function-adapter-aws

我想分别打电话给

MyFunctionOne
MyFunctionTwo

我可以通过两种方式实现本地运行。我可以通过调用 localhost:8080/myFunctionOne 直接调用函数(因为我使用的是

spring-cloud-starter-function-web
)来执行此操作。或者,我可以通过调用 localhost:8080/functionRouter 并在 myFunctionOne http 标头中提供
spring.cloud.function.definition
来使用
Function Routing
功能。这工作正常,我可以分别触发
MyFunctionOne
MyFunctionTwo

我已将该模块部署到 AWS Lambda。如何动态提供

spring.cloud.function.definition
?根据 documentation 我可以使用
org.springframework.cloud.function.adapter.aws.FunctionInvoker
作为 AWS Lambda 处理程序。或者,我也可以定义自己的
SpringBootStreamHandler
。但是,似乎无法动态定义
spring.cloud.function.definition

有没有办法在 Spring Cloud Function 中选择部署到 AWS lambda 的函数?

spring lambda spring-cloud-function
2个回答
2
投票

因此,我们在 AWS 上的路由方面遇到了一些问题,正如我们所说,该问题正在得到解决。您可以关注此问题 - https://github.com/spring-cloud/spring-cloud-function/issues/698

无论如何,我们将在下周初发布新版本(3.1.3-RELEASE),其中将包括修复程序、示例和文档以解决您所描述的问题


0
投票

是的,您可以通过向 AWS Lambda 函数添加

SPRING_CLOUD_FUNCTION_DEFINITION
环境变量来配置要使用的函数。

例如

SPRING_CLOUD_FUNCTION_DEFINITION=myFunctionOne

在 AWS 控制台中,您可以在配置 > 环境变量下执行此操作。

在执行期间,Spring 读取环境变量并相应地路由事件。

© www.soinside.com 2019 - 2024. All rights reserved.