2014-05-21 5 views
14

Sto usando il servizio aws ec2 con awscli. Ora voglio mettere tutti i comandi che digito nella console in uno script python. Vedo che se scrivo import awscli all'interno di uno script python funziona bene, ma non capisco come usarlo all'interno dello script. Ad esempio, come posso eseguire i comandi aws ec2 run-instances <arguments> all'interno dello script python dopo import awscli? Giusto per chiarire, io non sto cercando una soluzione come os.system('aws ec2 run-instances <arguments>'), sto cercando qualcosa di simileCome usare awscli all'interno di uno script python?

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

risposta

9

La CLI sarebbe più adatto per il prompt della shell, per una migliore API pitone, controllare la biblioteca di boto. Questo esempio mostra come avviare un'istanza: http://boto.readthedocs.org/en/latest/ec2_tut.html

+1

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

10

Puoi farlo con il brillante pacchetto sh. Si potrebbe simulare il pacchetto python con sh facendo wrapping per te.

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

Il pacchetto 'sh' è sicuramente interessante. Grazie per il puntatore. Ma è [non per Windows] (http://amoffat.github.io/sh/sections/faq.html?highlight=windows#will-windows-be-supported) però (userà il pacchetto per le mie piattaforme * nix) –

3

Boto3 non ha tutto il cli ha quindi potrebbe essere necessario usare qualcosa dalla CLI in uno script, una volta in una luna blu. Ad esempio, non riesco a trovare un analogo per aws distribuire push in boto3, quindi ecco come spingo a s3 con il cli da uno script python. Anche se per il punto di Julio, io uso Boto per tutto il resto.

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