AWS CLIでVPCなどを作成する (+ チートシート)
Table of Contents
CLI でどんどん要素を作成していくと、何を作成したか分からなくなることが多い。
そのため、作成した要素を確認・整理できるスクリプトなどを作成しながら作業した。
▼環境
- OS: Windows 10
- 使用ツール: AWS CLI, AWS Tools for Powershell
参考: https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-subnets-commands-example.html
実行手順
1. VPC作成
- VPC 作成:
aws ec2 create-vpc --cidr-block 10.0.0.0/16
2. サブネット作成
- サブネット 作成:
aws ec2 create-subnet --vpc-id vpc-xxxxx --cidr-block 10.0.1.0/24
3. IGW作成
- IGW 作成:
aws ec2 create-internet-gateway
- IGW アタッチ:
aws ec2 attach-internet-gateway --vpc-id vpc-xxxxx --internet-gateway-id igw-xxxxx
4. ルートテーブル
- ルートテーブル 作成:
aws ec2 create-route-table --vpc-id vpc-xxxxx
- ルート 作成:
aws ec2 create-route --route-table-id rtb-xxxxx --destination-cidr-block 0.0.0.0/0 --gateway-id igw-xxxxx
- ルートテーブル 割当:
aws ec2 associate-route-table --subnet-id subnet-xxxxx --route-table-id rtb-xxxxx
- 最後に > サブネットに自動パブリック割当設定:
aws ec2 modify-subnet-attribute --subnet-id subnet-xxxxx --map-public-ip-on-launch
チートシート (PowerShell)
確認用スクリプトは使い慣れてる PowerShell (AWS Tools for PowerShell) で作成。
▼ VPC情報取得
- 作成しているVPCすべてのCIDR、ID をリスト
Get-EC2Vpc | %{$_.CidrBlock + "`t" + $_.VpcId}
▼ サブネット情報取得
- 作成しているサブネットすべてのCIDR、AZ、ID をリスト
Get-EC2Subnet | %{$_.CidrBlock + "`t" + $_.AvailabilityZone + "`t" + $_.SubnetId}
▼ IGW 情報取得
- 作成しているIGWすべてのID、アタッチ先をリスト
Get-EC2InternetGateway | %{$_.InternetGatewayId + "`t" + $_.Attachments.VpcId}
▼ ルートテーブル 情報取得
- 作成しているルートテーブルすべての ID、作成先VPC、サブネット関連付け、ルート情報をリスト
foreach($table in Get-EC2RouteTable){ echo "`n### $($table.RouteTableId)" echo " - VpcId: $($table.VpcId)" echo " - Subnet Associations:" foreach($as in $table.Associations){ echo " + $($as.SubnetId) (VpcMain: $($as.Main))" } echo " - Routes:" foreach($rt in $table.Routes){ echo " + $($rt.DestinationCidrBlock) --> $($rt.GatewayId)" } }
↓以下のような出力になる
### rtb-aaaaa
- VpcId: vpc-aaaaa
- Subnet Associations:
+ (VpcMain: True)
- Routes:
+ 172.31.0.0/16 --> local
+ 0.0.0.0/0 --> igw-aaaaa
### rtb-bbbbb
- VpcId: vpc-bbbbb
- Subnet Associations:
+ (VpcMain: True)
- Routes:
+ 10.0.0.0/16 --> local
### rtb-ccccc
- VpcId: vpc-ccccc
- Subnet Associations:
+ subnet-ccccc (VpcMain: False)
- Routes:
+ 10.0.0.0/16 --> local
+ 0.0.0.0/0 --> igw-ccccc
▼他: Nameタグを付ける関数
# -id ... Nameタグを付けるリソースID # -name ... Name Key のValue function Aws-SetNameTag($id, $name){ $tag = New-Object Amazon.EC2.Model.Tag $tag.Key = "Name" $tag.Value = $name New-EC2Tag -Resource $id -Tag $tag }