2016-07-28 1 views
2

Как создать макет интеграции в API шлюза принять запрос:AWS API Gateway: Использование издеваться интеграции для перенаправления

/products/{product}/bigFile.zip?platform={platform}&version={version} 

И реагировать с переадресацией на:

http://xyz.cloudfront.net/{product}/{platform}/{version}.zip 

I «Я попытался изменить шаблоны сопоставления запросов и ответов, но я не уверен, как они связаны, так как AWS-документы по макету интеграции довольно скудны. Я могу изменить код состояния HTTP, но я не могу получить заголовок Location для заполнения на основе параметров запроса.

Более широкий контекст (на случай, если я решил проблему XY), заключается в том, что я создаю API, используя AWS API Gateway. Одна из конечных точек API обслуживает большие файлы, которые не будут соответствовать пределу времени ответа 10s от шлюза API, поэтому я хочу перенаправить на другую ссылку CDN.

+0

Тайм-аут для API Gateway уже не более 10 секунд, он был увеличен до 29 секунд (оставаясь под таймаутом CloudFront за 30 секунд) –

ответ

1

Для интеграции с MOCK подумайте о шаблоне запроса интеграции, который определяет код состояния (например, {"statusCode": 200}) как код состояния макета для бэкэнд. Исключая этот аспект, остальные компоненты одинаковы. Вам нужно будет определить ответ метода для кода статуса перенаправления 3xx и включить любые заголовки, которые вы хотите отправить в ответ. Затем на странице «Ответ на интеграцию» вы можете установить значения для заголовков как статические значения, используя одинарные кавычки. Так что было бы куда определять местоположение заголовка с тем, что перенаправление URL является, как «» https://other.endpoint.com

Edit: Временное решение с помощью функции Lambda эхо

Настройка функции лямбда-эхо полезной нагрузки. Следующая карта строки запроса в теле запроса следующим образом:

Шаблон:

{ 
    "q": $input.params('foo') 
} 

Считая функцию лямбда Echos же полезную нагрузку назад, вы бы установить источник отображения заголовка в ответе интеграции как:

integration.response.body.q 
+0

У меня есть запрос и ответ метода правильно, но это ответ интеграции I ' у меня возникли проблемы с. Я не могу использовать статическое значение для заголовка, как вы сказали, потому что я хочу установить путь в заголовке на основе строк запроса запроса. Чтобы уточнить мой вопрос, могу ли я установить некоторые переменные в шаблоне запроса интеграции и получить к ним доступ в заголовке ответа интеграции? – Eric

+0

К сожалению, вы не можете в настоящий момент сопоставлять параметры запроса с параметрами ответа напрямую. Если вы не использовали интеграцию с MOCK, вы можете обойти проблему, повторив параметр querystring через бэкэнд, а затем сопоставляя значение из полезной нагрузки ответа с заголовком ответа. Я добавлю это к нашему отставанию, чтобы напрямую изучить отображение. В противном случае, если вы настроите простую функцию лямбда для повторения параметра, вы можете достичь функциональности. –

+0

любое обновление на этом @JackKohn? – anarnold

Смежные вопросы