简体   繁体   English

如何在Java中创建/调用AWS Lambda函数?

[英]How to create/invoke AWS Lambda functions in Java?

I'm implementing a third party application to simply handle all the functionalities of AWS Lambda using AWS SDK. 我正在实现一个第三方应用程序,以使用AWS开发工具包简单地处理AWS Lambda的所有功能。 I'm using JetBrains IntelliJ Idea IDE for coding. 我正在使用JetBrains IntelliJ Idea IDE进行编码。 Can someone explain how to create a lambda object in Java to create/invoke aws lambda functions? 有人可以解释如何在Java中创建Lambda对象以创建/调用AWS Lambda函数吗?

I referred to documentation but it doesn't provide the steps to create a lambda object. 我参考了文档 ,但未提供创建lambda对象的步骤。

You don't have to create a lambda object. 您不必创建lambda对象。 Lambda functions are frozen when not in use. Lambda函数在不使用时被冻结。 That why global variables don't lose their data. 这就是为什么全局变量不会丢失数据的原因。 You just have to send a invoke call, AWS will take care of the rest. 您只需要发送一个调用调用,AWS就会处理其余的工作。

I thought the above info is good to know. 我认为以上信息很高兴知道。 Now you can find an example to invoke a lambda function in this link 现在,您可以在此链接中找到一个示例来调用lambda函数

Try with this class. 试试这个课程。

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() will be like this. 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());

Note that above-explained code supports only for lambda functions with no parameters. 请注意,上述代码仅支持不带参数的lambda函数。 To pass the parameters, edit invokeRequest. 要传递参数,请编辑invokeRequest。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM