Как мне выполнить развертывание Node.js код для запуска с интервалом, не превышающим свободные уровни развертывания

#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.