我有一个名为 的实例dev-server-03
。现在如何dev-server-*
从命令行搜索所有实例?
我正在使用 aws cli 工具。
答案1
假设您使用将实例名称放在带有“名称”键的标签中的约定(这是输入名称时 AWS 控制台执行的操作),那么您可以使用该--filters
选项通过 aws-cli 列出这些实例:
aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*'
如果您只想要这些实例的实例 ID,则可以使用:
aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*' \
--output text --query 'Reservations[*].Instances[*].InstanceId'
注意:--query
可能需要最新版本的 aws-cli,但值得获取。
答案2
您可以使用以下名称、实例 ID 和私有 IP 进一步过滤,
aws ec2 describe-instances --filters "Name=tag:Name,Values=*myinstance*" --output json --query 'Reservations[*].Instances[*].[PrivateIpAddress,InstanceId,Tags[?Key==`Name`].Value]' --region us-east-1
答案3
如果您正在使用jq
,您可以通过以下方式实现此目的:
aws ec2 describe-instances |
jq -r '.Reservations[].Instances[] |
select(.Tags[].Value | startswith("dev-server-"))'
您可以附加其他过滤器来jq
获得更具体的结果,例如:
... startswith("dev-server-")) | .PublicDnsName'