2017-02-22 3 views
1

Je suis en train de mettre des étiquettes sur une instance EC2 avec l'appel suivant à partir d'un script python où je passe dans une instanceId variable comme ressource pour ajouter les balises sur:Le passage d'un paramètre dans la commande AWS CLI

subprocess.call('aws ec2 create-tags --resources $instanceId --tags "Key=somekey, Value=someval"') 

Mais je reçois cette erreur:

An error occurred (MissingParameter) when calling the CreateTags operation: The request must contain the parameter resourceIdSet 
255 

Cependant, quand j'imprimer instanceId, je vois l'ID correct de l'instance il doit y avoir quelque chose de mal avec la façon dont je passe dans la variable. Y a-t-il une convention différente pour cela?

+0

Exécutez-vous une ancienne version de l'outil AWS CLI? Exécutez 'aws --version' pour voir quelle version vous avez installée. –

+0

Conformément à la documentation https://docs.python.org/2/library/subprocess.html#using-the-subprocess-module, vous devez appeler 'subprocess.call()' avec la liste des paramètres – ZdaR

Répondre

1

Votre variable $instanceId dans votre commande AWS CLI deviendra une variable shell et ne sera pas remplacée par votre code Python.

Donc, si $instanceId est une variable Python, vous devrez peut-être faire quelque chose comme:

subprocess.call('aws ec2 create-tags --resources ' + $instanceId + ' --tags "Key=somekey, Value=someval"') 

Note: Je ne suis pas un développeur Python, donc c'est un coup de poignard dans le noir.