[英]Is there a way to pipe the output of one AWS CLI command as the input to another?
我正在嘗試調用run-instances並將生成的實例ID作為create-tags的輸入傳遞為單行,如下所示:
aws ec2 run-instances \
--image-id ami-1234 \
--output text \
--query Instances[*].InstanceId | \
aws ec2 create-tags \
--tags 'Key="foo",Value="bar"'
嘗試這個時,我得到以下內容:
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
這樣的事情是可能的,還是一個人不得不求助於使用變量(或其他一些我沒想過的方式)?
附加背景
提出這個問題的動機是使用適用於Windows PowerShell的AWS工具可以實現這樣的功能; 我希望用AWS CLI完成同樣的事情。
等效的PowerShell示例:
New-EC2Instance -ImageId ami-1234 |
ForEach-Object Instances |
ForEach-Object InstanceId |
New-EC2Tag -Tag @{key='foo';value='bar'}
可以通過利用xargs {}捕獲實例ID以將其提供給create-tags的--resources參數來完成。
aws ec2 run-instances \
--image-id ami-1234 \
--output text \
--query Instances[*].[InstanceId] | \
xargs -I {} aws ec2 create-tags \
--resources {} \
--tags 'Key="foo",Value="bar"'
請注意,與原始問題中的示例不同,將--query參數值的“InstanceId”部分包含在括號中非常重要,這樣,如果調用大於1的--count的運行實例,則會獲得多個實例ID return將作為單獨的行輸出,而不是以制表符分隔。 見http://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html#controlling-output-format
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.