如何使用AWS CLI查询特定EC2实例的安全组ID与子网ID?
使用AWS CLI查询EC2实例的安全组ID和子网ID
当然可以通过AWS CLI程序化获取EC2实例的安全组ID和子网ID,以下是具体实现方法:
核心查询命令
利用describe-instances命令,结合实例定位与结果过滤参数,精准提取所需信息:
1. 同时获取实例ID、子网ID和安全组ID(表格格式输出)
aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0 \ --query 'Reservations[*].Instances[*].{实例ID:InstanceId, 子网ID:SubnetId, 安全组ID:SecurityGroups[*].GroupId}' \ --output table
2. 纯文本格式输出(适合脚本批量处理)
aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0 \ --query 'Reservations[*].Instances[*].[InstanceId, SubnetId, SecurityGroups[*].GroupId]' \ --output text
3. 单独提取子网ID
aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0 \ --query 'Reservations[0].Instances[0].SubnetId' \ --output text
4. 单独提取安全组ID(多组时自动换行输出)
aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0 \ --query 'Reservations[0].Instances[0].SecurityGroups[*].GroupId' \ --output text
参数说明
--instance-ids:指定目标实例ID,多个实例用空格分隔(如i-xxxxxx i-yyyyyy)--query:通过JMESPath语法过滤返回的JSON数据,精准定位所需字段--output:控制输出格式,支持json、table、text三种类型
扩展:通过实例名称查询
若不知道实例ID,可通过标签过滤定位:
aws ec2 describe-instances \ --filters "Name=tag:Name,Values=我的EC2实例" \ --query 'Reservations[*].Instances[*].{实例ID:InstanceId, 子网ID:SubnetId, 安全组ID:SecurityGroups[*].GroupId}' \ --output table
注意事项
- 确保AWS CLI已配置正确权限(需拥有
ec2:DescribeInstances权限) - 若实例关联多个安全组,
SecurityGroups[*].GroupId会返回所有关联组的ID
内容的提问来源于stack exchange,提问作者xpt
相关产品推荐
相关产品推荐

