如何在python脚本中使用awscli?

e27*_*314 23 python amazon-ec2 amazon-web-services aws-cli

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

import awscli
awscli.ec2_run-instances(<arguments>)
Run Code Online (Sandbox Code Playgroud)

smo*_*eny 15

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

import sh
s3 = sh.bash.bake("aws s3")
s3.put("file","s3n://bucket/file")
Run Code Online (Sandbox Code Playgroud)


fae*_*anj 14

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

  • Boto3快速入门:http://boto3.readthedocs.io/en/latest/guide/quickstart.html (2认同)
  • 除了 boto 库不能做 awscli 库可以做的一些事情。例如s3同步。 (2认同)

ddt*_*ler 8

Boto3并没有cli的所有功能,因此您可能不得不在剧本中使用cli中的cli内容。例如,我在boto3中找不到适用于AWS部署推送的类似物,因此这是我如何使用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
Run Code Online (Sandbox Code Playgroud)