从 aws 命令行工具按名称搜索 ec2 实例

从 aws 命令行工具按名称搜索 ec2 实例

我有一个名为 的实例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'

相关内容