初期構築済みのAWSアカウント内で、使用済みIPアドレスを調べられるワンライナー書きました。
予めプライベートIPアドレスを決めてからEC2をlaunchする必要があるとき等に役立つと思います。
サブネット毎に、割当て済みプライベートIPアドレスがソートして表示されます。
VPCもサブネットもCIDRブロックでソートしています。
■ワンライナー
for vpcinf in `aws ec2 describe-vpcs|jq -r '.Vpcs[]|[.VpcId,.CidrBlock]|@csv'| sed -e "s/"//g"|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n`; do vpcid=`echo $vpcinf|cut -d, -f 1`; echo ""; for subnetinf in `aws ec2 describe-subnets|jq -r '.Subnets[]|select(.VpcId==$vpc)|[.SubnetId,.CidrBlock]|@csv' --arg vpc $vpcid| sed -e "s/"//g"|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n`; do subnetid=`echo $subnetinf|cut -d, -f 1`; echo "=== " $subnetinf " ==="; aws ec2 describe-network-interfaces|jq -r '.NetworkInterfaces[]|select(.SubnetId==$subnet)|[.Description,.PrivateIpAddress]|@csv' --arg subnet $subnetid| sed -e "s/"2",//g"|sed -e "s/"//g"|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n; done done
■実行例
$ for vpcinf in `aws ec2 describe-vpcs|jq -r '.Vpcs[]|[.VpcId,.CidrBlock]|@csv'| > sed -e "s/"//g"|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n`; > do > vpcid=`echo $vpcinf|cut -d, -f 1`; > echo ""; > for subnetinf in `aws ec2 describe-subnets|jq -r '.Subnets[]|select(.VpcId==$vpc)|[.SubnetId,.CidrBlock]|@csv' --arg vpc $vpcid| > sed -e "s/"//g"|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n`; > do > subnetid=`echo $subnetinf|cut -d, -f 1`; > echo "=== " $subnetinf " ==="; > aws ec2 describe-network-interfaces|jq -r '.NetworkInterfaces[]|select(.SubnetId==$subnet)|[.Description,.PrivateIpAddress]|@csv' --arg subnet $subnetid| > sed -e "s/"2",//g"|sed -e "s/"//g"|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n; > done > done === subnet-AAAAAAAA,10.0.32.0/28 === Primary network interface,10.0.32.10 === subnet-BBBBBBBB,10.0.32.16/28 === Primary network interface,10.0.32.20 Primary network interface,10.0.32.21 Primary network interface,10.0.32.22 Primary network interface,10.0.32.29 === subnet-CCCCCCCC,10.0.32.32/28 === Primary network interface,10.0.32.36 Primary network interface,10.0.32.37 === subnet-DDDDDDDD,10.0.33.0/28 === Primary network interface,10.0.33.10 === subnet-ead20983,10.0.33.16/28 === Primary network interface,10.0.33.22 Primary network interface,10.0.33.25 === subnet-EEEEEEEE,10.0.33.32/28 === === subnet-FFFFFFFF,10.0.36.0/27 === RDSNetworkInterface,10.0.36.17 RDSNetworkInterface,10.0.36.25 === subnet-GGGGGGGG,10.0.36.32/27 === RDSNetworkInterface,10.0.36.60 === subnet-HHHHHHHH,10.0.40.0/24 === Primary network interface,10.0.40.5 Primary network interface,10.0.40.6 ELB elb-hoge,10.0.40.7 ELB s-elb-aja-aaa,10.0.40.35 ELB elb-mojya,10.0.40.40 ELB s-elb-pepepe,10.0.40.46 ELB elb-oreno,10.0.40.124 ELB elb-watasino,10.0.40.135 ELB elb-minnano,10.0.40.136
“Primary network interface”はENIの説明なのでEC2,”RDSNetworkInterface”はRDS,”ELB “はELB、のそれぞれに割当てられていることになります。