Можете ли вы помочь мне перейти на страницу, где вы можете указать пути запроса и параметры строки запроса URL? Мне это очень нужно, но я нигде не вижу этих настроек. Я ожидаю увидеть их в Консоли управления -> Amazon API Gateway -> API -> {my api} -> Этапы -> Настройки, где есть настройки кэша, но это не так.

немного смущает то, как API Gateway и CloudFront работают вместе. В конечном счете, я хочу иметь возможность иметь собственный заголовок и значение, которое будет считаться частью моего ключа кеша. Я знаю, что это можно сделать с помощью белого списка (если я использую CloudFront).

Поэтому, когда я делаю следующий запрос:

GET / pagesRead / 4 Some-Header: fizz

Это возвращает, например, «29 страниц»

Тогда есть сообщение, которое обновляет id 4 до «45 страниц»

Если я сделаю этот запрос

GET / pagesRead / 4 Some-Header: buzz

Теперь он вернет 45 страниц

Но я использую API Gateway, который, очевидно, имеет свой собственный CloudFront за кулисами. Есть ли способ настроить API-шлюз для использования его «закулисного» CloudFront для внесения в белый список моего пользовательского заголовка? Это нужно сделать?

Согласно этой документации:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.htmlПохоже, что я могу просто включить API-кэширование в API-шлюзе, и он будет рассматривать мои заголовки как часть ключа кэша.

Я правильно понимаю? Если все, что я хочу, это чтобы мои заголовки были частью ключа кэша, в чем разница между «Включением API-кэширования» в API-шлюзе и добавлением экземпляра CloudFront поверх API-шлюза и белым списком в CloudFront?

ОБНОВИТЬ:

Я добавил такой заголовок в API Gateway:

Но на GET я получаю устаревшие данные из кеша.

GET / pagesRead / 4 test-header: buzz

Ответы на вопрос(2)

Вы также можете по желанию добавить,

RequestPath
QueryStringParameters
Http Headers

Например.,

http://example.com/api/{feature} /? queryparam = queryanswer [с заголовком customheader = value1]

Выше URL дает вам возможность кэшировать на основе,

Просто URL без PathParameters:http://example.com/api/

При желании включить PathParameter:http://example.com/api/{характерная черта}/

При желании включить QueryStrings:http://example.com/api/{характерная черта}/?queryparam = queryanswer

При желании можно включить заголовки Http: вы можете включить обычный заголовок, такой как User-Agent или пользовательские заголовки.

Независимо от того, какой режим кэширования вы используете в API-шлюзе, вы также можете использовать его в CloudFront.

Также кочистить кеш, в ваш http ответ отправитьCache-Control: max-age = 0

Надеюсь, это поможет.

 steve-o13 апр. 2018 г., 17:39
Можете ли вы помочь мне перейти на страницу, где вы можете указать пути запроса и параметры строки запроса URL? Мне это очень нужно, но я нигде не вижу этих настроек. Я ожидаю увидеть их в Консоли управления -> Amazon API Gateway -> API -> {my api} -> Этапы -> Настройки, где есть настройки кэша, но это не так.
Решение Вопроса

что API Gateway на самом деле не использует кэш CloudFront. CloudFront предоставляет некоторые фронт-сервисы длявсе API шлюза API Конечные точки API, оптимизированные по краям¹, но кэширование не является одним из них, основываясь на следующем:

API Gateway обеспечивает кэширование, создавая выделенный экземпляр кэша.

...а также...

Вы не должны использоватьX-Cache заголовок из ответа CloudFront, чтобы определить, обслуживается ли ваш API из вашего экземпляра кэша шлюза API.

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html

Можно создать каскад конечной точки Edge Optimized API Gateway за созданным вами дистрибутивом CloudFront, но это не лишено определенных неудобств. Задержка несколько увеличивается, так как вы проходите через несколько систем. Учитывая эту конфигурацию,CloudFront-Is-*-Viewer а такжеCloudFront-Viewer-Country Заголовки и, возможно, любое представление о IP-адресе клиента будет недопустимым, поскольку развертывание API-шлюза будет видеть атрибуты дополнительного дистрибутива CloudFront, который находится перед ним, а не реального клиента.X-Forwarded-For все равно будет прав, но с ним нужно обращаться осторожно, потому что он будет содержать один дополнительный прыжок, который нужно будет правильно обработать.

Для приложения, в котором вы хотите разместить API-шлюз за собственным дистрибутивом CloudFront, используйте одну из новых региональных конечных точек для развертывания этапа API.

он будет рассматривать мои заголовки как часть ключа кеша.

Вы должны явно настроить ключ кеша, основываясь на цитируемом документе, но да, кеш API-шлюза будет затем кешировать ответы на основе значения этого заголовка и других атрибутов в ключе кеша.

¹ оптимизированные по краю конечные точки, API Gateway теперь имеетдва разных вида конечных точек, Оригинальный дизайн теперь называетсякрая оптимизированыи новая опция называетсярегиональный, Региональные конечные точки не используют внешние службы от CloudFront и могут предлагать меньшую задержку при доступе из EC2 в том же регионе AWS. Все существующие конечные точки были классифицированы как оптимизированные по краям, когда были развернуты новые региональные возможности. С региональной конечной точкойCloudFront-* Заголовки не присутствуют в запросе, если вы не используете свой собственный дистрибутив CloudFront и не вносите эти заголовки в белый список для пересылки к источнику.

 Michael - sqlbot16 июн. 2018 г., 19:04
@SangminKim, когда вы подключаетесь к конечной точке, оптимизированной для пограничного уровня, IP-адреса в ответе DNS зависят от вашего местоположения и ведут к соседнему пограничному краю CloudFront, где сеанс TLS с клиентом завершается. CloudFront анализирует запрос для определения внутренней цели, затем находит доступное (простое / повторно используемое, сохраняемое в живых) соединение или создает новое, обратно к API-шлюзу в регионе, где развернут API, и отправляет запрос. Эти соединения осуществляются через сети, управляемые AWS, а не через общедоступный Интернет, что оптимизирует их задержку и производительность.
 Michael - sqlbot16 июн. 2018 г., 19:09
CloudFront предоставляет аналогичные возможности S3 дляS3 ускорение передачи особенность, которая также последовательно показываетX-Cache: Miss from CloudFront так же, как API-шлюз, потому что CloudFront предоставляет услуги, которые не включают в себя кэширование. В обоих случаях заказчик ничего не настраивает в CloudFront и не оплачивает CloudFront счета за сопутствующее использование инфраструктуры CloudFront.
 Michael - sqlbot30 сент. 2017 г., 06:13
С каждым запросом вам нужно изменить значение, сопровождающее заголовок, чтобы получить новый ответ.
 JAck2829 сент. 2017 г., 22:29
Я отредактировал свой пост тем, что добавил в APIG. Тем не менее, он не добавляет заголовок к моему ключу кэша, так как я продолжаю получать устаревшие данные.
 JAck2830 сент. 2017 г., 12:48
Я попробовал это в почтальоне, и это не сработало. Дай мне попробовать снова. Я много играл с этим, поэтому, возможно, я повторил значение в почтальоне. Я дам вам знать, если это сработает. Благодарю.

Ваш ответ на вопрос