AWS CLIでVPCなどを作成する (+ チートシート)

Table of Contents

  1. 実行手順
    1. 1. VPC作成
    2. 2. サブネット作成
    3. 3. IGW作成
    4. 4. ルートテーブル
  2. チートシート (PowerShell)

AWS CLIVPC 他ネットワーク基本要素を作成する。

CLI でどんどん要素を作成していくと、何を作成したか分からなくなることが多い。
そのため、作成した要素を確認・整理できるスクリプトなどを作成しながら作業した。

▼環境


参考: 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
}