Создавайте, развертывайте и управляйте мобильными и веб-приложениями, которым требуются данные в режиме реального времени или в автономном режиме, с помощью AWS AppSync, полностью управляемого бессерверного сервиса GraphQL. Ваши приложения могут безопасно получать доступ к данным, хранящимся в таких сервисах AWS, как Amazon DynamoDB, Amazon Elasticsearch Service и AWS Lambda, и работать с ними, создавая API-интерфейсы GraphQL с помощью AppSync.

Одним из основных преимуществ использования AppSync является то, что он позволяет создавать масштабируемые и быстро реагирующие приложения без необходимости управления сложной серверной инфраструктурой. AppSync обрабатывает за вас все базовые сетевые протоколы и протоколы безопасности, позволяя вам сосредоточиться на улучшении взаимодействия с пользователем.

Помимо обеспечения доступа к данным в режиме реального времени и в автономном режиме, AppSync предлагает несколько других функций, которые делают его мощным инструментом для создания современных приложений. Эти функции включают в себя:

⦿ Преобразование GraphQL. Этот инструмент помогает быстро и легко создавать API-интерфейсы GraphQL, предоставляя набор готовых настраиваемых преобразователей GraphQL.

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

⦿ Обработка данных. AppSync предоставляет множество мощных возможностей для обработки данных, в том числе возможность создавать, обновлять и удалять данные, а также выполнять сложные запросы и изменять данные.

⦿ Безопасность. AppSync интегрируется с AWS Identity and Access Management (IAM), AWS Cognito и API Keys для обеспечения точного контроля доступа и защиты ваших данных от несанкционированного доступа.

Некоторые другие ключевые функции безопасности AWS AppSync включают в себя:

  1. Шифрование данных. Все данные шифруются при передаче и хранении с использованием стандартных алгоритмов шифрования.
  2. Управление идентификацией и доступом (IAM). IAM можно использовать для управления доступом к вашим ресурсам и данным AWS AppSync.
  3. Конечные точки VPC. Вы можете использовать конечные точки VPC для безопасного доступа к своим API AppSync из Amazon VPC, не раскрывая свои API в общедоступном Интернете.
  4. Разрешения на уровне ресурсов. Вы можете использовать разрешения на уровне ресурсов для управления доступом к определенным операциям и полям GraphQL.
  5. Аутентификация Amazon Cognito. Вы можете использовать Amazon Cognito для аутентификации пользователей и авторизации доступа к API AppSync.
  6. Поддержка OAuth 2.0. Вы можете использовать OAuth 2.0 для аутентификации пользователей и авторизации доступа к API AppSync.
  7. Федерация удостоверений. Вы можете использовать федерацию удостоверений для аутентификации пользователей с помощью сторонних поставщиков удостоверений, таких как Google или Facebook.

Схема

В AppSync схема определяет форму ваших данных и операции, которые можно с ними выполнять. Схема написана на GraphQL, языке для запросов и изменения данных. Схема состоит из типов, полей и связей между этими типами.

Резольверы

Резолверы — это функции, которые разрешают запрос GraphQL к определенному источнику данных. Когда клиент отправляет запрос к GraphQL API, запрос перенаправляется на соответствующий преобразователь для обработки. Преобразователь извлекает запрошенные данные из источника данных и возвращает их клиенту.

Мутации

AppSync также позволяет определять мутации — операции, изменяющие данные. Мутации работают так же, как и запросы, но требуют, чтобы преобразователь обрабатывал изменение данных и возвращал обновленные данные клиенту.

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

Например, рассмотрим схему с типом «Post» и полями «title» и «content». Чтобы получить данные для определенного сообщения, вы можете определить преобразователь, который запрашивает таблицу DynamoDB для сообщения с определенным идентификатором. Преобразователь вернет заголовок и содержание поста клиенту в ответ на запрос. Мутации помогают внести любые изменения в заголовок или пост.

🎥 Демо

Во-первых, давайте создадим конечную точку GraphQL для получения заголовка и контента из публикации DynamoDB.

Шаг 1: Войдите в консоль и перейдите в AppSync

Шаг 2. Выберите Создать с помощью мастера и создайте модель. model должен содержать поля, которые вы хотите сохранить и извлечь из таблицы DynamoDB.

Шаг 3. Нажмите Создать и на следующем экране назовите свой API «My AppSync App API». Нажмите Создать. Консоль AppSync развернет вашу таблицу DynamoDB и создаст схему AppSync. Схема включает автоматически сгенерированные запросы, мутации и подписки.

Шаг 4. Слева вы можете увидеть список вкладок, таких как Схема, Источники данных, Функции, Запросы, Кэширование, Настройка и Мониторинг.

  • Схема. Схема определяет типы, поля и операции (запросы, изменения и подписки), которые клиенты могут выполнять в API. Схема написана на языке определения схемы GraphQL (SDL) и используется для проверки клиентских запросов и генерации кода на стороне клиента.
  • Источники данных: AppSync позволяет подключаться к различным источникам данных, таким как таблицы DynamoDB, функции Lambda и домены Elasticsearch, для извлечения данных и управления ими в вашем API. Вы также можете использовать встроенные источники данных AppSync для аутентификации и авторизации.
  • Функции. AppSync позволяет создавать пользовательские функции Lambda для выполнения дополнительной логики или обработки данных до или после извлечения данных из источника данных. Эти функции могут запускаться определенными событиями, такими как клиентский запрос или мутация.
  • Запросы: клиенты могут использовать операцию запроса GraphQL для получения данных из API. AppSync автоматически сопоставляет запрос клиента с соответствующим источником данных и разрешает любые поля в запросе, определенные в схеме.
  • Кэширование. AppSync позволяет включить кэширование для определенных запросов, чтобы повысить производительность вашего API. Кэшированные данные хранятся в кэше в памяти и автоматически становятся недействительными при обновлении данных в источнике данных.
  • Настройка и мониторинг: AppSync предоставляет множество настроек и параметров мониторинга, которые позволяют настраивать поведение вашего API и отслеживать его использование. Вы можете настроить ведение журнала и трассировку для отладки и устранения неполадок, настроить кэширование и пул соединений, а также использовать CloudWatch для мониторинга метрик и потоков журналов.

Давайте перейдем к схеме и найдем схему, преобразователи и запрос, чтобы получить заголовок и содержимое из DynamoDB.

type MyModelType {
	id: ID!
	title: String
	content: String
}

type Query {
	getMyModelType(id: ID!): MyModelType
}

Справа вы можете видеть, что Resolvers настроены на таблицу Dynamo.

Теперь, чтобы запросить таблицу по идентификатору, мы можем перейти на вкладку queries и запустить приведенный ниже фрагмент кода, чтобы получить информацию.

query DemoQuery {
  getMyModelType(id: "123") {
    id
    content
    title
  }
}

Конечная точка использует ключ API для аутентификации запросов. С этим ключом API и URL-адресом мы также можем использовать Postman, чтобы попытаться выполнить запрос.

Перейдите на вкладку «Настройки», чтобы получить учетные данные.

Сейчас в Почтальоне..

Введите скопированный URL-адрес и ключ API, а также запрос в поле Body.

В этой демонстрации мы увидели, как GraphQL извлекает данные из DynamoDB. Точно так же у вас может быть другой преобразователь, такой как лямбда-функция, для обработки запроса.

Защита конечной точки AppSync..

Брандмауэр веб-приложений AWS (WAF) — это служба безопасности, целью которой является защита веб-приложений от распространенных веб-уязвимостей, которые могут повлиять на доступность, поставить под угрозу безопасность или потреблять чрезмерные ресурсы. Чтобы защитить конечную точку AppSync с помощью WAF, вы можете создать правило WAF и связать его с конечной точкой AppSync. Правило можно настроить так, чтобы блокировать или разрешать трафик на основе определенных условий, таких как IP-адреса или заголовки запросов. Это может помочь защититься от распространенных веб-атак, таких как SQL-инъекция, межсайтовый скриптинг и другие. Кроме того, вы можете использовать WAF для ограничения скорости запросов к конечной точке AppSync, чтобы предотвратить атаки типа «отказ в обслуживании».

✍️ Об авторе:

Мохамед Фаяз – консультант по данным и искусственному интеллекту, а также технический блогер, который пишет и рассказывает о таких темах, как Разработка программного обеспечения, Аналитика больших данных и Облачная инженерия. Свяжитесь с ним в LinkedIn или следите за его обновлениями в Twitter.

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу