簡體   English   中英

有沒有辦法將一個AWS CLI命令的輸出作為輸入傳遞給另一個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM