[英]Passing variables between EC2 instances in multi-step AWS data pipeline
我有一个管道设置,其中有3个主要阶段:
1)从压缩文件中输入内容,然后在s3中解压缩该文件。 对每个文件运行一些基本验证以确保其完整性,请转到步骤2
2)在单独的EC2实例上启动2个同时处理任务(此步骤的并行化为我们节省了很多时间,因此出于效率考虑,我们需要它)。 每个EC2实例将对s3中在步骤1中解压缩的某些文件运行数据处理步骤,每个实例所需的文件是不同的。
3)两个同步过程都完成后,启动另一个EC2实例进行最终数据处理。 完成此操作后,运行清理作业以从s3中删除解压缩的文件,仅保留原始zip文件。
因此,我们遇到的问题之一是,我们有4个EC2实例运行此管道流程,但是我们希望每个EC2实例都可以访问一些全局参数。 如果我们在单个实例上运行,我们当然可以使用shell变量来完成此任务,但实际上需要单独的实例以提高效率。 当前,我们最好的想法是将一个平面文件存储在s3存储桶中,该文件可以访问这些全局变量,并仅在初始化时读取它们,并在需要更改时写回它们。 这是总的,似乎应该有一个更好的方法,但是我们还不能弄清楚。 我看到有一种设置可以在管道的任何部分访问的参数的方法,但是看来您只能在每个管道级别上进行设置,而不是在每次管道运行的粒度上进行设置。 有人有什么资源可以帮助您吗? 非常感激。
通过使用DynamoDB跟踪变量/状态,我们能够解决此问题。 管道本身除了参数值外没有任何机制来执行此操作,不幸的是,参数值仅对每个管道起作用,而不对每个作业起作用。 您需要设置一个DynamoDB实例,然后使用管道作业ID来跟踪状态,并通过CLI工具或某些SDK进行连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.