#node.js #amazon-web-services #heroku #amazon-ec2 #deployment
#node.js #amazon-веб-сервисы #heroku #amazon-ec2 #развертывание
Вопрос:
Я пытаюсь развернуть узловое приложение, которое будет периодически выполнять код (я надеялся выполнять его раз в 1-5 минут). Этот код выполнит несколько вызовов API на разные платформы и направит некоторые облегченные данные json (в основном текст и числа).
Я надеялся развернуть этот проект с использованием Heroku, Amazon EC2 или Amazon Lambda и хотел бы оставаться в пределах их свободных уровней, и я не уверен, как мой код будет взаимодействовать с их серверами.
Если я разверну этот код для запуска с использованием setTimeout, означает ли это, что я запрашиваю, чтобы серверы всегда были «включены», и с меня, по сути, будет взиматься плата за 100% время безотказной работы? Я мог видеть, что это проблема, поскольку Heroku предоставляет только 550 бесплатных часов в месяц, а Amazon EC2 предоставляет 750 бесплатных часов в месяц.
Код довольно легкий и должен выполняться только на мгновение, поэтому было бы обидно, если бы сервер работал 24/7 всего несколько секунд фактического использования в день. Как я могу наилучшим образом развернуть этот код для периодического запуска? Есть ли другая служба, которую я могу использовать здесь?
Кроме того, ниже приведены основные сведения о том, как будет выглядеть мой код. Пожалуйста, дайте мне знать, если есть что-то явно очевидное, чего мне не хватает, что может быть проблемой.
const axios = require('axios');
const asana = require('asana');
const { Dropbox } = require('dropbox');
function apiCallOne() {
...
}
function apiCallTwo() {
...
}
function runMyCode() {
apiCallOne();
apiCallTwo();
...
}
setTimeout(runMyCode, 1000);
Комментарии:
1. Посмотрите на AWS Lambda. Вы можете запускать их, когда они необходимы, и для них не требуется запуск сервера. Помните о холодных запусках. Это может занять некоторое время.
2. Я подробнее рассмотрю AWS Lambda и их запуск по расписанию. Спасибо!
Ответ №1:
С EC2 вы обязательно будете получать плату за время безотказной работы ресурса, независимо от того, используете вы его или нет. Хотя 750 бесплатных часов в месяц — это, по сути, 1 бесплатный экземпляр уровня в месяц.
Теперь я бы рекомендовал Lambda, так как это кажется довольно простым кодом. А с Lambda у вас есть 1 Млн бесплатных запросов в месяц и 400 000 ГБ-секунд вычислительного времени в месяц. Но сама по себе Lambda не может выполняться по расписанию, для этого вам нужно будет использовать события AWS CloudWatch.