Как включить заголовки CORS для лямбда-интеграции в AWS API Gateway, используя API Gateway API? - PullRequest
0 голосов
/ 15 февраля 2019

Я разветвил Lambada Framework и начал изменять его, чтобы добавить поддержку заголовков CORS.Lambada использует API-интерфейс шлюза API [sic] для настройки шлюза API.

В качестве подтверждения концепции я вручную проверил необходимые изменения в консоли API-шлюза, а затем приступил к поиску соответствующих шагов вкод автоматизации.Я начал с этого простого изменения на org.lambadaframework.aws.ApiGateway (для краткости импорт исключен):

enter image description here

Я успешно перестроил фреймворк.К сожалению, когда я пытаюсь развернуть новую Lambda, используя ее, я получаю:

[ОШИБКА] Не удалось выполнить цель org.lambadaframework: lambada-maven-plugin: 0.0.6-cors: deploy (default)) в проекте MyApp: Исключительная ситуация при развертывании: указано недопустимое выражение сопоставления: Результат проверки: предупреждения: [], ошибки: [Указано недопустимое выражение сопоставления: Access-Control-Allow-Origin] (Служба: mazonApiGateway; Код состояния: 400; ОшибкаКод: BadRequestException; Идентификатор запроса: 16509b8e-30eb-11e9-bc6b-f5d1416f03b5) -> [Помощь 1]

Что может привести к сбою ?!Я выполнил те же шаги вручную (через консоль ApiGateway), и там все работает нормально.В конечном счете, как я могу включить заголовки CORS?

Аналогичный вопрос, используя CLI: api gateway Настройка CORS

1 Ответ

0 голосов
/ 20 февраля 2019

Не требуется устанавливать шаблон ответа интеграции в этой ситуации, когда вы задаете параметры ответа интеграции.

Если вы хотите использовать ответ интеграции для изменения ответа, вы задаете тип контента в качестве ключа ишаблон ответа в качестве значения. 2

Скажем, вы хотите изменить ответы типа контента "application/json", ваша реализация будет выглядеть так:

/* replace the existing getResponseTemplate() method with this */
private Map<String, String> getResponseTemplate() {
    Map<String, String> params = new HashMap<String, String>();
    params.put(
        "application/json",
        "$input.json(\"$\")\n#set($context.responseOverride.header.Access-Control-Allow-Origin = \"*\")");
    return params;
}
...