如何从 JAVA 调用 AWS lambda 函数?
Posted
技术标签:
【中文标题】如何从 JAVA 调用 AWS lambda 函数?【英文标题】:How to call AWS lambda function from JAVA? 【发布时间】:2021-12-17 08:27:29 【问题描述】:我有多个 lambda 函数(get、post ...),我想返回一个 JSON 或 JSON 字符串。如何从不需要任何参数/有效负载的 JAVA 代码中调用“get”(“Get”lambda 返回对象列表)函数?它也返回:
StatusCode: 200,Payload: 敏感数据已编辑,ExecutedVersion: $LATEST
Lambda 具有所需的权限:
lambda:InvokeFunction lambda:InvokeAsync
方法:
public String invokeLambda(String operationName, JSONObject jsonObject) throws JSONException
AWSLambda lambdaClient = AWSLambdaClientBuilder.defaultClient();
InvokeRequest request = new InvokeRequest();
request.withInvocationType(InvocationType.RequestResponse);
request.withFunctionName(operationName)
.withPayload(payload);
InvokeResult invoke = lambdaClient.invoke(request);
return invoke.toString();
【问题讨论】:
【参考方案1】:如果您正在使用AWS SDK 2.0
,您可以像这样调用 lambda 函数
public static void invokeFunction(LambdaClient awsLambda, String functionName)
InvokeResponse res = null ;
try
//Need a SdkBytes instance for the payload
String json = "\"Hello \":\"Paris\"";
SdkBytes payload = SdkBytes.fromUtf8String(json) ;
//Setup an InvokeRequest
InvokeRequest request = InvokeRequest.builder()
.functionName(functionName)
.payload(payload)
.build();
res = awsLambda.invoke(request);
String value = res.payload().asUtf8String() ;
System.out.println(value);
catch(LambdaException e)
System.err.println(e.getMessage());
System.exit(1);
见here
然后,您可以使用 ObjectMapper
或类似的类将 json 字符串解析为对象。
【讨论】:
以上是关于如何从 JAVA 调用 AWS lambda 函数?的主要内容,如果未能解决你的问题,请参考以下文章