【问题标题】:How to create/invoke AWS Lambda functions in Java?如何在 Java 中创建/调用 AWS Lambda 函数?
【发布时间】:2019-07-08 08:59:38
【问题描述】:
我正在实施一个第三方应用程序,以使用 AWS 开发工具包简单地处理 AWS Lambda 的所有功能。我正在使用 JetBrains IntelliJ Idea IDE 进行编码。有人能解释一下如何在 Java 中创建一个 lambda 对象来创建/调用 aws lambda 函数吗?
我提到了documentation,但它没有提供创建 lambda 对象的步骤。
【问题讨论】:
标签:
java
amazon-web-services
maven
intellij-idea
aws-lambda
【解决方案1】:
您不必创建 lambda 对象。 Lambda 函数在不使用时被冻结。这就是为什么全局变量不会丢失数据的原因。您只需发送一个调用调用,AWS 将负责其余的工作。
我认为上述信息很高兴知道。现在你可以在这个link中找到一个调用lambda函数的例子
【解决方案2】:
试试这个类。
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.lambda.AWSLambdaClient;
import com.amazonaws.services.lambda.model.InvocationType;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
import java.nio.charset.Charset;
public class AWSLambdaCaller {
private String accessKey;
private String secretKey;
private String region;
private int maxConnections;
private String functionName;
public AWSLambdaCaller() {
}
/* setter methods */
public void setAccessKey(String pAccessKey) {
accessKey = pAccessKey;
}
public void setSecretKey(String pSecretKey) {
secretKey = pSecretKey;
}
public void setRegion(String pRegion) {
region = pRegion;
}
public void setMaxConnections(int pMaxConnections) {
maxConnections = pMaxConnections;
}
public void setFunctionName(String pFunctionName) {
functionName = pFunctionName;
}
/* getter methods */
public String getAccessKey () {
return accessKey;
}
public String getSecretKey () {
return secretKey;
}
public String getRegion () {
return region;
}
public int getMaxConnections() {
return maxConnections;
}
public String getFunctionName () {
return functionName;
}
public String call() {
AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setMaxConnections(maxConnections);
AWSLambdaClient awsLambdaClient = new AWSLambdaClient(awsCredentials, clientConfiguration);
awsLambdaClient.setRegion(Region.getRegion(Regions.fromName(region)));
InvokeRequest invokeRequest = new InvokeRequest();
invokeRequest.setFunctionName(functionName);
invokeRequest.setInvocationType(InvocationType.RequestResponse);
// invokeRequest.setPayload(jsonBody.toString());
InvokeResult invokeResult = awsLambdaClient.invoke(invokeRequest);
String str = new String(invokeResult.getPayload().array(), Charset.forName("UTF-8"));
return str;
}
}
main() 会是这样的。
AWSLambdaCaller awsLambdaCaller = new AWSLambdaCaller();
awsLambdaCaller.setAccessKey("Your access key");
awsLambdaCaller.setSecretKey("Your secret key");
awsLambdaCaller.setRegion("region");
awsLambdaCaller.setMaxConnections(1100);
awsLambdaCaller.setFunctionName("Your function name");
System.out.println("Calling AWS Lambda function...");
System.out.println("AWS>> " + awsLambdaCaller.call());
请注意,上述代码仅支持不带参数的 lambda 函数。要传递参数,请编辑 invokeRequest。