2014-05-21 113 views
14

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

import awscli 
awscli.ec2_run-instances(<arguments>) 

回答

10

您可以通过辉煌的sh包实现。 你可以用sh来模仿python包来为你做包装。

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

的'sh'包肯定是有趣的。感谢指针。但它[不适用于Windows](http://amoffat.github.io/sh/sections/faq.html?highlight=windows#will-windows-be-supported)虽然(将使用该包用于我的* nix平台) –

3

Boto3没有一切CLI有,所以你可能需要在一个蓝色的月亮一旦使用来自CLI东西的脚本。例如,我无法找到boto3中的aws部署推送的模拟器,因此,我使用python脚本中的cli推送s3。虽然对胡里奥来说,我用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