【问题标题】:How do I deploy Node.js code to run on an interval without exceeding free deployment tiers如何在不超过免费部署层的情况下部署 Node.js 代码以按时间间隔运行
【发布时间】:2021-01-06 23:35:27
【问题描述】:

我正在尝试部署一个将定期执行代码的节点应用程序(我希望每 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);

【问题讨论】:

  • 查看 AWS Lambda。您可以在需要它们并且它们不需要运行服务器时触发它们。注意冷启动。他们可能需要一些时间。
  • 我将深入研究 AWS Lambda 并按计划触发它们。谢谢!

标签: node.js amazon-web-services heroku amazon-ec2 deployment


【解决方案1】:

使用 EC2,无论您是否使用它,您肯定会按资源的正常运行时间付费。虽然每月 750 小时的免费小时基本上是每月 1 个免费层实例。

现在我推荐 Lambda,因为它看起来很简单。有了 Lambda,你就有了1M free requests per month and 400,000 GB-seconds of compute time per month.。但 Lambda 本身无法按计划运行,您需要为此使用 AWS CloudWatch Events。

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2016-08-22
    • 2014-10-22
    相关资源
    最近更新 更多