В этом видео
Плюсы и минусы бессерверных вычислений:
- Абстракция
- Эластичность
- Эффективная стоимость
- Ограниченный жизненный цикл
- 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 для выполнения логирования
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты