如何仅列出给定 CloudFormation 堆栈中的 EC2 实例?

Jef*_*.D. 3 amazon-ec2 amazon-web-services aws-cloudformation aws-cli

我可以$QUERY在满足以下条件的命令中使用什么:

aws ec2 describe-instances --query $QUERY
Run Code Online (Sandbox Code Playgroud)
  1. 只打印aws:cloudformation:stack-name标签等于 的实例test-stack
  2. 只打印InstanceId每个实例的属性。
  3. 不诉诸管道、for循环或其他外壳幻想。

Bas*_*ers 5

这里有几个参数可以使用:

查询

--query( docs ) 用于仅检索InstanceId

按堆栈名称标签过滤

--filter( docs ) 用于排除未用堆栈名称标记的实例

  • tag-key - 分配给资源的标签键。此过滤器独立于标签值过滤器。例如,如果您同时使用过滤器“tag-key=Purpose”和过滤器“tag-value=X”,您将获得分配有标签键目的(无论标签的值是什么)和标签的任何资源值 X(无论标签的键是什么)。如果您只想列出目的为 X 的资源,请参阅标签 :key = value过滤器。

  • tag-value - 分配给资源的标签值。此过滤器独立于标签键过滤器。

格式化

--output( docs ) 仅返回您查询的值(因此没有引号或 json/table 绒毛)

文本格式将 AWS CLI 的输出组织成制表符分隔的行。它适用于传统的 Unix 文本工具,例如 grep、sed 和 awk,以及 Windows PowerShell。

像这样使用这些参数:

aws ec2 describe-instances \                                                     
    --query "Reservations[*].Instances[*].InstanceId[]" \                        
    --filters "Name=tag-key,Values=aws:cloudformation:stack-name" "Name=tag-value,Values=test-stack" \
    --output=text
Run Code Online (Sandbox Code Playgroud)

返回:

i-sd64f52a  i-das5d64a  i-sad56d4
Run Code Online (Sandbox Code Playgroud)