如何部署Node.js代码以在不超过空闲部署层的情况下按间隔运行

如何部署Node.js代码以在不超过空闲部署层的情况下按间隔运行,node.js,amazon-web-services,heroku,amazon-ec2,deployment,Node.js,Amazon Web Services,Heroku,Amazon Ec2,Deployment,我正在尝试部署一个节点应用程序,它将定期执行代码(我希望每1-5分钟执行一次)。这段代码将对不同的平台进行几个API调用,并路由一些轻量级json数据(主要是文本和数字) 我希望使用Heroku、AmazonEC2或AmazonLambda部署这个项目,并希望留在他们的免费层中,我不确定我的代码将如何与他们的服务器交互 如果我将此代码部署为使用setTimeout运行,这是否意味着我请求服务器始终处于“打开”状态,并且我将收取100%正常运行时间的费用?我认为这是一个问题,因为Heroku每月只

我正在尝试部署一个节点应用程序,它将定期执行代码(我希望每1-5分钟执行一次)。这段代码将对不同的平台进行几个API调用,并路由一些轻量级json数据(主要是文本和数字)

我希望使用Heroku、AmazonEC2或AmazonLambda部署这个项目,并希望留在他们的免费层中,我不确定我的代码将如何与他们的服务器交互

如果我将此代码部署为使用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);

使用EC2,无论您是否在使用它,您肯定会从资源的正常运行时间中获得费用。虽然每月750个自由小时基本上是每月1个自由层实例


现在我推荐Lambda,因为它似乎是一个非常简单的代码。还有兰姆达,你有。但是Lambda本身不能按计划运行,因此需要使用AWS CloudWatch事件。

查看AWS Lambda。您可以在需要时触发它们,而不需要运行服务器。注意冷启动。它们可能需要一些时间。我将更多地了解AWS Lambda,并按计划触发它们。非常感谢。