- VPC作成
- VPCでパブリックIPにDNS名をつける
- サブネットを作成
- インターネットゲートウェイの作成
- インターネットゲートウェイをVPCにアタッチ
- パブリックサブネット用ルートテーブルの作成
- パブリックサブネット用ルートテーブルとパブリックサブネットを紐づける
- パブリックサブネット用ルートテーブルにインターネットゲートウェイへのルートを追加する
- セキュリティグループを作成
- セキュリティグループにそれぞれルールを追加
- NATインスタンスを起動
- Webインスタンスを起動(2台でマルチAZ)
- ELBを作成
- ELBの配下にインスタンスを追加
$ aws ec2 create-vpc --cidr-block 10.0.0.0/16
$ aws ec2 modify-vpc-attribute --vpc-id VPCのID --enable-dns-hostnames
以下の通り作成する
- パブリックサブネット1 (リージョンA)
- パブリックサブネット2 (リージョンC)
- プライベートサブネット1 (リージョンA)
- プライベートサブネット2 (リージョンC)
$ aws ec2 create-subnet --vpc-id VPCのID --cidr-block 10.0.1.0/24 --availability-zone ap-northeast-1a
$ aws ec2 create-subnet --vpc-id VPCのID --cidr-block 10.0.2.0/24 --availability-zone ap-northeast-1c
$ aws ec2 create-subnet --vpc-id VPCのID --cidr-block 10.0.11.0/24 --availability-zone ap-northeast-1a
$ aws ec2 create-subnet --vpc-id VPCのID --cidr-block 10.0.12.0/24 --availability-zone ap-northeast-1c
$ aws ec2 create-internet-gateway
$ aws ec2 attach-internet-gateway --internet-gateway-id インターネットゲートウェイのID --vpc-id VPCのID
$ aws ec2 create-route-table --vpc-id VPCのID
$ aws ec2 associate-route-table --route-table-id パブリックサブネット用ルートテーブルのID --subnet-id パブリックサブネット1のサブネットID
$ aws ec2 associate-route-table --route-table-id パブリックサブネット用ルートテーブルのID --subnet-id パブリックサブネット2のサブネットID
$ aws ec2 create-route --route-table-id パブリックサブネット用ルートテーブルのID --gateway-id インターネットゲートウェイのID --destination-cidr-block 0.0.0.0/0
以下の通り作成する
- NAT用
- WEB用
- DB用
- ELB用
$ aws ec2 create-security-group --group-name NAT-SG --description NAT-SG --vpc-id VPCのID
$ aws ec2 create-security-group --group-name WEB-SG --description WEB-SG --vpc-id VPCのID
$ aws ec2 create-security-group --group-name DB-SG --description DB-SG --vpc-id VPCのID
$ aws ec2 create-security-group --group-name ELB-SG --description ELB-SG --vpc-id VPCのID
$ aws ec2 authorize-security-group-ingress --group-id NAT-SGのID --protocol tcp --port 22 --cidr 0.0.0.0/0
$ aws ec2 authorize-security-group-ingress --group-id NAT-SGのID --protocol tcp --port 80 --source-group DB-SGのID
$ aws ec2 authorize-security-group-ingress --group-id NAT-SGのID --protocol tcp --port 443 --source-group DB-SGのID
$ aws ec2 authorize-security-group-egress --group-id NAT-SGのID --protocol tcp --port 80 --cidr 0.0.0.0/0
$ aws ec2 authorize-security-group-egress --group-id NAT-SGのID --protocol tcp --port 443 --cidr 0.0.0.0/0
$ aws ec2 authorize-security-group-ingress --group-id WEB-SGのID --protocol tcp --port 22 --source-group NAT-SGのID
$ aws ec2 authorize-security-group-ingress --group-id WEB-SGのID --protocol tcp --port 80 --cidr 0.0.0.0/0
$ aws ec2 authorize-security-group-ingress --group-id DB-SGのID --protocol tcp --port 22 --source-group NAT-SGのID
$ aws ec2 authorize-security-group-ingress --group-id DB-SGのID --protocol tcp --port 3306 --source-group WEB-SGのID
$ aws ec2 authorize-security-group-ingress --group-id ELB-SGのID --protocol tcp --port 80 --cidr 0.0.0.0/0
$ aws ec2 run-instances \
> --image-id NATインスタンスのAMI ID \
> --key-name キーペア名 \
> --subnet-id パブリックサブネットのサブネットID(どちらか) \
> --security-group-ids NAT-SGのID \
> --instance-type t2.micro \
> --associate-public-ip-address \
> --private-ip-address 適当なプライベートIP(ここは固定の方がベター)
$ aws ec2 run-instances \
> --image-id AmazonLinuxのAMI ID \
> --key-name キーペア名 \
> --subnet-id パブリックサブネット1のサブネットID \
> --security-group-ids WEB-SGのID \
> --instance-type t2.micro \
> --associate-public-ip-address
$ aws ec2 run-instances \
> --image-id AmazonLinuxのAMI ID \
> --key-name キーペア名 \
> --subnet-id パブリックサブネット2のサブネットID \
> --security-group-ids WEB-SGのID \
> --instance-type t2.micro \
> --associate-public-ip-address
$ aws elb create-load-balancer --load-balancer-name TEST-VPC-ELB --listeners Protocol=HTTP,LoadBalancerPort=80,InstanceProtocol=HTTP,InstancePort=80 --subnets パブリックサブネット1のサブネットID パブリックサブネット2のサブネットID --security-groups ELB-SGのID
$ aws elb register-instances-with-load-balancer --load-balancer-name TEST-VPC-ELB --instances Webインスタンス2台のインスタンスID