2014-05-21 11 views
14

Ich benutze aws ec2-Service mit awscli. Jetzt möchte ich alle Befehle, die ich in die Konsole eintippe, in ein Python-Skript schreiben. Ich sehe, dass wenn ich import awscli in ein Python-Skript schreibe, es gut funktioniert, aber ich verstehe nicht, wie man es innerhalb des Skripts verwendet. Zum Beispiel wie führe ich die Befehle aws ec2 run-instances <arguments> im Python-Skript nach ? Nur um es klar zu machen, ich bin nicht für eine Lösung wie os.system('aws ec2 run-instances <arguments>') suchen, ich bin für so etwas wieWie verwende ich awscli im Python-Skript?

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

Antwort

9

Die CLI wären besser geeignet für den Shell-Prompt für einen besseren Python-API suchen, überprüfen Sie die Boto-Bibliothek. Dieses Beispiel zeigt, wie Sie eine Instanz starten: http://boto.readthedocs.org/en/latest/ec2_tut.html

+1

Boto3 quickstart: http://boto3.readthedocs.io/en/latest/guide/quickstart.html – skoll

10

Sie können es mit brillanten sh Paket zu tun. Sie könnten Python-Paket mit sh für Sie wickeln.

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

Die 'sh' Paket ist auf jeden Fall interessant. Danke für den Zeiger. Aber es ist [nicht für Windows] (http://amoffat.github.io/sh/sections/faq.html?highlight=windows#will-windows-be-supported) obwohl (wird das Paket für meine * nix-Plattformen verwenden) –

3

Boto3 nicht über alles, was den cli hat so kann man etwas von der cli in einem Skript einmal in einem blauen Mond verwenden. Ich kann kein Analog für aws deploy push in boto3 zum Beispiel finden, also hier ist, wie ich zu s3 mit dem CLI von einem Python-Skript schieben. Obwohl zu Julio's Punkt, benutze ich Boto für alles andere.

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