在AWS堆栈上运行更多具有不同参数的node.js应用程序

在AWS堆栈上运行更多具有不同参数的node.js应用程序,node.js,amazon-web-services,puppeteer,serverless,Node.js,Amazon Web Services,Puppeteer,Serverless,我有一个node.js应用程序,我想在每天的计划时间用不同的参数运行多次 条件:使用AWS堆栈 示例:每天晚上7点运行。使用不同参数对同一应用程序运行10次 目前,我正在使用一个EC2 pm2的基本设置,使用不同的参数运行node.js应用程序 我想要实现的是使用更多的无服务器基础设施,具有独立的计算能力。我在我的应用程序中使用Puppeter,所以有时在一台机器上共享10个进程是个问题 我正在寻找什么AWS服务最适合我使用(Elastic Beanstalk、ECS、AWS Lambda)的建

我有一个node.js应用程序,我想在每天的计划时间用不同的参数运行多次

条件:使用AWS堆栈

示例:每天晚上7点运行。使用不同参数对同一应用程序运行10次

目前,我正在使用一个EC2 pm2的基本设置,使用不同的参数运行node.js应用程序

我想要实现的是使用更多的无服务器基础设施,具有独立的计算能力。我在我的应用程序中使用Puppeter,所以有时在一台机器上共享10个进程是个问题


我正在寻找什么AWS服务最适合我使用(Elastic Beanstalk、ECS、AWS Lambda)的建议。

如果您想使用ec2实例执行此任务,可以使用cron

sudo apt install cron
您可以在其中安排任务。欲了解更多信息,请访问

但若你们们说你们们希望少使用服务器,那个么你们们可以使用lambdas和cloudwatch,它们会在你们们设置之后触发事件。欲了解更多信息,请访问


Lambda也很便宜。

如果您的应用程序在特定时间后退出,那么无服务器将在这种情况下正常工作

我建议两种选择

  • AWS lambda
如果我们研究fargate,您需要的只是不同的任务定义和所有十几个应用程序的单个Docker映像,此外,您可以使用fargate运行应用程序15分钟以上,这在lambda中是不可能的

所以,您只需以Dockerfile接受
CMD
的方式设计Dockerfile,就可以将一个参数传递给nodejs进程

FROM node:alpine
RUN apk add --no-cache curl
WORKDIR /app
RUN curl -o app.js https://gist.githubusercontent.com/Adiii717/94543c1f87e6db86b55ba3a5a58a2bbc/raw/da0695811b50d70be4c36951e5baa40a051a2dcf/app.js
RUN echo $'#!/bin/sh \n\ 
     node app.js \"${@}\"  ' >> /bin/entrypoint.sh

RUN chmod +x /bin/entrypoint.sh
entrypoint ["entrypoint.sh"]
因此,要基于参数使用此DockFile运行N服务

docker run -it --rm abc app1
docker run -it --rm abc app2
docker run -it --rm abc app3
.
.
.
在任务定义中,您只需通过

"command": ["app1"]

"command": ["app2"]
示例:每天晚上7点运行。使用 每个人都有不同的论点

定义云监视规则以根据时间触发所需的fargate任务

我想在没有进程运行时节省时间


您将只在进程/任务运行时付款。

我使用您提到的第一个选项(ec2 ubuntu机器+cron作业)。我之所以想转向Lambda,是因为我想在没有进程运行的情况下节省时间。感谢您的建议,AWS Fargate看起来像是我的解决方案!这对我帮助很大!另一个看起来适合我的原因是,我的进程持续时间超过15分钟……是的,它适合这样的工作。还有一个问题,如果进程使用redis怎么办。我可以在单独的容器中运行redis并让其他进程使用它吗?如何操作?是的,您可以运行Redis容器,并使用服务发现与Redis连接