我是新来的AWS拉姆达我已经创建了处理lambda函数如何从Java代码调用AWS lambda函数/处理器
example.Orders::orderHandler
这是自定义处理程序,现在我想从调用此我的Java程序我如何需要这个。
我是新来的AWS拉姆达我已经创建了处理lambda函数如何从Java代码调用AWS lambda函数/处理器
example.Orders::orderHandler
这是自定义处理程序,现在我想从调用此我的Java程序我如何需要这个。
这个类中的2个方法应该能够帮助你。一个是如果你需要传递一个有效载荷,另一个是如果有效载荷是空的。
但是,您需要记住一件事:函数名称可能与处理程序不同(后者在这里是example.Orders::orderHandler
)。处理程序名称是而不是在调用其功能时使用。
所以,如果你与函数名“myFunction的”是幕后打电话给你example.Orders::orderHandler
处理,那么这就是你会传递到下面的方法运行什么功能。
import com.amazonaws.regions.Regions;
import com.amazonaws.services.lambda.AWSLambdaAsyncClient;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
class LambdaInvoker {
public void runWithoutPayload(String region, String functionName) {
runWithPayload(region, functionName, null);
}
public void runWithPayload(String region, String functionName, String payload) {
AWSLambdaAsyncClient client = new AWSLambdaAsyncClient();
client.withRegion(Regions.fromName(region));
InvokeRequest request = new InvokeRequest();
request.withFunctionName(functionName).withPayload(payload);
InvokeResult invoke = client.invoke(request);
System.out.println("Result invoking " + functionName + ": " + invoke);
}
}
您在部署Lambda函数时定义处理程序。只有AWS Lambda服务需要知道您的自定义处理程序是什么。所以处理程序在调用该函数的Java代码中没有任何关联。调用Lambda函数的任何内容只需要知道Lambda函数名称,而不是处理程序名称。
在Java中,您将通过AWSLambdaClient.invoke()
方法调用Lambda函数here。
我跟着下面的代码和刚刚打印从拉姆达
AWSLambdaAsyncClient lambdaClient = new AWSLambdaAsyncClient();
lambdaClient.withRegion(Region.getRegion(Regions.US_WEST_2));
InvokeRequest invokeRequest = new InvokeRequest();
invokeRequest.setInvocationType("RequestResponse"); // ENUM RequestResponse or Event
invokeRequest.withFunctionName("FUNCTION NAME").withPayload(payload);
InvokeResult invoke = lambdaClient.invoke(invokeRequest);
try {
// PRINT THE RESPONSE
String val = new String(invoke.getPayload().array(), "UTF-8");
System.out.println("Response==> " + val);
} catch (Exception e) {
System.out.println("error");
}
非常感谢的响应。!!!!!!!! 1111 @Jeshan –
如果什么有效载荷是一个复杂的java对象?我们将它转换成json字符串吗? – paramupk
是的,你把它串起来。 –