Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Serverless DevOps: Управление инфраструктурой

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

В этом видео

  • Плюсы и минусы бессерверных вычислений:

    • Абстракция
    • Эластичность
    • Эффективная стоимость
    • Ограниченный жизненный цикл
    • Stable and predictable
    • Cold starts
    • Monitoring and debugging
    • Vendor lock-in
  • Из чего состоят бессерверные вычисления?

    • Functions as a Service (FaaS)
    • Serverless databases and storage
    • Event streaming and messaging
    • API Gateways

Самостоятельная работа

Lambda — сервис Amazon, который позволяет создавать простые бессерверные приложения. Особенности и преимущества Lambda описаны на странице продукта.

В данном задании используется Serverless.com — фреймворк, который позволяет создавать serverless-приложения не только на Amazon, но и на других облачных провайдерах. В данном задании задеплоим на AWS Lambda бота для Telegram, который возвращает сообщение, введённое пользователем. Подобная задача — это лишь пример того, что можно сделать, например среди предлагаемых функций ``из коробки'' Amazon Lambda предлагает обработку изображений (сжатие, создание превью).

Яндекс Клауд предлагает аналогичные функци для работы с бессерверными приложениями. Если по каким-то причинам вы не сможете использовать Serverless.com и AWS, вы сможете всё сделать и на Яндексе. Serverless позволяет это сделать более автоматизированно.

  • Создайте аккаунт в AWS, если у вас его ещё нет

  • Зарегистрируйтесь в Telegram, если у вас нет аккаунта

  • Подготовьте окружение для работы с Serverless. Вам потребуется NodeJS 12+ версии и глобально установленная утилита

npm install -g serverless
  • Создайте IAM пользователя в AWS

    • Войдите в IAM https://console.aws.amazon.com/iam/home#/home

    • AWS access type — Programmatic access

    • Выберите Attach existing policies directly, permissions - AdministratorAccess

    • Теги по желанию

    • Сохраните Access key ID и Secret access key, они требуются для доступа к AWS через утилиту

  • Создайте бота в Telegram — @BotFather. Отправьте боту @BotFather сообщение /newbot, чтобы начать создание бота. После ответов на несколько вопросов бот пришлет токен, который используется для бота

  • Склонируйте или форкните репозиторий и выполните установку зависимостей командой make install

  • Для деплоя нам потребуются созданные ключи. Их можно экспортировать или использовать в команде деплоя

export AWS_ACCESS_KEY_ID=<key_id>
export AWS_SECRET_ACCESS_KEY=<access_key>
cd echobot
make deploy

# либо
AWS_ACCESS_KEY_ID=<key_id> AWS_SECRET_ACCESS_KEY=<access_key> make deploy
  • Если все выполнено корректно, наше приложение будет задеплоено в AWS Lambda, и оно будет отображаться в интерфейсе (в каждом регионе отображаются свои приложения). Вывод сообщит информацию о приложении, пример:

Serverless: Stack update finished...
Service Information
service: hexlet-telegram-echo-bot
stage: dev
region: us-east-1
stack: hexlet-telegram-echo-bot-dev
resources: 11
api keys:
  None
endpoints:
  POST - https://ogarnze2r3.execute-api.us-east-1.amazonaws.com/dev/webhook
functions:
  webhook: hexlet-telegram-echo-bot-dev-webhook
layers:
  None
  • Чтобы бот отправлял запросы на наш бекенд, необходимо изменить вебхук бота. Выполните команду:

make set-webhook BOT_TOKEN=<token> URL=<webhook_endpoint>
  • В AWS Lambda используется переменная окружения для подключения к Telegram. Необходимо указать эту переменную. Войдите в AWS Lambda, на вкладке Applications найдите приложение. На вкладке будут созданные ресурсы для этого приложения. Код исполняется с помощью function. Откройте ресурс WebhookLambdaFunction на вкладке Configuration откройте раздел Environment variables и добавьте переменную BOT_TOKEN

  • Отправьте сообщение вашему боту. Если все сделано правильно, то он будет возвращать сообщение, которое ему отправили

Serverless.com — это обёртка над другими сервисами. Код бота, который был сформирован и задеплоен попал на AWS. Serverless создал несколько ресурсов используя сервисы Amazon:

  • Lambda Function для выполнения кода

  • S3 Bucket для деплоя исходного кода

  • ApiGateway для получения запросов от Telegram по HTTP

  • CloudWatch для выполнения логирования


Дополнительные материалы

  1. AWS — Lambda
  2. http://serverless.com — фреймворк для создания serverless-приложений

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

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