【2章】VPC

Amazon VPC とは Amazon Virtual Private Cloud の略称で,ユーザー専用のプライベートなネットワーク空間を構築できるサービスです。

RailsアプリをAWSで動作させるために,Webサーバーを配置する EC2 とデータベースシステムを動かす RDS を使用しますが,これらを配置するには先に VPC を設定する必要があります。

Amazon VPC は追加料金なしで使用できます。(参考:https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html

2.1 VPC の作成

2章では以下の部分を作成していきます。

構成図

【注意】 メニューバー右側の真ん中に「米国」などと表示されている場合は,「東京(アジアパシフィック(東京) ap-northeast-1)」に変更して下さい

リージョン

  • 画面左上の「サービス」を開き、検索欄に「VPC」と入力し、「VPC」を選択

検索

【注意】 以下,左上の「New VPC Experience」をONにしていることを前提とします。

  • 画面左のメニューバー(もしくは,ダッシュボード内の)の「VPC」をクリック

VPC

  • 「VPCを作成」ボタンをクリック
キー
名前タグ アプリ名_vpc
IPv4 CIDR ブロック 10.0.0.0/16

【注意】1章で注意しましたとおり,「アプリ名」の箇所はあらかじめ メモ しておいた「アプリ名」を使用して下さい

  • 他はデフォルトのままで「VPCを作成」ボタンをクリック

VPC設定

2.2 サブネット の作成

VPCの中に,「インターネットから直接通信できる EC2用 のサブネット」と「インターネットから直接通信できない RDS用 のサブネット」を2つずつ作成していきましょう。(許可する接続方法は後に設定します)

  • 画面左のメニューバーから「サブネット」を選択

EC2 用のサブネット

HTTPS化 する際に ALB を使用するため,異なる アベイラビリティーゾーン に属するサブネットを 2つ 用意する必要があります。

  • 「サブネットの作成」ボタンをクリック
キー
VPC アプリ名_vpc ※リストから選択

VPC設定1

キー
名前タグ アプリ名_public_1a_subnet
アベイラビリティーゾーン ap-northeast-1a ※リストから選択
IPv4 CIDR ブロック 10.0.0.0/24

VPC設定2

  • 「新しいサブネットを追加」ボタンをクリック
キー
名前タグ アプリ名_public_1c_subnet
アベイラビリティーゾーン ap-northeast-1c ※リストから選択
IPv4 CIDR ブロック 10.0.1.0/24

※ まだ作成しますので,「サブネットを作成」ボタンをクリックしないこと!

RDS 用のサブネット

RDS を利用するには異なる アベイラビリティーゾーン に属するサブネットを 2つ 用意する必要があります。

  • 「新しいサブネットを追加」ボタンをクリック
キー
名前タグ アプリ名_private_1a_subnet
アベイラビリティーゾーン ap-northeast-1a
IPv4 CIDR ブロック 10.0.10.0/24
  • 「新しいサブネットを追加」ボタンをクリック
キー
名前タグ アプリ名_private_1c_subnet
アベイラビリティーゾーン ap-northeast-1c
IPv4 CIDR ブロック 10.0.11.0/24
  • 「サブネットを作成」ボタンをクリック

  • 下図の状態になっていることを確認しておきましょう

VPC設定

2.3 インターネットゲートウェイ の作成

VPC 内から インターネット に接続するための「出入口」に相当する インターネットゲートウェイ を作成しましょう。

  • 画面左のメニューバーから「インターネットゲートウェイ」を選択
  • 「インターネットゲートウェイの作成」ボタンをクリック
キー
名前タグ アプリ名_gateway

VPC設定

  • 他はデフォルトのままで「インターネットゲートウェイの作成」ボタンをクリック
  • フラッシュで表示されている「VPCへアタッチ」をクリック
    • (「アクション」を選択し、「VPCにアタッチ」を選択してもOK)
キー
使用可能なVPC アプリ名_vpc
  • 「インターネットゲートウェイのアタッチ」ボタンをクリック

VPC設定

2.4 ルートテーブル の作成

インターネットゲートウェイ をアタッチしただけでは,サブネットからインターネットにアクセスすることはできません。
インターネットゲートウェイ へ転送する経路である ルートテーブル を設定する必要があります。

  • 画面左のメニューバーから「ルートテーブル」を選択
  • 「ルートテーブルの作成」ボタンをクリック
キー
名前タグ アプリ名_table
VPC アプリ名_vpc

ルートテーブルの作成

  • 「作成」ボタンをクリック
  • 「閉じる」ボタンをクリック

  • 作成したルートテーブルを選択し,「アクション」ボタンをクリックし,「ルートの編集」を選択

ルートの編集

  • 「ルートの追加」ボタンをクリック
    • local を消さないこと!
キー
送信先 0.0.0.0/0
ターゲット 「Internet Gateway」を選択し,先ほど作成した「アプリ名_gateway」を選択

ルートの追加1

ルートの追加2

  • 「ルートの保存」をクリック
  • 「閉じる」ボタンをクリック

  • (作成したルートテーブルを選択したまま)「アクション」ボタンをクリックし,「サブネットの関連付けの編集」を選択

  • 「アプリ名_public_1a_subnet」「アプリ名_public_1c_subnet」のみを選択し,「保存」ボタンをクリック

サブネットの関連付け

2.5 セキュリティグループ の作成

インスタンスごとに許可する通信を設定するため, セキュリティグループ を作成しておきましょう。

EC2RDS に適用する作業は,後で行います)

EC2 用のセキュリティグループ

【構成内容】 クライアント --(HTTP or SSH)--> EC2

  • 画面左のメニューバーの「セキュリティグループ」を選択

メニューバー

  • 「セキュリティグループを作成」ボタンをクリック
キー
セキュリティグループ名 アプリ名_ec2_security_group
説明 アプリ名_ec2_security_group
VPC アプリ名_vpc

「インバウンドルール」の「ルールを追加」を2回クリック

キー
タイプ HTTP ※「HTTPS」ではありません!
プロトコル TCP ※自動選択
ポート範囲 80 ※自動選択
ソース 任意の場所 (0.0.0.0/0 と ::/0 が表示)
説明 ※空白でOK
キー
タイプ SSH
プロトコル TCP ※自動選択
ポート範囲 22 ※自動選択
ソース マイIP (自分のグローバルIPが表示)
説明 ※空白でOK

セキュリティグループEC2

【注意】ソースを マイIP とすることで,SSH接続できるIPアドレスを制限できます。ただし,自宅以外で EC2 にアクセスする可能性がある場合は,他のIPアドレスも登録が必要です。(意味が分からない場合は,SSH のソースも 任意の場所 に設定して下さい)

RDS 用のセキュリティグループ

【構成内容】 EC2 --(TCP)--> RDS

データベースは EC2 からのリクエストのみを受け付けるように設定しておきます。

画面左のメニューバーの「セキュリティグループ」を選択し,「セキュリティグループを作成」ボタンをクリック

キー
セキュリティグループ名 アプリ名_db_security_group
説明 アプリ名_db_security_group
VPC アプリ名_vpc

「インバウンドルール」の「ルールを追加」をクリック

【注意】アプリで使用するデータベースシステムを確認し,「いずれか一方」のルールを追加して下さい

  • MySQL の場合
キー
タイプ MySQL/Aurora
プロトコル TCP ※自動選択
ポート範囲 3306 ※自動選択
ソース カスタム : アプリ名_ec2_security_group
説明 ※空白でOK

セキュリティグループMySQL

「セキュリティグループを作成」をクリック

  • PostgreSQL の場合
キー
タイプ PostgreSQL
プロトコル TCP ※自動選択
ポート範囲 5432 ※自動選択
ソース カスタム : アプリ名_ec2_security_group
説明 ※空白でOK

セキュリティグループPostgreSQL

「セキュリティグループを作成」をクリック