2017-01-12 46 views

回答

4

这个类中的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); 
    } 
} 
+0

非常感谢的响应。!!!!!!!! 1111 @Jeshan –

+0

如果什么有效载荷是一个复杂的java对象?我们将它转​​换成json字符串吗? – paramupk

+0

是的,你把它串起来。 –

0

您在部署Lambda函数时定义处理程序。只有AWS Lambda服务需要知道您的自定义处理程序是什么。所以处理程序在调用该函数的Java代码中没有任何关联。调用Lambda函数的任何内容只需要知道Lambda函数名称,而不是处理程序名称。

在Java中,您将通过AWSLambdaClient.invoke()方法调用Lambda函数here

1

我跟着下面的代码和刚刚打印从拉姆达

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"); 
    } 
相关问题