AWS Lambda Trigger代码; Java的

时间:2017-06-21 18:37:50

标签: java amazon-web-services aws-lambda

因此,在很多AWS Lambda教程中,它教会我们编写几行代码,将其打包并上传。 enter image description here

是否有一个代码示例,您可以使用ARN或其他东西在当前项目中触发/调用lambda?我当前的项目非常庞大,我不能/不可能将功能包上传到AWS Lambda,我只想在我当前的代码中触发它。

我找到的一个链接是:https://aws.amazon.com/blogs/developer/invoking-aws-lambda-functions-from-java/但到目前为止它对我不起作用。

如果已经被问过,请道歉;我没有发现任何对我有用的东西。

编辑:

我的问题是lambda函数只被调用,因为我已经将它作为JAR上传(即它不是我主项目的一部分,我只是把它作为测试),但是我想把代码编写到在我的主项目中调用。我不知道如何在我的Java代码中调用lambda。就像@MaxPower说的那样,也许我错了,这是不可能的。

1 个答案:

答案 0 :(得分:2)

我所做的是使用@LambdaFunction注释创建一个接口。

public interface Foo {

@LambdaFunction(functionName = "LambdaName")
OutputObject doFoo(InputObject inputObject);

}

然后在要调用lambda的类中,我创建一个Lambda客户端

private final Foo fooCaller;

RunTest() {
    ProfileCredentialsProvider lambdaCredentialsProvider = new ProfileCredentialsProvider("lambda");
    AWSLambdaClientBuilder builder = AWSLambdaClientBuilder.standard().withCredentials(lambdaCredentialsProvider);
    builder.setRegion("us-east-1");
    AWSLambda awsLambda = builder.build();

    LambdaInvokerFactory.Builder lambdaBuilder = LambdaInvokerFactory.builder();
    lambdaBuilder.lambdaClient(awsLambda);

    fooCaller = lambdaBuilder.build(Foo.class);
}

然后当你想调用lambda

fooCaller.doFoo();