【AWS】カオスにならないAWS初期設定①(VPC構築)
こんにちわ
がじぇったー (@hackmylife7) | Twitter
です。
AWSの初期構築時にVPCやRouteTableなどを作成すると思います。 構築自体はドキュメントを見れば簡単にできると思いますが、命名規則を定義した上でリソースを作成しないと秒でカオスな環境に陥ります。 サービスによってはARNが同時に払い出されるリソース(SQS)などはあとで命名をかえることはできません。 今回は自分が行っているインフラ構築手順を書き起こそうと思います。
- TL;DR(要約)
- 作成するインフラリソース
- VPCの設定
- Public Subnetの構築①
- Public Subnetの構築②
- Private Subnetの構築①
- インターネットゲートウェイの作成
- ルートテーブルの構築①
- NAT GATEWAYの構築
- ルートテーブルの構築②
- セキュリティグループの作成
- お勧めの本
TL;DR(要約)
作成するインフラリソース
- ユースケースとしてモノシリックな三層WEBアプリケーションを作成していきます。
- 全体のNWセグメントを/18で切り、パブリックサブネットを二つに分け、WEBサーバを配置し、DBをプライベートサブネットに構築します
- パブリックサブネット→インターネットはインターネットゲートウェイから通信を行い、プライベートサブネットからの通信はNAT GATEWAYを経由し通信します
VPCの設定
- サービス→VPC→「VPCの作成」でVPCを作成します。
- VPC名は<環境(dev/stg/prd)>-vpc<数字2桁>-サービス名で作成(例: stg-vpc01-gadgeter-blog)
- 10.40.0.0/18
- /18でNWセグメントを切るとIPの数は16384になります。ちょっと大きすぎるくらいですがまぁ良いでしょう IPアドレス サブネットマスク 早見表|ahref.org
Public Subnetの構築①
Publicサブネットを切ります
- Subnet名はそのサブネットがパブリックなのか、プライベートなのかが一目でわかることが重要です
- <環境(dev/stg/prd)>-public/private<数字2桁>-サービス名で作成(stg-public01-gadgeter-blog)で作成します
- 10.40.20.0/24
- ap-northeast-1d
- /24で切ると付与されるIPの数は256個になります
Public Subnetの構築②
二つ目のPublicサブネットを切っていきます
- Subnet名は<環境(dev/stg/prd)>-public/private<数字2桁>-サービス名で作成(stg-public02-gadgeter-blog)
- 10.40.10.0/24
- ap-northeast-1c
- /24で切ると付与されるIPの数は256個になります
Private Subnetの構築①
DBを配置するプライベートサブネットを作成します
- Subnet名は<環境(dev/stg/prd)>-public/private<数字2桁>-サービス名で作成(stg-private01-gadgeter-blog)
- 10.40.0.0/24
- ap-northeast-1d
インターネットゲートウェイの作成
- インターネットゲートウェイ名は<環境(dev/stg/prd)>-igw<数字2桁>-gadgeter-blogで作成(stg-igw01-gadgeter-blog)
- 作成したインターネットゲートウェイを選択し、VPC(stg-vpc01-gadgeter-blog)にアタッチします
ルートテーブルの構築①
- ルートテーブル名は<環境(dev/stg/prd)>-routetable<数字2桁>-gadgeter-blogで作成(stg-route01-gadgeter-blog)
- 送信先 0.0.0.0/0 が上記で作成したインターネットゲートウェイにルーティングされるようにする
- 作成したPublic Subnet×2に関連付ける
NAT GATEWAYの構築
- プライベートサブネットからインターネットに通信できるようNAT GATEWAYを構築します
- サービス一覧でVPCを選択しNAT GATEWAYを選択する
- NAT GATEWAYの作成ボタンをおす
- Public Subnet(stg-public01-gadgeter-blog)を選択し、EIPは新規に割り当てる
- タグはName: stg-natgw-public01-gadgeter-blogとする"
ルートテーブルの構築②
- 送信先 0.0.0.0/0 が上記で作成したNAT GATEWAYにルーティングされるようにする
- 作成したPrivate Subnetに関連付ける
- stg-private-route01-gadgeter-blog
セキュリティグループの作成
- ALB、EC2、DB、管理サーバに付与するSGを作成していきます。
- 基本的に一眼でわかるよう<環境環境(dev/stg/prd)>-<AWSサービス名>-<用途><数字2桁>-<サービス名>で作成します
stg-ec2-web01-gadgeter-blog: stg-alb-web01-gadgeter-blogからのhttp/https通信、構築メンバのIPからのssh通信のみ許可します
- stg-ec2-kanri01-gadgeter-blog: 構築メンバのIPからのhttp/https/ssh通信のみ許可します
- stg-ec2-db01-gadgeter-blog: stg-ec2-web01-gadgeter-blogからの通信のみ許可(ポートは使用しているDBによって変わりますPostgreSQLだったら5432ポートを許可)
お勧めの本
ここら辺の構築手順を技術的にもしっかり説明してあるのが↓の書籍です。
めちゃくちゃ良い本なのでお勧めです。