![AWS EC2 描述实例-按多个 EC2 标签进行过滤?](https://linux22.com/image/683357/AWS%20EC2%20%E6%8F%8F%E8%BF%B0%E5%AE%9E%E4%BE%8B-%E6%8C%89%E5%A4%9A%E4%B8%AA%20EC2%20%E6%A0%87%E7%AD%BE%E8%BF%9B%E8%A1%8C%E8%BF%87%E6%BB%A4%EF%BC%9F.png)
我正在尝试动态创建一个包含我所有 ec2 实例私有 IP 的主机文件映射,以用作我的 ec2 远程 ssh 服务器上的 /etc/hosts。
我有使用正常“名称”标记的实例,例如 prod-database-01 和“别名”标记,例如 db-01。目标是能够从我的 ssh 框中使用“ssh db-01”,并且即使服务器刚刚启动或自动缩放也能拥有正确的映射。
对于任何状态为“正在运行”的实例,即活动服务器,我试图让 cli 将名称、别名和私有 IP 地址输出为 JSON 或类似内容,然后我可以为其创建一个 hosts 文件。
但是,我在尝试输出第二个“别名”标签时遇到困难。
这是我目前所得到的输出“名称”、“PrivateIP”和“状态”。
想知道如何迭代并输出附加别名标签吗?
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].[ [Tags[?Key==`Name`].Value][0][0],PrivateIpAddress,State.Name ]' --output json
答案1
如果您像名称查询一样添加别名标签查询,它就可以工作:
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[].Instances[].[ [Tags[?Key==`Name`].Value][0][0],[Tags[?Key==`Alias`].Value][0][0],PrivateIpAddress,State.Name ]' --output json