настройка CORS шлюза api

Я пытаюсь настроить aws CORS из командной строки, используя aws-cli в сценарии развертывания. Я создал ресурс POST со следующей командой perl to shell. Я пытаюсь установить реакцию интеграции на '*' так же, как при включении ядер.

aws apigateway put-method-response \\ --region "$region" \\ --rest-api-id "$api_id" \\ --resource-id "$resource_id" \\ --http-method "POST" \\ --status-code 200 \\ --response-models '{"application/json":"Empty"}' \\ --response-parameters '{"method.response.header.Access-Control-Allow-Origin":true}'

Когда я запускаю следующую команду, чтобы установить значение интеграции.

aws apigateway put-integration-response \\ --region "$region" \\ --rest-api-id "$api_id" \\ --resource-id "$resource_id" \\ --http-method "$method" \\ --status-code 200 \\ --response-template '{"application/json":"Empty"}' \\ --response-parameters \\ '{"method.response.header.Access-Control-Allow-Origin": "'*'"}'

Я получаю следующую ошибку.

Ошибка клиента (BadRequestException) произошла при вызове операции PutIntegrationResponse: Указано недопустимое выражение сопоставления: Результат проверки: предупреждения: [], ошибки: [Указано недопустимое выражение сопоставления: *]

Может ли кто-нибудь сказать мне, к чему на самом деле относится эта ошибка, или даже лучший способ сделать сценарий развертывания шлюза api.


person Josh    schedule 05.02.2016    source источник


Ответы (2)


В консоли управления API Gateway есть приятная функция «Включить CORS», которую вы, возможно, видели. Что касается репликации с использованием CLI, я бы предложил использовать функцию консоли, после чего наблюдать за конфигурацией и использовать те же параметры в запросах CLI.

Ошибка, которую вы видите, должна быть вызвана неправильным экранированием одинарных кавычек для значения '*', потому что просто символ * не будет действительным. Также, чтобы указать на еще одну потенциальную проблему, ввод в --response-templates '{"application / json": "Empty"}' действителен, но не интерпретируется так же, как --response-models в объекте ответа метода . Это значение установит для тела ответа значение «Пусто» для всех вызовов API, использующих этот интеграционный ответ. Чтобы выполнить сквозную пересылку, просто не устанавливайте значение --response-templates

person jackko    schedule 05.02.2016
comment
Когда вы включаете cors через console. Он добавляет в конечную точку метод параметров. Хотите знать, действительно ли это необходимо? Мне никогда не приходилось добавлять метод параметров в веб-приложение node.js. - person Andy N; 09.09.2020

Проблема заключалась в правильном способе ухода от персонажей.

--response-parameters '{"method.response.header.Access-Control-Allow-Origin":"'"'*'"'"}'

По-видимому, это было больше связано с знанием правильного способа форматирования JSON.

person Josh    schedule 05.02.2016