调用、列出和删除 AWS Lambda 函数 - 适用于 Java 的 AWS 开发工具包版本 2
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

调用、列出和删除 AWS Lambda 函数

此部分提供使用适用于 Java 的 AWS 开发工具包 2.0 对 Lambda 服务客户端进行编程的示例。

调用 Lambda 函数

可以通过创建 LambdaClient 对象并调用其 invoke 方法来调用 Lambda 函数。创建 InvokeRequest 对象可指定其他信息,例如函数名称和要传递给 Lambda 函数的负载。函数名称显示为 arn:aws:lambda:us-west-2:555556330391:function:HelloFunction。可以通过查看 AWS 控制台中的函数来检索值。

要将有效负载数据传递给函数,请创建包含信息的 SDKBytes 对象。例如,在以下代码示例中,请注意传递给 Lambda 函数的 JSON 数据。

导入

import software.amazon.awssdk.services.lambda.LambdaClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.lambda.model.InvokeRequest; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.services.lambda.model.InvokeResponse; import software.amazon.awssdk.services.lambda.model.ServiceException;

代码

以下代码示例演示如何调用 Lambda 函数。

/* Function names appear as arn:aws:lambda:us-west-2:335556330391:function:HelloFunction you can retrieve the value by looking at the function in the AWS Console */ String functionName = args[0]; InvokeResponse res = null ; try { Region region = Region.US_WEST_2; LambdaClient awsLambda = LambdaClient.builder().region(region).build(); //Need a SdkBytes instance for the payload SdkBytes payload = SdkBytes.fromUtf8String("{\n" + " \"Hello \": \"Paris\",\n" + " \"countryCode\": \"FR\"\n" + "}" ) ; //Setup an InvokeRequest InvokeRequest request = InvokeRequest.builder() .functionName(functionName) .payload(payload) .build(); //Invoke the Lambda function res = awsLambda.invoke(request); //Get the response String value = res.payload().asUtf8String() ; //write out the response System.out.println(value); } catch(ServiceException e) { e.getStackTrace(); }

请参阅 GitHub 上的完整示例

列出 Lambda 函数

构建一个 LambdaClient 对象并调用其 listFunctions 方法。此方法返回一个 ListFunctionsResponse 对象。可以调用此对象的 functions 方法来返回 FunctionConfiguration 对象的列表。可以遍历该列表来检索有关函数的信息。例如,以下 Java 代码示例说明如何获取每个函数名称。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.lambda.LambdaClient; import software.amazon.awssdk.services.lambda.model.ListFunctionsResponse; import software.amazon.awssdk.services.lambda.model.FunctionConfiguration; import software.amazon.awssdk.services.lambda.model.ServiceException; import java.util.Iterator; import java.util.List;

代码

以下 Java 代码示例演示如何检索函数名称的列表。

ListFunctionsResponse functionResult = null ; try { Region region = Region.US_WEST_2; LambdaClient awsLambda = LambdaClient.builder().region(region).build(); //Get a list of all functions functionResult = awsLambda.listFunctions(); List<FunctionConfiguration> list = functionResult.functions(); for (Iterator iter = list.iterator(); iter.hasNext(); ) { FunctionConfiguration config = (FunctionConfiguration)iter.next(); System.out.println("The function name is "+config.functionName()); } } catch(ServiceException e) { e.getStackTrace(); }

请参阅 GitHub 上的完整示例

删除 Lambda 函数

构建一个 LambdaClient 对象并调用其 deleteFunction 方法。创建一个 DeleteFunctionRequest 对象并将该对象传递给 deleteFunction 方法。此对象包含要删除的函数的名称等信息。函数名称显示为 arn:aws:lambda:us-west-2:555556330391:function:HelloFunction。可以通过查看 AWS 控制台中的函数来检索值。

导入

import software.amazon.awssdk.services.lambda.LambdaClient; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.lambda.model.DeleteFunctionRequest; import software.amazon.awssdk.services.lambda.model.ServiceException;

代码

以下 Java 代码演示如何删除 Lambda 函数。

String functionName = args[0]; try { Region region = Region.US_WEST_2; LambdaClient awsLambda = LambdaClient.builder().region(region).build(); //Setup an DeleteFunctionRequest DeleteFunctionRequest request = DeleteFunctionRequest.builder() .functionName(functionName) .build(); //Invoke the Lambda deleteFunction method awsLambda.deleteFunction(request); System.out.println("Done"); } catch(ServiceException e) { e.getStackTrace(); }

请参阅 GitHub 上的完整示例