[英]How to call AWS lambda function from JAVA?
I have multiple lambda functions (get, post ...) and I want to return a JSON or JSON String.我有多个 lambda 函数(get、post ...),我想返回一个 JSON 或 JSON 字符串。 How can I call "get" ("Get" lambda returns list of objects) function from JAVA code, which doesn't require any parameters/payload?
如何从不需要任何参数/有效负载的 JAVA 代码调用“get”(“Get”lambda 返回对象列表)函数? Also It returns:
它也返回:
{StatusCode: 200,Payload: Sensitive Data Redacted ,ExecutedVersion: $LATEST}
{StatusCode: 200,Payload: Sensitive Data Redacted ,ExecutedVersion: $LATEST}
Lambdas have required permissions: Lambda 具有所需的权限:
- lambda:InvokeFunction
拉姆达:调用函数
- lambda:InvokeAsync
拉姆达:调用异步
Method:方法:
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();
}
If you are working with AWS SDK 2.0
you can call a lambda function like this如果您使用的是
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);
}
}
You can then parse the json string into an object, by using a class like ObjectMapper
or similar.然后,您可以使用
ObjectMapper
或类似的类将 json 字符串解析为对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.