AWS CLI查询VPC对等连接请求方标签名称返回None求助
解决AWS CLI查询VPC对等连接时标签返回None的问题
问题原因
- 若VPC对等连接(PCX)为跨账户创建,
describe-vpc-peering-connections默认不会返回对方账户VPC的标签——AWS不会将其他账户的资源标签暴露给无权限的用户。 - 若为同一账户PCX,可能是当前IAM权限缺少
ec2:DescribeTags,导致无法获取标签信息。
解决方法
1. 同一账户PCX场景
检查当前IAM用户/角色是否拥有ec2:DescribeTags权限,若缺失,更新IAM策略添加该权限。
2. 跨账户PCX场景
由于无法直接通过describe-vpc-peering-connections获取对方VPC标签,需分两步查询:
步骤1:导出PCX与对应VPC ID的映射
aws ec2 describe-vpc-peering-connections --query 'VpcPeeringConnections[*].[VpcPeeringConnectionId, RequesterVpcInfo.VpcId, AccepterVpcInfo.VpcId]' --output text > pcx-vpcs.txt
步骤2:遍历查询每个VPC的名称标签
while read pcx_id req_vpc_id acc_vpc_id; do # 查询请求方VPC名称 req_vpc_name=$(aws ec2 describe-vpcs --vpc-ids $req_vpc_id --query 'Vpcs[0].Tags[?Key==`Name`].Value | [0]' --output text) # 查询接受方VPC名称 acc_vpc_name=$(aws ec2 describe-vpcs --vpc-ids $acc_vpc_id --query 'Vpcs[0].Tags[?Key==`Name`].Value | [0]' --output text) # 格式化输出 echo "$pcx_id | 请求方VPC: $req_vpc_id ($req_vpc_name) | 接受方VPC: $acc_vpc_id ($acc_vpc_name)" done < pcx-vpcs.txt
3. 优化单次查询(同一账户适用)
如果是同一账户的PCX,也可以用嵌套查询一次性获取标签(前提是有权限):
aws ec2 describe-vpc-peering-connections --query 'VpcPeeringConnections[*].[ VpcPeeringConnectionId, RequesterVpcInfo.VpcId, (describe-vpcs --vpc-ids `RequesterVpcInfo.VpcId` --query "Vpcs[0].Tags[?Key==`Name`].Value | [0]"), AccepterVpcInfo.VpcId, (describe-vpcs --vpc-ids `AccepterVpcInfo.VpcId` --query "Vpcs[0].Tags[?Key==`Name`].Value | [0]") ]' --output table
注:这种嵌套查询依赖AWS CLI的命令替换支持,部分终端环境可能需要调整引号转义。
内容的提问来源于stack exchange,提问作者avinash s
相关产品推荐
相关产品推荐

