Слой кеша резольвера AWS AppSync?

Каков общий шаблон, по которому резолверы AWS AppSync кэшируют свои выходные данные?

Я пишу API, который обрабатывает данные, которые со временем не изменятся. API возвращает содержимое книг (название, автора, главы и т. д.).

Моя первоначальная идея заключалась в том, чтобы преобразователь запрашивал некоторую полезную нагрузку JSON у CloudFront. Если запрошенный документ отсутствует в CloudFront, CloudFront вызовет функцию Lambda, которая будет знать, как получить документ JSON (из базы данных), а затем поместить полезную нагрузку в CloudFront. Концептуально это кажется странным, но решило бы проблему кеширования.

Пример

const query = `{
   bookById(bookID: "468c95") {
      bookID
      title
      author
      chapters {
         title
         text
      }
   }
}`;

const book = query(query);
// book => {
//   bookId: "468c95",
//   title: "AppSync for Normal People",
//   author: null,
//   chapters: [
//      {
//         title: "Chapter 1: Dawn of Men",
//         text: [
//            "It was the best of times, it was the worst of times.",
//            "..."
//         ]
//      },
//      { ... }
//   ]
// }
}

Другими словами, вызов фиктивного метода query запустит некоторый преобразователь в AppSync. Этот преобразователь всегда будет возвращать одни и те же данные. Таким образом, почему бы не кэшировать данные, с которыми работает распознаватель (я думаю, вы можете видеть это как Вход для распознавателя), в CloudFront, чтобы их можно было обслуживать из памяти, вместо того, чтобы использовать какое-то внутреннее хранилище (например, базу данных) или вызвать лямбду ?!

Кажется, что распознаватели AppSync не совсем подходят для этой задачи, но у меня есть неполное представление о том, как вы используете AppSync. Обратите внимание, что описанное вами решение не является кешированием резольвера выход - это технически кеширование резольвера Вход. Кроме того, вы не можете хранить вещи «в» CloudFront - это сквозной кеш для контента с отдельного исходного сервера, такого как S3 или API-шлюз, или что-то, работающее в EC2 или где-либо еще в Интернете.

Michael - sqlbot 19.09.2018 13:40

Да, именно это я имел в виду под «кешированием в CloudFront». Решатель попытается получить объект из заранее определенного места. Если это разрешится в 404, то CloudFront вызовет Lambda, которая будет извлекать данные откуда-то и возвращать этот объект с правильными заголовками кеша, так что при следующем запросе CloudFront будет иметь этот объект в своем хранилище.

rodrigo-silveira 19.09.2018 21:25

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

Tinou 20.09.2018 00:56

Добавил пример ...

rodrigo-silveira 20.09.2018 08:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
712
0

Другие вопросы по теме