【发布时间】:2018-10-29 04:14:42
【问题描述】:
我知道 AWS Python 开发工具包 (Boto/Boto3) 具有各种 AWS 服务 (https://boto3.readthedocs.io/en/latest/guide/resources.html) 的资源,但我想知道是否有资源可以发送直接的 AWS CLI 命令,例如,我可以创建一个 AWS EMR 集群,例如 aws emr create-cluster ...configuration stuff here...。有没有像cli = boto.resource('cli') 这样的东西,或者我只是使用常规 Python 来执行 bash 命令,例如,
from subprocess import call
call(["aws emr create-cluster ...configuration stuff here..."])
【问题讨论】:
-
当您有 boto3 Python 库包可供您使用时,使用 Python 调用 awscli 会有点不寻常。
-
我知道它不能完全回答您的问题,但出于好奇,我想知道为什么不使用基础设施作为代码,例如 Terraform?在这种情况下,似乎用 python 编写自动化来创建基础设施就是重新发明轮子。无论哪种方式,您还需要使用配置和安装的 cli 来编排您的环境,这似乎是一种开销
-
@Dvir669 我认为自己处于与 OP 类似的情况。基本上有一个低于成熟的 Terraform 等的级别。您有两个或多个 CloudFormation 模板,您想要的只是发出少量相同的 aws CLI 命令。总结和记录你的日常工作,你主要是为自己做的。在这种情况下,任何类型的基础设施工程都将是矫枉过正
-
@Ichthyo 我听到了,但即使那样我也不会使用 CLI,我会使用其中一个发布的 SDK。正如您所说,使用任何 SDK 客户端编写脚本要简单得多,例如,我使用 Ruby 来重新部署没有我们的标记约定的实例 - 我的意思是,如果您已经投入时间来配置环境使用 CLI 并在其上编写脚本,我认为使用 TF 是一样的努力。
标签: python amazon-web-services amazon-ec2 boto3 aws-cli