2017-02-22 47 views
1

Я пытаюсь установить метки на экземпляре EC2 с помощью следующего вызова из питона сценария, где я передаю в переменной instanceId как ресурс, чтобы добавить теги на:Передача параметра в команде AWS CLI

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

Но я получаю эту ошибку:

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

Однако, когда я распечатать instanceId, я вижу правильный идентификатор экземпляра, так что должно быть что-то неправильно с тем, как я передаю в переменной. Есть ли для этого другое соглашение?

+0

Вы используете старую версию инструмента AWS CLI? Запустите 'aws -version', чтобы посмотреть, какую версию вы установили. –

+0

Согласно документации https://docs.python.org/2/library/subprocess.html#using-the-subprocess-module, вы должны вызвать 'subprocess.call()' со списком параметров – ZdaR

ответ

1

Ваша переменная $instanceId в вашей команде AWS CLI станет переменной оболочки и не будет заменена вашим кодом Python.

Таким образом, если $instanceId переменная Python, вам может понадобиться, чтобы сделать что-то вроде:

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

Примечание: Я не разработчик Python, так что это удар в темноте.