Я пытался развернуть лямбда-функцию, а затем сделать ее доступной через API-шлюз.Моя java-функция находится в JAVA, и это документация, которой я руководствовался при создании простой лямбда-функции AWS в JAVA:
https://docs.aws.amazon.com/lambda/latest/dg/java-handler-io-type-pojo.html
Вот так выглядит мой обработчик функций:
package lambda;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import lambda.axon.Path;
public class shortestPath implements RequestHandler<RequestClass, ResponseClass>{
public ResponseClass handleRequest(RequestClass request, Context context){
String inputString = request.inputString;
int steps = Path.stepsTo(inputString);
return new ResponseClass(steps);
}
}
Вот этот класс запросов:
package lambda;
public class RequestClass {
String inputString;
public String getInputString() {
return inputString;
}
public void setInputString(String inputString) {
this.inputString = inputString;
}
public RequestClass(String inputString) {
this.inputString = inputString;
}
public RequestClass() {
}
}
И вот этот класс ответов:
package lambda;
public class ResponseClass {
int steps;
public ResponseClass(int steps) {
this.steps = steps;
}
public ResponseClass() {
}
public int getSteps() {
return steps;
}
public void setSteps(int steps) {
this.steps = steps;
}
}
Я развертываю это на aws и настраиваю шлюз API AWS для его запуска, всеработает нормально, когда я достигаю конечной точки, заданной шлюзом API, когда я использую почтальон (https://www.getpostman.com/)
Но попытка того же через браузер выдает ошибку CORS:
Access to XMLHttpRequest at 'https://<hash>execute-api.us-east-1.amazonaws.com/dev' from origin 'http://localhost:4200' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.
Я попытался включить CORS в консоли шлюза API и затем повторно развернуть его:
Этот пост Stackoverflow ( Настроить заголовки ответов CORS на AWS Lambda? ) говорит, что если я использую лямбда-прокси, у меня должны быть заголовки в самом ответе обработчика, я не уверен, что такое прокси, но как я могу это сделать с моей текущей реализацией функции Lambda, то есть включить пользовательские заголовки в свой ответ