BETA

VPCとVPCサブネットの作成、EC2とRDSの構築、ELB設定まで

投稿日:2018-11-22
最終更新:2019-06-07

構成

下図のような構成を想定。

  • ドメインはRoute53で発行
  • SSL証明書はACMで取得
  • ALBにSSL証明書を配置
  • EC2とRDSは冗長化

今回はVPC内部の構成のみを作成し、Route 53やCloudWatch、AmazonSNSの設定は行わない。

手順

  1. VPCを作成する
  2. サブネットを切る
  3. セキュリティグループを追加する
    1. インバウンドルールを追加する
  4. EC2インスタンスを作成する
  5. RDSサブネットグループを作成する
  6. RDSインスタンスを作成する
  7. インターネットゲートウェイを設定する
  8. ルートテーブルを設定する
    1. ルートの設定
    2. サブネットの関連の設定
  9. ターゲットグループを作成する
  10. ALBを設定する

1. VPCの作成

  • マネジメントコンソールのトップページからVPCを選択
  • VPCリソースの中からVPCを選択
  • VPCの作成をクリック
  • 下記のようにVPCを作成
名前 IPブロック
vpc-sample 10.0.0.0/16

2. VPCサブネットの作成

  • サイドバーからサブネットを選択
  • サブネットの作成をクリック
  • 下記のようにサブネットを作成
    • サブネットは全て先ほど作成したVPCに紐づける
名前タグ AZ IPv4 CIDR ブロック
web-a a 10.0.0.0/24
web-b b 10.0.1.0/24
db-a a 10.0.10.0/24
db-b b 10.0.11.0/24

IPアドレスの1724ビットを10進数表記した際に1桁目がアベイラビリティーゾーン、2桁目がインスタンスの役割を表している。

上記の例では1桁目が0ならばAZはa、1ならばbを表している。
2桁目がないならばWebサーバー、2桁目が1ならばDBサーバーであることを表している。

3. セキュリティグループを追加する

  • サイドバーからセキュリティグループを選択
  • セキュリティグループを作成をクリック
  • 各セキュリティグループの名前と説明を記入する
  • セキュリティグループは各インスタンスの役割別に作成する
名前 対象
sg-lb ALB
sg-web EC2
sg-db RDS
sg-ssh EC2

セキュリティグループをインスタンスの役割別にする理由としては、セキュリティグループ同士でルールを設定することにより送信元を絞りやすくなる、セキュリティグループの役割を明確化することができるなどが挙げられる。

sg-sshはEC2の管理用に作成する。

参考

EC2へのアクセスをALBからのみに制限する方法

3-1. インバウンドルールを追加する

上述した通り、セキュリティグループの送信元に他のセキュリティグループを指定する。

  • 作成したセキュリティグループを選択し、編集をクリック
  • 下記のルールをそれぞれ追加
SG タイプ ポート ソース
sg-lb HTTP 80 0.0.0.0/0, ::/0
sg-lb HTTPS 443 0.0.0.0/0, ::/0
sg-web カスタムTCP 8080 sg-lb
sg-db MySQL/Aurora 3306 sg-web
sg-ssh SSH 22 管理用PCのIP

4. EC2インスタンスを作成する

  • AWSマネジメントコンソールのトップページに移動
  • EC2を選択
  • インスタンスの作成をクリック
  • 下記のようにインスタンスを作成
名前 タイプ AZ VPC サブネット セキュリティーグループ
web01 t2.small a vpc-sample web-a sg-web, sg-ssh

5. RDSサブネットグループを作成する

RDSをMulti-AZ配置にするためにRDSサブネットグループを作成する

Multi-AZについてはこちら

概要だけ引用させていただく

【Multi-AZ配置】とは、とてもざっくりと言うと、「EC2やRDS等を別々の場所に配置し、同期をとることで耐障害性、可用性を高める」ものです。

  • AWSマネジメントコンソールのトップページに移動
  • RDSを選択
  • サイドバーからサブネットグループを選択
  • DBサブネットグループの作成をクリック
名前 VPC サブネット
rds-grp vpc-sample db-a, db-b

6. RDSインスタンスを作成する

  • サイドバーからインスタンスを選択
  • データベースの作成をクリック
  • エンジンはMySQLを選択
  • ユースケースはMySQL本番稼働用を選択
  • ユーザー名とパスワードを入力
  • Multi-AZを有効化し、先ほど作成したサブネットグループを選択

7. インターネットゲートウェイを設定する

  • AWSマネジメントコンソールのトップページに移動
  • VPCを選択
  • サイドバーからインターネットゲートウェイを選択
  • インターネットゲートウェイの作成をクリック
Nameタグ
igw-sample

8. ルートテーブルを設定する

  • サイドバーからルートテーブルを選択
  • ルートテーブルの作成をクリック
名前 VPC
rtb-sample-global vpc-sample
rtb-sample-local vpc-sample

8-1. ルートの設定

  • 作成したルートテーブルを選択
  • Routesのタブを選択
  • 編集をクリック
名前 Destination Target
rtb-sample-global 0.0.0.0/0 igw-sample
rtb-sample-local 10.0.0.0/16 local

8-2. サブネットの関連の設定

  • 作成したルートテーブルを選択
  • Subnet Associationsのタブを選択
  • 編集をクリック
ルートテーブル名 VPCサブネット
rtb-sample-global web-a, web-b
rtb-sample-local db-a, db-b

9. ターゲットグループを作成する

  • AWSマネジメントコンソールのトップページに移動
  • EC2を選択
  • サイドバーからターゲットグループを選択
  • ターゲットグループの作成をクリック
名前 VPC
tgrp-sample vpc-sample

10. ALBを設定する

  • サイドバーからロードバランサーを選択
  • ロードバランサーの作成をクリック
  • ALBの作成をクリック
名前 AZ セキュリティーグループ ターゲットグループ ターゲット
alb-sample a, b sg-alb tgrp-sample web01

本当はALBのプロトコルにHTTPSを追加しておくべきなのだが、証明書の取得を後回しにしているため今回は省略する。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@hikeyの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!