5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS:VPC関連の情報を取得したいとき

Last updated at Posted at 2023-03-27

以前、「AWS:EC2インスタンスの情報を取得したいとき」ではEC2の情報取得をAWSCLIで一括で行う手法を書いた。今回はそれのVPC版となる。パラシ作成用などにどうぞ。

前提

  • タグ:Nameを使って名前付与をしている
     ⇒タグNameを使ってない場合もコマンドの構文を少し変えれば対応は可能。
     ⇒.他のタグを使ってるときは、{Name:Tags[?Key==Name].Value|[0]のところのNameをご自身の環境の値に変える
  • Cloudshellが望ましいが、AWSCLIがインストールされているマシンもおK

コマンド集

行が複数に分かれていますが、行の末尾に「\」で改行しているため、全行をまるごとコピーペーストしてもOKな状態にしています。

  • VPCを一覧出力してCSVに出力
aws ec2 describe-vpcs --query 'Vpcs[].{Name:Tags[?Key==`Name`].Value|[0], VpcId:VpcId, CidrBlock:CidrBlock, OwnerId:OwnerId, Tenancy:InstanceTenancy, Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[].Ipv6CidrBlock|[0], Ipv6Pool:Ipv6CidrBlockAssociationSet[].Ipv6Pool|[0]}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > vpclist.csv

vpclist.csvがカレントにできるので、それをダウンロード。

  • サブネット一覧出力
aws ec2 describe-subnets --query 'Subnets[].{Name:Tags[?Key==`Name`].Value|[0], VpcId:VpcId, CidrBlock:CidrBlock, SubnetId:SubnetId, AZ:AvailabilityZone, MapPublicIpOnLaunch:MapPublicIpOnLaunch, State:State, OwnerId:OwnerId}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > subnetlist.csv

subnetlist.csvがカレントにできるので、それをダウンロード。

  • ルートテーブルのルート一覧出力
CSVFILE=route-table.csv;\
echo "RouteTableId,Name,DestinationCidrBlock,GatewayId,NatGatewayId,VpcPeeringConnectionId,TransitGatewayId,NetworkInterfaceId,DestinationPrefixListId,InstanceId,State" > ${CSVFILE};\
aws ec2 describe-route-tables --query "RouteTables[].[RouteTableId,Tags[?Key=='Name']|[0].Value,Routes[].[DestinationCidrBlock,GatewayId,NatGatewayId,VpcPeeringConnectionId,TransitGatewayId,NetworkInterfaceId,DestinationPrefixListId,InstanceId,State]]" --output text | \
tr "\t" "," | sed -e 's/rtb*^/rtb*,/g' -e 's/^0/,,0/g' -e 's/^1/,,1/g' -e 's/^2/,,2/g' -e 's/^3/,,3/g' -e 's/^4/,,4/g' -e 's/^5/,,5/g' -e 's/^6/,,6/g' \
 -e 's/^7/,,7/g' -e 's/^8/,,8/g' -e 's/^9/,,9/g' -e 's/^None/,,None/g' \
 >> ${CSVFILE}

route-table.csvがカレントにできるので、それをダウンロード。

  • インターネットゲートウェイの一覧出力
aws ec2 describe-internet-gateways --query 'InternetGateways[].{Name:Tags[?Key==`Name`].Value|[0], InternetGatewayId:InternetGatewayId, VpcId:Attachments[0].VpcId, OwnerId:OwnerId}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > igw.csv

igw.csvがカレントにできるので、それをダウンロード。

  • NATゲートウェイの一覧出力
aws ec2 describe-nat-gateways --query 'NatGateways[].{Name:Tags[?Key==`Name`].Value|[0], NatGatewayId:NatGatewayId, VpcId:VpcId, SubnetId:SubnetId, NetworkInterfaceId:NatGatewayAddresses[0].NetworkInterfaceId}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > natgwlist.csv

natgwlist.csvがカレントにできるので、それをダウンロード。

  • TransitGatewayの一覧出力
aws ec2 describe-transit-gateways --query 'TransitGateways[].{Name:Tags[?Key==`Name`].Value|[0], TGWID:TransitGatewayId, OwnerId:OwnerId, ASN:Options.AmazonSideAsn, AutoAcceptSharedAttachments:Options.AutoAcceptSharedAttachments, DefaultRouteTableAssociation:Options.DefaultRouteTableAssociation, AssociationDefaultRouteTableId:Options.AssociationDefaultRouteTableId, DefaultRouteTablePropagation:Options.DefaultRouteTablePropagation, PropagationDefaultRouteTableId:Options.PropagationDefaultRouteTableId, VpnEcmpSupport:Options.VpnEcmpSupport, DnsSupport:Options.DnsSupport, MulticastSupport:Options.MulticastSupport}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > tgwlist.csv

tgwlist.csvがカレントにできるので、それをダウンロード。

  • TransitGateway アタッチメントの一覧出力
aws ec2 describe-transit-gateway-attachments --query 'TransitGatewayAttachments[].{Name:Tags[?Key==`Name`].Value|[0], TGWID:TransitGatewayAttachmentId, TGWAttachmentID:TransitGatewayAttachmentId, TGWID:TransitGatewayId, TGWOwnerID:TransitGatewayOwnerId, OwnerId:ResourceOwnerId, ResourceType:ResourceType, ResourceId:ResourceId, TGWRTBID:Association.TransitGatewayRouteTableId}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > tgwattchlist.csv

tgwattchlist.csvがカレントにできるので、それをダウンロード。

  • TransitGateway ルートテーブルの一覧出力
aws ec2 describe-transit-gateway-route-tables --query 'TransitGatewayRouteTables[].{Name:Tags[?Key==`Name`].Value|[0], TGWRTBID:TransitGatewayRouteTableId, TGWID:TransitGatewayId, DefaultAssociationRouteTable:DefaultAssociationRouteTable, DefaultPropagationRouteTable:DefaultPropagationRouteTable}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > tgwrtblist.csv

tgwrtblist.csvがカレントにできるので、それをダウンロード。

  • Elastic IPの一覧出力
aws ec2 describe-addresses  --query 'Addresses[].{Name:Tags[?Key==`Name`].Value|[0], PublicIp:PublicIp, NetworkInterfaceId:NetworkInterfaceId, PublicIpv4Pool:PublicIpv4Pool}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > elasticips.csv

elasticips.csvがカレントにできるので、それをダウンロード。

  • VPCエンドポイントの一覧出力
aws ec2 describe-vpc-endpoints --query 'VpcEndpoints[].{Name:Tags[?Key==`Name`].Value|[0],ServiceName:ServiceName,VpcEndpointId:VpcEndpointId,VpcId:VpcId,VpcEndpointType:VpcEndpointType}' \
 | jq '.[]' | jq -rs '(.[0]|keys_unsorted),map([.[]])[]|@csv' | sort > vpcendpoint.csv

vpcendpoint.csvがカレントにできるので、それをダウンロード。

もし他にいいコマンドがあったらここに追記予定


参考

【AWS CLI】ネットワーク関連のリソース一覧取得
https://blog.serverworks.co.jp/aws-cli-network#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E6%9C%89%E3%82%8A-4

jq と JMESPath を同時に覚える
https://www.techscore.com/blog/2019/09/30/jq-%E3%81%A8-jmespath-%E3%82%92%E5%90%8C%E6%99%82%E3%81%AB%E8%A6%9A%E3%81%88%E3%82%8B/

【AWS CLI】Transit Gateway関連の情報取得編
https://blog.serverworks.co.jp/aws-cli-tgw

【AWS CLI】Transit Gatewayのルートテーブルの詳細出力編
https://blog.serverworks.co.jp/aws-cli-tgw-route-table

【AWS CLI】全Route TableのRoute情報を取得する方法
https://blog.serverworks.co.jp/aws-cli-desribe-route-table

tr - 文字の変換や削除 - Linuxコマンド
https://webkaru.net/linux/tr-command/

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?