Dan*_*zyk 5 java annotations amazon-web-services aws-lambda
我非常喜欢在这篇博客文章中描述的从Java调用AWS lambdas的方法.
但是,如果我有3个环境(int/test/live),并且每个环境都有一个略有不同的名称(通过cloudformation创建),我想不出有一种方法可以拥有一个接口,并调用lambda根据环境不同的名称.
我正在使用Spring,所以如果我可以做类似的事情:
@Component
interface MyLambdas {
@Value("${name}")
String name;
@LambdaFunction(name = name)
String callMyLambda(String stuff);
}
//and then
service = LambdaInvokerFactory.build(MyLambdas.class, lambda);
Run Code Online (Sandbox Code Playgroud)
但显然我不能在接口上做这个,这不会是一个bean!有没有办法做到这一点?我觉得我碰到了一堵砖墙......
现在我称lambda为"旧方式":
String readLambdaName = "My_Lambda";
ObjectMapper objectMapper = new ObjectMapper();
AWSLambdaClient lambda = new AWSLambdaClient();
lambda.configureRegion(Regions.EU_WEST_1);
String json = objectMapper.writeValueAsString(request);
InvokeRequest req = new InvokeRequest()
.withFunctionName(readLambdaName)
.withPayload(json);
InvokeResult res = lambda.invoke(req);
int result = objectMapper.readTree(res.getPayload().array()).asInt();
Run Code Online (Sandbox Code Playgroud)
显然,这里和那里有一些异常处理.这不是一个很好的解决方案......
对于此后的任何人,我已经在aws-sdk github上提交了一个问题和一个解决方案.希望类似于我的解决方案的东西将进入SDK的下一个版本...
我通过使用“lambdaFunctionNameResolver”覆盖函数名称来解决它。
//my lambda interface
public interface MyLambdaService {
@LambdaFunction
ApiGatewayProxyResponse execute(ApiGatewayRequest bit);
}
Run Code Online (Sandbox Code Playgroud)
这是创建 lambda 客户端的方法:
MyLambdaService lambdaService = LambdaInvokerFactory.builder().lambdaClient(AWSLambdaClientBuilder.defaultClient())
.lambdaFunctionNameResolver((method, annotation, config) -> "ENV_SPECIFIC_FUNCTION_NAME").build(MyLambdaService.class);
Run Code Online (Sandbox Code Playgroud)
或者
我的方法调用“generalConfigHelper.getString(“function_name”))”根据环境(dev / qa / prod)找出正确的函数名称。
MyLambdaService lambdaService = LambdaInvokerFactory.builder().lambdaClient(AWSLambdaClientBuilder.defaultClient())
.lambdaFunctionNameResolver((method, annotation, config) -> generalConfigHelper.getString("function_name")).build(MyLambdaService.class);
Run Code Online (Sandbox Code Playgroud)
官方aws问题:https://github.com/aws/aws-sdk-java/pull/603
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |