调用、列出和删除 Lambda 函数 - 适用于 Java 的 Amazon SDK 1.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 Java 的 Amazon SDK 1.x 版本自 2024 年 7 月 31 日起已进入维护模式,并将于 2025 年 12 月 31 日终止支持。我们建议您迁移到 Amazon SDK for Java 2.x 以继续获得新功能、可用性改进和安全更新。

调用、列出和删除 Lambda 函数

本部分提供使用适用于 Java 的 Amazon SDK 对 Lambda 服务客户端进行编程的示例。要了解如何创建 Lambda 函数,请参阅如何创建 Amazon Lambda 函数

调用函数

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

要将负载数据传递给函数,请调用 InvokeRequest 对象的 withPayload 方法并指定 JSON 格式的字符串,如以下代码示例中所示。

导入

import com.amazonaws.auth.profile.ProfileCredentialsProvider; 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; import com.amazonaws.services.lambda.model.ServiceException; import java.nio.charset.StandardCharsets;

代码

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

String functionName = args[0]; InvokeRequest invokeRequest = new InvokeRequest() .withFunctionName(functionName) .withPayload("{\n" + " \"Hello \": \"Paris\",\n" + " \"countryCode\": \"FR\"\n" + "}"); InvokeResult invokeResult = null; try { AWSLambda awsLambda = AWSLambdaClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(Regions.US_WEST_2).build(); invokeResult = awsLambda.invoke(invokeRequest); String ans = new String(invokeResult.getPayload().array(), StandardCharsets.UTF_8); //write out the return value System.out.println(ans); } catch (ServiceException e) { System.out.println(e); } System.out.println(invokeResult.getStatusCode());

请参阅 Github 上的完整示例。

列出函数

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

导入

import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.lambda.AWSLambda; import com.amazonaws.services.lambda.AWSLambdaClientBuilder; import com.amazonaws.services.lambda.model.FunctionConfiguration; import com.amazonaws.services.lambda.model.ListFunctionsResult; import com.amazonaws.services.lambda.model.ServiceException; import java.util.Iterator; import java.util.List;

代码

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

ListFunctionsResult functionResult = null; try { AWSLambda awsLambda = AWSLambdaClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(Regions.US_WEST_2).build(); functionResult = awsLambda.listFunctions(); List<FunctionConfiguration> list = functionResult.getFunctions(); for (Iterator iter = list.iterator(); iter.hasNext(); ) { FunctionConfiguration config = (FunctionConfiguration)iter.next(); System.out.println("The function name is "+config.getFunctionName()); } } catch (ServiceException e) { System.out.println(e); }

请参阅 Github 上的完整示例。

删除函数

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

导入

import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.lambda.AWSLambda; import com.amazonaws.services.lambda.AWSLambdaClientBuilder; import com.amazonaws.services.lambda.model.ServiceException; import com.amazonaws.services.lambda.model.DeleteFunctionRequest;

代码

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

String functionName = args[0]; try { AWSLambda awsLambda = AWSLambdaClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(Regions.US_WEST_2).build(); DeleteFunctionRequest delFunc = new DeleteFunctionRequest(); delFunc.withFunctionName(functionName); //Delete the function awsLambda.deleteFunction(delFunc); System.out.println("The function is deleted"); } catch (ServiceException e) { System.out.println(e); }

请参阅 Github 上的完整示例。