Как создать и развернуть GraphQL API в AWS с бессерверной системой за считанные минуты

вступление

Функция как услуга (FaaS) стала очень популярной за последние несколько лет благодаря своей простоте. С помощью всего нескольких строк кода мы можем запустить приложение, не беспокоясь об инфраструктуре. Вы также платите только за потребляемые ресурсы, что может снизить затраты. Это делает FaaS идеальным кандидатом для любой функции, которая может потребоваться периодически запускать в течение короткого промежутка времени. Например, мы используем его для создания отчетов о продажах каждое утро в моей компании.

В этой статье я покажу вам, как быстро создать GraphQL API с бессерверным и развернуть его на AWS.

Вы можете найти код этого руководства здесь:



Предпосылки

  • Аккаунт AWS с доступом к IAM и Lambda
  • Serverless установлен на вашем компьютере
  • Node.js v8.x или новее
  • Git v2.14.1 или новее

Создание сервера GraphQL

Начнем с создания сервера GraphQL с помощью Apollo GraphQL. Давайте создадим новый каталог проекта и установим несколько пакетов.

mkdir serverless-orders-api && cd serverless-orders-api
git init
npm init -y
npm install apollo-server-lambda
npm install -D serverless-offline

Мы устанавливаем serverless-offline в качестве зависимости разработчика, чтобы помочь нам разрабатывать и тестировать наше приложение локально.

Настройте обработчик GraphQL

Откройте проект в вашем любимом редакторе исходного кода и измените файл handler.js, чтобы он выглядел так, как показано ниже. Мы импортируем преобразователи и схему в этот файл, чтобы создать новый сервер Apollo. Затем мы экспортируем его как наш обработчик GraphQL.

Настроить схему

Файл схемы определяет, как наши данные выглядят и их тип. Он также предоставляет доступные нам запросы, в данном случае только getOrders. Создайте файл schema.js в новой папке с именем graphql в корне проекта.

Настройте резольверы

Resolvers предоставляет инструкции о том, как обрабатывать наши запросы GraphQL и возвращать данные. Создайте resolvers.js внутри папки graphql.

Здесь вы обычно вызываете некоторую базу данных для получения данных. Затем вы должны массировать данные и вернуть их. Чтобы не усложнять этот урок, мы просто возвращаем некоторые статические данные.

Настройте файл severless.yml

Измените файл serverless.yml, чтобы он выглядел следующим образом. Обратите внимание, что мы добавили плагин serverless-offline, чтобы мы могли протестировать наше приложение локально перед развертыванием в AWS.

Тестирование локально

Теперь, когда у нас есть все необходимое, давайте протестируем наш сервер GraphQL API локально. В терминале выполните следующую команду в корневом каталоге проекта.

serverless offline

Посетите http: // localhost: 3000 / dev / graphql в своем браузере и протестируйте наш запрос.

Развернуть в AWS

Для развертывания в AWS вам потребуется учетная запись AWS с доступом к IAM и Lambda. Если вам нужна помощь в настройке учетных данных AWS, см. Эту документацию.

Развернуть на AWS так же просто, как запустить одну команду serverless deploy. За кулисами Serverless framework выполняет всю тяжелую работу по настройке инфраструктуры.

serverless deploy

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

Давайте протестируем только что созданную конечную точку AWS в Postman.

Если вам нужно удалить приложение из AWS, просто запустите serverless remove, и Serverless Framework удалит и очистит все за вас.

Резюме

В этой статье мы рассмотрели настройку GraphQL API без использования сервера. Мы рассмотрели, как разрабатывать и тестировать наше приложение локально. Мы также стали свидетелями того, как легко было развернуть на AWS без сервера. Если вы хотите узнать больше о Severless и его возможностях, я настоятельно рекомендую прочитать их документацию.



Надеюсь, вам понравилась эта статья и она была для вас полезной! Ваше здоровье! 🍻

Я пишу эти статьи для развлечения в свободное время. Если вам понравилась эта статья, оставляйте свои лайки и комментарии ниже! Вы можете подписаться на меня в Medium и Twitter. Спасибо за поддержку!

Примечание от JavaScript In Plain English:

Мы всегда заинтересованы в продвижении качественного контента. Если у вас есть статья, которую вы хотели бы отправить в JavaScript In Plain English, отправьте нам электронное письмо по адресу [email protected] с вашим именем пользователя Medium, и мы добавим вас в качестве автора.