簡體   English   中英

Java:如何從 API Gateway 獲取 AWS Lambda 事件的請求對象?

[英]Java : How to get a Request object for your AWS Lambda event from API Gateway?

有什么方法可以獲取JAVA中的 lambda 函數中的值? 我可以看到nodejs中有 event.params 但我無法在 Java 中找到類似的方法。

我可以在 API Gateway Content-Type 中使用它,

{
   "name": "$input.params('name')"
}

但,

我們如何在Java中的 AWS Lambda 中獲取此輸入?

來自 Java 中 Lambda 函數處理程序的文檔(強調我的):

處理程序的一般語法如下:

 outputType handler-name(inputType input, Context context) { ... }

inputType – 第一個處理程序參數是處理程序的輸入,它可以是事件數據(由事件源發布)或您提供的自定義輸入,例如字符串或任何自定義數據對象。 為了使 AWS Lambda 成功調用此處理程序,必須使用可序列化為輸入參數的數據類型的輸入數據調用該函數。

所以這將在您的input參數中可用。

代碼示例:復制代碼段並自己實現

 import com.amazonaws.services.lambda.runtime.Context;
 import com.amazonaws.services.lambda.runtime.LambdaLogger;
 import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;

 public class ClassName implements RequestStreamHandler {
 @Override
 public void handleRequest(InputStream inputStream, OutputStream outputStream, 
 Context context) throws IOException {
     BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
     JSONObject response = new JSONObject();
     JSONParser parser = new JSONParser();

     try {
         JSONObject event = (JSONObject) parser.parse(reader);

         //your code here. Use the jsonObject as you wish

         response.put("isBase64Encoded", false);
         response.put("statusCode", 200);
         response.put("headers", headerJson);
         response.put("body", "");
     } catch (Exception ex) {
         ex.printStackTrace();
         response.put("statusCode", int);
         response.put("exception", ex);
     }

     OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8");
     writer.write(response.toString());
     writer.close();
 }
}

對於響應對象 JSON 格式,請點擊鏈接: https ://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/

暫無
暫無

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

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