【发布时间】:2020-04-23 19:21:21
【问题描述】:
我有一个由 AWS Api Gateway 调用的 Java Lambda 函数。 Lambda 函数在请求正文中接受 PolicyNo 并返回相同的 PolicyNo 作为响应。下面是 Lambda 代码。
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
public class AssuranceDataRequestHandler implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent apiGatewayProxyRequestEvent, Context context) {
APIGatewayProxyResponseEvent apiGatewayProxyResponseEvent = new APIGatewayProxyResponseEvent();
try {
LambdaLogger logger = context.getLogger();
final AmazonCloudWatch cw = AmazonCloudWatchClientBuilder.defaultClient();
apiGatewayProxyRequestEvent.getPathParameters();
String requestString = apiGatewayProxyRequestEvent.getBody();
logger.log("API Gateway requestString : " + requestString);
JSONParser parser = new JSONParser();
JSONObject requestJsonObject = (JSONObject) parser.parse(requestString);
String policyNo = null;
if (requestJsonObject != null) {
if (requestJsonObject.get("policyNo") != null) {
policyNo = requestJsonObject.get("policyNo").toString();
}
}
PolicyNo policyNoBo = new PolicyNo();
policyNoBo.setPolicyNo();
ObjectMapper mapper = new ObjectMapper();
try {
responseMessage = mapper.writeValueAsString(policyNoBo);
/// responseMessage = new JSONObject(salesVideoResponse).toJSONString();
System.out.println("ResultingJSONstring = " + responseMessage);
//System.out.println(json);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
generateResponse(apiGatewayProxyResponseEvent, responseMessage);
} catch (ParseException e) {
e.printStackTrace();
}
return apiGatewayProxyResponseEvent;
}
private void generateResponse(APIGatewayProxyResponseEvent apiGatewayProxyResponseEvent, String requestMessage) {
apiGatewayProxyResponseEvent.setHeaders(Collections.singletonMap("timeStamp", String.valueOf(System.currentTimeMillis())));
apiGatewayProxyResponseEvent.setStatusCode(200);
apiGatewayProxyResponseEvent.setBody(requestMessage);
}
}
我需要将此实现更改为负载均衡器,下面是 URL,我需要从 url 中获取 PolicyNo。
https://XXXXXXX/api/hk/health/policy/v1/policies/{policyNo}/coverage/benefit/
总之,我需要将我的 Lambda 函数转换为从负载均衡器调用。
【问题讨论】:
标签: java amazon-web-services aws-lambda aws-api-gateway aws-load-balancer