【问题标题】:Invoke AWS Lambda function from AWS java SDK从 AWS java SDK 调用 AWS Lambda 函数
【发布时间】:2018-05-11 14:07:31
【问题描述】:

enter image description here 是否可以从 aws 发布订阅示例 java 代码中调用 aws lambda 函数?我们可以从我们的 java 代码中调用 lambda 函数吗?如果是,那怎么办?

【问题讨论】:

  • 先尝试,如果遇到挑战,请特别提及
  • 我不知道从哪里开始我的 lambda 已准备好并且来自 aws java 的 pub/sub 示例代码已准备好我不知道我应该如何从我的代码中触发我的 lambda 函数.

标签: aws-lambda aws-sdk


【解决方案1】:

从 Java 调用 AWS Lambda 函数

import com.amazonaws.regions.Regions;
import com.amazonaws.services.lambda.AWSLambda;
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
// ...
// (1) Define the AWS Region in which the function is to be invoked
Regions region = Regions.fromName("us-east-1");
// (2) Instantiate AWSLambdaClientBuilder to build the Lambda client
AWSLambdaClientBuilder builder = AWSLambdaClientBuilder.standard()
                                    .withRegion(region);
// (3) Build the client, which will ultimately invoke the function
AWSLambda client = builder.build();
// (4) Create an InvokeRequest with required parameters
InvokeRequest req = new InvokeRequest()
                           .withFunctionName("myFunctionName")
                           .withPayload("{ ... }"); // optional
// (5) Invoke the function and capture response
InvokeResult result = client.invoke(req);
// (6) Handle result
...

上面会同步调用Lambda;但是,您也可以使用 Java 期货或回调进行异步调用。

使用访问密钥和秘密密钥调用 上述示例在调用函数时将利用 DefaultAWSCredentialsProviderChain 来利用环境变量、EC2 实例配置文件等。虽然这通常是最佳实践,但在某些情况下您可能需要提供访问和密钥。为此,我们只需要对上面的代码做一点小改动:

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
// (1a) Instantiate credentials
BasicAWSCredentials credentials = new 
  BasicAWSCredentials("myAccessKey", "mySecretKey");
// (2) Modify to leverage credentials
AWSLambdaClientBuilder builder = AWSLambdaClientBuilder.standard()
  .withCredentials(new AWSStaticCredentialsProvider(credentials));                                     
  .withRegion(region);

【讨论】:

  • 非常感谢,这将从我的代码本身调用 lambda 我正在发送我的代码的屏幕截图实际上我是新手,如果我能解决这个问题,这将非常有帮助,谢谢跨度>
  • 是的,希望如此,请您指导我在代码中添加的位置,这是一个普通的 pub/sub aws sdk java 示例代码。
  • 这就是你如何处理 InvokeResult result = client.invoke(req);
  • Region、AWSLambda 和所有这些都是我们需要正确定义的类,因为我无法导入它
  • 信用到期时给予信用:medium.com/@joshua.a.kahn/…
猜你喜欢
  • 2021-07-25
  • 2020-02-24
  • 1970-01-01
  • 2021-12-17
  • 2017-10-03
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多