Sto tentando di chiamare run-istanze e superare gli ID delle istanze risultanti come input per creare tag come un one-liner come segue:C'è un modo per reindirizzare l'output di un comando CLI AWS come input a un altro?
aws ec2 run-instances \
--image-id ami-1234 \
--output text \
--query Instances[*].InstanceId | \
aws ec2 create-tags \
--tags 'Key="foo",Value="bar"'
Quando si tenta questo, ottengo il seguente:
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:
aws help
aws <command> help
aws <command> <subcommand> help
aws: error: argument --resources is required
È possibile qualcosa del genere o si deve ricorrere all'utilizzo di variabili (o qualche altro modo a cui non sto pensando)?
Sfondo Ulteriori
La motivazione di questa domanda è che qualcosa di simile a questo è possibile con gli strumenti di AWS per Windows PowerShell; Speravo di ottenere la stessa cosa con la CLI di AWS.
Equivalente PowerShell esempio:
New-EC2Instance -ImageId ami-1234 |
ForEach-Object Instances |
ForEach-Object InstanceId |
New-EC2Tag -Tag @{key='foo';value='bar'}
Avrete bisogno di scrivere uno script per catturare l'output dal primo comando e passarlo al secondo comando come parametri. Non c'è modo in cui la pipa che stai usando funzionerebbe, come farebbe a sapere cosa fare del testo che viene inserito in esso? –
Questo è quello che sospettavo, volevo solo essere sicuro. FWIW qualcosa del genere è possibile con gli strumenti AWS PowerShell (i comandi dichiarano un attributo "valore dalla pipeline"), ma questa è più una funzione di PowerShell piuttosto che i comandi AWS. –
@MarkB 'create-tags' prende un parametro' resources' che è l'id dell'istanza (può essere una lista, ma in questo caso sarà un valore singolo) per taggare quale è l'Id dell'istanza appena lanciata e data da il risultato della query del comando 'run-instnace'. mi sto perdendo qualcosa ? –