2014-05-21 7 views
14

J'utilise le service aws ec2 avec awscli. Maintenant, je veux mettre toutes les commandes que je tape dans la console dans un script python. Je vois que si j'écris import awscli dans un script python cela fonctionne très bien mais je ne comprends pas comment l'utiliser dans le script. Par exemple, comment puis-je exécuter les commandes aws ec2 run-instances <arguments> dans le script python après import awscli? Juste pour préciser, je ne cherche pas une solution comme os.system('aws ec2 run-instances <arguments>'), je cherche quelque chose commeComment utiliser awscli dans un script python?

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

Répondre

9

La CLI serait plus adapté à l'invite du shell, pour une meilleure API python, vérifiez la bibliothèque boto. Cet exemple montre comment lancer une instance: http://boto.readthedocs.org/en/latest/ec2_tut.html

+1

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

10

Vous pouvez le faire avec le package brillant sh. Vous pourriez imiter le paquet python avec sh faisant l'emballage pour vous.

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

Le paquet 'sh' est certainement intéressant. Merci pour le pointeur. Mais ce n'est [pas pour Windows] (http://amoffat.github.io/sh/sections/faq.html?highlight=windows#will-windows-be-supported) cependant (utilisera le paquet pour mes plates-formes * nix) –

3

Boto3 n'a pas tout le cli a donc vous pouvez avoir à utiliser quelque chose du cli dans un script une fois dans une lune bleue. Je ne peux pas trouver un analogue pour aws deploy pousser dans boto3 par exemple alors voici comment je pousse à s3 avec le cli d'un script python. Bien qu'au point de Julio, j'utilise boto pour tout le reste.

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 
Questions connexes