在 AWS EC2 上运行三个"connected"脚本



我有三个脚本:第一个和第三个用R编写,第二个用Python编写。

第一个脚本的输出是第二个脚本的输入,其输出是第三个脚本的输出来。

输入和输出是搜索关键字或短语。

例如,第一个脚本的输出为Hello,然后第二个脚本将单词转换为olleH,第三个脚本将字母转换为大写:OLLEH

我的问题是如何连接这些脚本,并让它们在AWS上自动运行,而无需我的干预。命令是什么?如何保存第一个脚本的输出,并充当第二个脚本的输入,等等

我会启动一个sh脚本(或在Windows机器上启动bat(。然后使用脚本的返回值作为下一个脚本的输入。所以类似于:

SET var1 = Rscript script1.R
SET var2 = py script2.py $var1
SET var3 = Rscript script3.R $ $var2
echo $var3

当然,您需要将脚本更改为使用您提交的输入。

我从未使用过AWS,所以我对此并不熟悉,但这似乎是一个工作流管理系统可以解决这些问题。看看蛇牌或nextflow。有了这些工具,你可以很容易地(在你习惯了之后(做你描述的事情。按顺序(也可以并行(运行相互依赖的脚本/工具。

您可以使用AWS步骤函数来实现您的目标。对于Python部件,您可以使用AWS Lambda任务,对于R部件-AWS ECS任务,并相应地编排数据流。

https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html

对于命令,我不会指望收到全面的响应——在每种情况下,工作流都很复杂,而且非常独立,但我建议通过某种IaC解决方案(如CloudFormation或AWS CDK(来定义它们,并将其保持在git以下。

https://docs.aws.amazon.com/cdk/api/latest/docs/aws-stepfunctions-readme.html

最新更新