Как сделать недействительным кеш AWS APIGateway - PullRequest
0 голосов
/ 05 июля 2018

У нас есть сервис, который inserts в dynamodb определенных значений. Ради этого вопроса, скажем, его key:value пара, т.е. customer_id:customer_email. Вставки происходят не так часто, и после того, как вставки сделаны, этот конкретный ключ не обновляется.

Мы создали клиентскую библиотеку, которая с customer_id будет извлекать customer_email из dynamodb.

Учитывая, что customer_id данные статичны, мы подумали о том, чтобы добавить кеш в таблицу, но мы не уверены, что произойдет в следующем сценарии использования

.
  1. client_1 использует нашу библиотеку для извлечения customer_email для customer_id = 2.
  2. Клиент не существует, поэтому API-шлюз возвращает not found
  3. APIGateway будет кешировать этот ответ
  4. Для любых последующих вызовов этот кэшированный ответ будет отправлен
  5. Теперь другая система вставляет customer_id = 2 со своим идентификатором электронной почты. Эта система не знает, был ли этот ответ ранее кэширован или нет. Он даже не знает, что любая другая система извлекла эти конкретные данные. Как мы можем сделать недействительным кеш для этого конкретного customer_id, когда он вставляется в динамо

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы должны отправить подписанный запрос на конечную точку API с заголовком Cache-Control: max-age=0.

Если это полезно для людей, вот код .NET для создания запроса:

https://gist.github.com/secretorange/905b4811300d7c96c71fa9c6d115ee24

0 голосов
/ 06 июля 2018

Вы смотрели на это https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html? Существует способ сделать недействительным весь кэш или конкретную запись в кэше

...