VPCにはどの様な情報があるのだろうか?。一番気になるのは,CIDR,サブネット,どのようにしたら見れるのだろうか?
1.利用中のリージョンのVPC情報を出力しよう
利用中のVPC一覧を出力する場合は、以下のコマンドを実行します。
aws aws ec2 describe-vpcs
json形式で出力されます。
2.必要な情報のみ出力するようにしましょう
オプションのqueryを使用することで絞り込みができます。
以下の例は、CIDRとVPC名に絞った例です。トップレベルがVpcs,で(画像B 階層と項目)
CidrBlockとtags[0]をdict{}に配置させます。
aws ec2 describe-vpcs \
--query "Vpcs[].[{CIDR:CidrBlock,Name:Tags[0].Value}]" \
--out table
オプションのqueryを使用することで絞り込みができます。
–query オプションの順番を変えても出力順序は変わりません。CIDRが先に出力されます
aws ec2 describe-vpcs \
--query "Vpcs[].[{Name:Tags[0].Value,CIDR:CidrBlock}]" \
--out table
VPCのCIDRとVPC名を出力できました。
3.必要な情報(追加)出力するようにしましょう
オプションのqueryを使用することで絞り込みができます。
以下の例は、CIDRとVPCIdにVPCの名前を追加した例です。トップレベルがSubnets,で
(画像D 階層と項目)CidrBlockとVpcIdをdict{}に配置させます。
aws ec2 describe-vpcs \
--query "Vpcs[].[{CIDR:CidrBlock,Name:Tags[0].Value,VpcId:VpcId}]" \
--out table
VPCのCIDRとVPC名とVPCIDを出力できました。
4.サブネット情報を出力してみましょう
VPCの情報出力では、サブネットの情報は出力されないので、サブネット情報
を出力するコマンドでサブネット情報を出力しましょう。
aws ec2 describe-subnets
サブネットの情報がjson形式で出力されます。
5.必要な情報のみ出力するようにしましょう
オプションのqueryを使用することで絞り込みができます。
以下の例は、CIDRとVPCIdに絞った例です。トップレベルがSubnets,で(画像E サブネット情報)
VPCid,CidrBlock,Nameを出力させます。
aws ec2 describe-subnets --query "Subnets[].[VpcId,CidrBlock,Tags[0].Value]" \
--out table
サブネットのCIDRとVPCIDが出力されます。
6.VPCとサブネットの情報を出力しよう
VPCの情報出力では、サブネットの情報は出力されないので、サブネット情報
を出力するコマンドとVPC-Idをfilterに指定してサブネット情報を出力しましょう。
aws ec2 describe-subnets \
--filters "Name=vpc-id,Values=vpc-0e628XXXXXXXXYYYY" \
--query "Subnets[].{CIDR:CidrBlock,VpcId:VpcId,Name:Tags[?Key=='Name'].Value}" \
--out table
VPCIDをフィルターして、このVPCにどんなサブネットがあるのかがわかります。
7.VPC CIDRとサブネット CIDRを出力しよう
サブネットの情報(CIDR)とVPCのCIDRを出力したい。これにはちょっと工夫が必要です。
コマンド一発というわけにはいかないのです。他に方法があるかもしれません。
aws ec2 describe-subnets --query "sort_by(Subnets[].{VpcId:VpcId,SubnetCIDR:Cidr
Block,AZ:AvailabilityZone},&VpcId)" \
--out table > subnet.txt
aws ec2 describe-vpcs \
--query "Vpcs[].[{CIDR:CidrBlock,VpcId:VpcId}]" \
--out text > vpc.txt
./replace.py
more replace.py
#!/usr/bin/env python3
import textfile
list_from_vpcs = []
with open('vpc.txt') as f:
reader = csv.reader(f, delimiter='\t')
list_from_vpcs = [rows for rows in reader]
for vpc in list_from_vpcs:
textfile.replace('subnet.txt',vpc[1],vpc[0])
textfile.replace('subnet.txt','VpcId','VpcCIDR')
先ず,サブネットの情報をサブネットのCIDRでソートしてsubnet.txtに出力させます。次に,vpc.txtにvpc情報を出力させます。そして、subnet.txtのファイルの中身を、vpc.txtのvpcIDと一致する項目をCIDRに置き換えています。また、表示名をVpcIdからVpcCIDRに変更しています。これで、サブネットとVPCの関係がわかります。
8.InternetGWの情報を出力しよう
InternetGWの情報を必要な項目のみ出力してみましょう
aws ec2 describe-internet-gateways \
--query "InternetGateways[].[{VPC_id:Attachments[0].VpcId,Name:Tags[0].Value}]" --out table
オプションのqueryを使用することで絞り込みができます。
上記の例は、InternetGatewaysがトップレベル次にVpcIdとTagsのValue情報を出力させています
次回はInternetGWとVPC,サブネットCIDRを一緒に出力させる方法を書きます
Linux版その1 EC2の情報出力 https://opt-p.co.jp/blog/aws/post-1633/
Linux版その2 RDSの情報出力 https://opt-p.co.jp/blog/aws/post-1718/
Linux版その4 色々な情報出力 https://opt-p.co.jp/blog/aws/post-2421/