我是新來的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
是的,你把它串起來。 –