在多步 AWS 数据管道中的 EC2 实例之间传递变量
Passing variables between EC2 instances in multi-step AWS data pipeline
我有一个管道设置,其中有 3 个主要阶段:
1) 从压缩文件中获取输入,在 s3 中解压缩此文件。 运行 对每个文件进行一些基本验证以保证其完整性,转到步骤 2
2) 在单独的 EC2 实例上启动 2 个同时处理任务(此步骤的并行化为我们节省了大量时间,因此我们需要它来提高效率)。每个 EC2 实例将 运行 对步骤 1 中解压缩的 s3 中的某些文件进行数据处理步骤,每个实例所需的文件不同。
3) 2个同步处理都完成后,启动另一个EC2实例进行最后的数据处理。完成此操作后,运行 执行清理作业以从 s3 中删除解压缩的文件,只保留原始 zip 文件。
因此,我们 运行 遇到的问题之一是我们有 4 个 EC2 实例,运行 这个管道过程,但我们希望每个 EC2 都有一些全局参数可以访问的实例。如果我们在单个实例上 运行ning,我们当然可以使用 shell 变量来完成此任务,但确实需要单独的实例以提高效率。目前我们最好的想法是在 s3 存储桶中存储一个平面文件,该文件可以访问这些全局变量,并在初始化时读取它们,如果需要更改则写回它们。这太恶心了,似乎应该有更好的方法,但我们还想不出一个。我看到有一种方法可以设置可以在管道的任何部分访问的参数,但看起来你只能在每个管道级别上设置它,而不是在管道的每个 运行 的粒度上。有没有人有任何资源可以在这里提供帮助?非常感谢。
我们能够通过使用 DynamoDB 跟踪 variables/state 来解决这个问题。管道本身没有任何机制来执行此操作,除了参数值之外,不幸的是,参数值仅适用于每个管道,而不适用于每个作业。您需要设置 DynamoDB 实例,然后使用管道作业 ID 跟踪状态,通过 CLI 工具或某些 SDK 进行连接。
我有一个管道设置,其中有 3 个主要阶段:
1) 从压缩文件中获取输入,在 s3 中解压缩此文件。 运行 对每个文件进行一些基本验证以保证其完整性,转到步骤 2
2) 在单独的 EC2 实例上启动 2 个同时处理任务(此步骤的并行化为我们节省了大量时间,因此我们需要它来提高效率)。每个 EC2 实例将 运行 对步骤 1 中解压缩的 s3 中的某些文件进行数据处理步骤,每个实例所需的文件不同。
3) 2个同步处理都完成后,启动另一个EC2实例进行最后的数据处理。完成此操作后,运行 执行清理作业以从 s3 中删除解压缩的文件,只保留原始 zip 文件。
因此,我们 运行 遇到的问题之一是我们有 4 个 EC2 实例,运行 这个管道过程,但我们希望每个 EC2 都有一些全局参数可以访问的实例。如果我们在单个实例上 运行ning,我们当然可以使用 shell 变量来完成此任务,但确实需要单独的实例以提高效率。目前我们最好的想法是在 s3 存储桶中存储一个平面文件,该文件可以访问这些全局变量,并在初始化时读取它们,如果需要更改则写回它们。这太恶心了,似乎应该有更好的方法,但我们还想不出一个。我看到有一种方法可以设置可以在管道的任何部分访问的参数,但看起来你只能在每个管道级别上设置它,而不是在管道的每个 运行 的粒度上。有没有人有任何资源可以在这里提供帮助?非常感谢。
我们能够通过使用 DynamoDB 跟踪 variables/state 来解决这个问题。管道本身没有任何机制来执行此操作,除了参数值之外,不幸的是,参数值仅适用于每个管道,而不适用于每个作业。您需要设置 DynamoDB 实例,然后使用管道作业 ID 跟踪状态,通过 CLI 工具或某些 SDK 进行连接。