我正在尝试动态创建一个包含我所有 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