簡體   English   中英

如何從 JAVA 調用 AWS lambda 函數?

[英]How to call AWS lambda function from JAVA?

我有多個 lambda 函數(get、post ...),我想返回一個 JSON 或 JSON 字符串。 如何從不需要任何參數/有效負載的 JAVA 代碼調用“get”(“Get”lambda 返回對象列表)函數? 它也返回:

{StatusCode: 200,Payload: Sensitive Data Redacted ,ExecutedVersion: $LATEST}

Lambda 具有所需的權限:

  • 拉姆達:調用函數
  • 拉姆達:調用異步

方法:

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();
}

如果您使用的是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);
        }
    }

這里

然后,您可以使用ObjectMapper或類似的類將 json 字符串解析為對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM