🌊
"AWS Hands-on for Beginners - Network編#1"をAWS CLIで構築する2
前回に引き続きAWS CLIでハンズオンを構築する。
今回はインターネットゲートウェイとルートテーブルを作成する。
構成図
インターネットゲートウェイ
- インターネットゲートウェイのタグ名を変数に格納
IGW_TAG_NAME="handson-igw"
IGW_TAG_SPECIFICATIONS="ResourceType=internet-gateway,Tags=[{Key=Name,Value=${IGW_TAG_NAME}}]"
- インターネットゲートウェイの作成
aws ec2 create-internet-gateway \
--tag-specifications ${IGW_TAG_SPECIFICATIONS}
- VPC名、VPC ID、インターネットゲートウェイIDを変数に格納
VPC_TAG_NAME="handson"
VPC_ID=$( \
aws ec2 describe-vpcs \
--filters Name=tag:Name,Values=${VPC_TAG_NAME} \
--query "Vpcs[].VpcId" \
--output text \
)
IGW_ID=$( \
aws ec2 describe-internet-gateways \
--filters Name=tag:Name,Values=${IGW_TAG_NAME} \
--query "InternetGateways[].InternetGatewayId" \
--output text \
)
- インターネットゲートウェイを指定したVPCにアタッチ
aws ec2 attach-internet-gateway \
--internet-gateway-id ${IGW_ID} \
--vpc-id ${VPC_ID}
ルートテーブル
すでに作られているデフォルトのルートテーブル名を変更する
DEFAULT_ROUTE_TABLE_ID=$( \
aws ec2 describe-route-tables \
--filters Name=vpc-id,Values=${VPC_ID} \
--query "RouteTables[].RouteTableId" \
--output text \
)
aws ec2 create-tags \
--resources ${DEFAULT_ROUTE_TABLE_ID} \
--tags Key=Name,Value="Private-Route-Table"
新たにルートテーブルを作成する
- ルートテーブルのタグ名を変数に格納
ROUTE_TABLE_TAG_NAME="Public-Route-Table"
ROUTE_TABLE_TAG_SPECIFICATIONS="ResourceType=route-table,Tags=[{Key=Name,Value=${ROUTE_TABLE_TAG_NAME}}]"
- ルートテーブルの作成
aws ec2 create-route-table \
--vpc-id ${VPC_ID} \
--tag-specifications ${ROUTE_TABLE_TAG_SPECIFICATIONS}
- ルートテーブルID、宛先アドレスを変数に格納
ROUTE_TABLE_ID=$( \
aws ec2 describe-route-tables \
--filters Name=vpc-id,Values=${VPC_ID} \
Name=tag:Name,Values=${ROUTE_TABLE_TAG_NAME} \
--query "RouteTables[].RouteTableId" \
--output text
)
DESTINATION_CIDR="0.0.0.0/0"
- インターネットへのルートを追加
aws ec2 create-route \
--route-table-id ${ROUTE_TABLE_ID} \
--destination-cidr-block ${DESTINATION_CIDR} \
--gateway-id ${IGW_ID}
サブネットにルートテーブルを関連付ける
- ルートテーブルIDを変数に格納する
ROUTE_TABLE_TAG_NAME="Public-Route-Table"
ROUTE_TABLE_ID=$( \
aws ec2 describe-route-tables \
--filters Name=vpc-id,Values=${VPC_ID} \
Name=tag:Name,Values=${ROUTE_TABLE_TAG_NAME} \
--query "RouteTables[].RouteTableId" \
--output text
)
- サブネットIDを変数に格納する
SUBNET_TAG_NAME=Public-subnet-a
SUBNET_ID=$( \
aws ec2 describe-subnets \
--filters Name=vpc-id,Values=${VPC_ID} \
Name=tag:Name,Values=${SUBNET_TAG_NAME} \
--query "Subnets[].SubnetId" \
--output text \
)
- サブネットにルートテーブルを関連付ける
aws ec2 associate-route-table \
--subnet-id ${SUBNET_ID} \
--route-table-id ${ROUTE_TABLE_ID}
4つまとめてサブネットにルートテーブルを関連付ける
subnet_tag_names=("Public-subnet-a" "Public-subnet-c" "Private-subnet-a" "Private-subnet-c")
route_table_tag_names=("Public-Route-Table" "Public-Route-Table" "Private-Route-Table" "Private-Route-Table")
for i in {0..3}
do
ROUTE_TABLE_ID=$( \
aws ec2 describe-route-tables \
--filters Name=vpc-id,Values=${VPC_ID} \
Name=tag:Name,Values=${route_table_tag_names[$i]} \
--query "RouteTables[].RouteTableId" \
--output text
)
SUBNET_ID=$( \
aws ec2 describe-subnets \
--filters Name=vpc-id,Values=${VPC_ID} \
Name=tag:Name,Values=${subnet_tag_names[$i]} \
--query "Subnets[].SubnetId" \
--output text \
)
aws ec2 associate-route-table \
--subnet-id ${SUBNET_ID} \
--route-table-id ${ROUTE_TABLE_ID}
done
参考
次回
Discussion