我正在使用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>)
答案 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'])
希望为您提供帮助。