在多个EC2实例之间自动化运行相同python脚本的简单方法?

时间:2019-07-08 15:25:24

标签: python amazon-ec2

我有4个linux EC2实例,它们是从同一AMI创建的,用于处理S3中的文件。 我在每个实例上运行相同的python脚本。它需要S3中的文件目录来处理,并带有一个数字告诉它应该处理哪些文件。 说mydir包含myfile1 ... myfile8。

在实例0上,我致电: python process.py mydir 0 这将导致它处理myfile1和myfile5。

在实例1上,我致电: python process.py mydir 1 这将导致它处理myfile2和myfile2。

以此类推。

我在脚本中执行以下操作: keys = keys [pid :: 4],其中pid是命令行中的参数。

我通过与S3同步将更改重新分配给我的python脚本。

有没有简单的方法可以进一步自动执行此操作? 我想按一个按钮,说dir = yourdir,让它从s3同步代码并在每个实例上运行。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Fabric
取自Fabric文档的示例:

from fabric import Connection
result = Connection('web1.example.com').run('uname -s', hide=True)
msg = "Ran {0.command!r} on {0.connection.host}, got stdout:\n{0.stdout}"
print(msg.format(result))

# Output:
# Ran 'uname -s' on web1.example.com, got stdout:
# Linux