如何从 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 函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 laravel 调用现有的 AWS Lambda 函数?
使用 AWS SDK for Java 调用 AWS Lambda 函数时如何检索 context.done() 消息?
如何从 lambda 调用 IAM 授权的 AWS ApiGateway 端点?
如何从账户 A 中的 Lambda(VPC 中的 Lambda)调用账户 B 中的 AWS Lambda 函数(VPC 中的这个 Lambda)