请求两类AWS EC2实例信息查询的AWS CLI命令
AWS CLI 实例信息查询解决方案
没问题,我帮你基于参考命令扩展出了两个需求对应的可用AWS CLI命令,具体如下:
查询1:提取指定字段且关联特定标签VPC的实例信息
针对你需要的实例名称、公网IP、运行状态、带Production标签的VPC、实例类型这些信息,我们需要先获取带有Production标签的VPC ID,再用这些ID过滤实例,命令如下:
# 获取带Production标签的VPC ID并传入实例查询 aws ec2 describe-instances \ --filters "Name=instance-state-name,Values=running" \ "Name=vpc-id,Values=$(aws ec2 describe-vpcs --filters "Name=tag:Name,Values=Production" --query "Vpcs[*].VpcId" --output text | tr '\t' ',')" \ --query "Reservations[*].Instances[*].[Tags[?Key=='Name']|[0].Value, PublicIpAddress, State.Name, VpcId, InstanceType]" \ --output table
命令说明:
$(...)部分通过命令替换自动获取所有带Production标签的VPC ID,并用tr将空格分隔的ID转为逗号分隔,适配AWS CLI的多值过滤格式--query参数调整为你需要的字段顺序:实例名称、公网IP、运行状态、VPC ID、实例类型--output table让输出更直观易读,你也可以换成json或text格式
如果你的VPC标签不是Name=Production,而是其他键值对(比如Environment=Production),只需把describe-vpcs里的--filters改成"Name=tag:Environment,Values=Production"即可。
查询2:提取属于带'scheduling'标签VPC的实例信息
针对你需要的全部IP(公网+内网)、实例名称、实例类型、运行状态,同样先获取带'scheduling'标签的VPC ID,再过滤实例,命令如下:
# 获取带scheduling标签的VPC ID并传入实例查询 aws ec2 describe-instances \ --filters "Name=vpc-id,Values=$(aws ec2 describe-vpcs --filters "Name=tag-key,Values=scheduling" --query "Vpcs[*].VpcId" --output text | tr '\t' ',')" \ --query "Reservations[*].Instances[*].[Tags[?Key=='Name']|[0].Value, PublicIpAddress, PrivateIpAddress, InstanceType, State.Name]" \ --output table
命令说明:
describe-vpcs的--filters用tag-key匹配所有带有scheduling标签键的VPC;如果需要匹配特定标签值(比如scheduling=auto),可以改成"Name=tag:scheduling,Values=auto"--query中包含了PublicIpAddress和PrivateIpAddress,满足“全部IP”的需求- 保留了实例名称、类型和运行状态字段,完全覆盖你的需求
内容的提问来源于stack exchange,提问作者Craigus




