【问题标题】:AWS Lambda Trigger in code; Java代码中的 AWS Lambda 触发器;爪哇
【发布时间】:2019-07-04 03:38:23
【问题描述】:

所以在很多AWS Lambda教程中,它教我们写几行代码,打包,上传。

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

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

抱歉,如果已被询问;我没有发现任何对我有用的东西。

编辑:

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

【问题讨论】:

  • 您能更详细地解释您面临的问题吗?您的评论“最好不要将函数包上传到AWS Lambda,我只想在我当前的代码中触发它” 完全没有意义。您要么想将 Lambda 函数的代码上传到 AWS Lambda 服务,要么根本不想使用 AWS Lambda 服务。
  • 我的问题是我不想通过 AWS Lambda 服务控制台上传我的 lambda 函数,但我确实想使用该服务(通过 Java 代码)。感谢您的反馈,这有帮助吗?
  • 这没有任何意义。如果您不将代码上传到 Amazon Lambda 服务,您打算调用什么代码?
  • 嗯好吧,这就是我需要帮助的原因;也许我错过了一些核心概念。我将在我的原始帖子中进行编辑。
  • @MaxPower 完成。我想你的意思是,必须将一些代码上传到 AWS 服务

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


【解决方案1】:

我所做的是使用@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();

【讨论】:

  • 我可以私信你吗?我想我对第二个感到更加困惑。
  • 当然!问吧!
猜你喜欢
  • 2019-01-11
  • 2020-09-26
  • 1970-01-01
  • 2015-02-07
  • 2020-05-17
  • 2020-07-28
  • 2018-02-16
  • 2018-11-08
  • 2017-06-07
相关资源
最近更新 更多