如何在python脚本中使用awscli?

时间:2014-05-21 08:54:48

标签: python amazon-web-services amazon-ec2 aws-cli

我正在使用aws ec2服务和awscli。现在我想将我在控制台中键入的所有命令放入python脚本中。我看到如果我在python脚本中编写import awscli它工作正常,但我不明白如何在脚本中使用它。例如,如何在aws ec2 run-instances <arguments>之后在python脚本中执行命令import awscli?为了说清楚,我不是在寻找像os.system('aws ec2 run-instances <arguments>')这样的解决方案,我正在寻找类似

的解决方案
import awscli
awscli.ec2_run-instances(<arguments>)

4 个答案:

答案 0 :(得分:13)

CLI更适合shell提示,对于更好的python API,请检查boto库。此示例显示如何启动实例:http://boto.readthedocs.org/en/latest/ec2_tut.html

答案 1 :(得分:13)

你可以用精彩的sh包来做到这一点。 你可以模仿python包,sh为你做包装。

import sh
s3 = sh.bash.bake("aws s3")
s3.put("file","s3n://bucket/file")

答案 2 :(得分:6)

Boto3没有cli所拥有的所有内容所以你可能不得不在蓝色的月亮中使用一个脚本中的cli。我无法在boto3中找到用于aws deploy push的模拟,所以这里是我如何使用python脚本中的cli推送到s3。虽然对Julio来说,我使用boto来做其他事情。

import subprocess

cmd='aws deploy push --application-name SomeApp --s3-location  s3://bucket/Deploy/db_schema.zip --ignore-hidden-files' 
push=subprocess.Popen(cmd, shell=True, stdout = subprocess.PIPE)
print push.returncode

答案 3 :(得分:0)

好吧,您可以在python脚本中使用aws cli来运行subprocess命令。 例如,假设获得s3存储桶列表。 然后,

import subprocess

push=subprocess.call(['aws', 's3', 'ls', '--recursive', '--human-readable', '--summarize'])

import subprocess

push=subprocess.run(['aws', 's3', 'ls', '--recursive', '--human-readable', '--summarize'])

希望为您提供帮助。