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章では以下の部分を作成していきます。
【注意】 メニューバー右側の真ん中に「米国」などと表示されている場合は,「東京(アジアパシフィック(東京) ap-northeast-1)」に変更して下さい
【注意】 以下,左上の「New VPC Experience」をONにしていることを前提とします。
キー | 値 |
---|---|
名前タグ | アプリ名_vpc |
IPv4 CIDR ブロック | 10.0.0.0/16 |
【注意】1章で注意しましたとおり,「アプリ名」の箇所はあらかじめ メモ
しておいた「アプリ名」を使用して下さい
VPCの中に,「インターネットから直接通信できる EC2用
のサブネット」と「インターネットから直接通信できない RDS用
のサブネット」を2つずつ作成していきましょう。(許可する接続方法は後に設定します)
HTTPS化
する際に ALB
を使用するため,異なる アベイラビリティーゾーン
に属するサブネットを 2つ
用意する必要があります。
キー | 値 |
---|---|
VPC | アプリ名_vpc ※リストから選択 |
キー | 値 |
---|---|
名前タグ | アプリ名_public_1a_subnet |
アベイラビリティーゾーン | ap-northeast-1a ※リストから選択 |
IPv4 CIDR ブロック | 10.0.0.0/24 |
キー | 値 |
---|---|
名前タグ | アプリ名_public_1c_subnet |
アベイラビリティーゾーン | ap-northeast-1c ※リストから選択 |
IPv4 CIDR ブロック | 10.0.1.0/24 |
※ まだ作成しますので,「サブネットを作成」ボタンをクリックしないこと!
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
内から インターネット
に接続するための「出入口」に相当する インターネットゲートウェイ
を作成しましょう。
キー | 値 |
---|---|
名前タグ | アプリ名_gateway |
キー | 値 |
---|---|
使用可能なVPC | アプリ名_vpc |
インターネットゲートウェイ
をアタッチしただけでは,サブネットからインターネットにアクセスすることはできません。
インターネットゲートウェイ
へ転送する経路である ルートテーブル
を設定する必要があります。
キー | 値 |
---|---|
名前タグ | アプリ名_table |
VPC | アプリ名_vpc |
「閉じる」ボタンをクリック
作成したルートテーブルを選択し,「アクション」ボタンをクリックし,「ルートの編集」を選択
local
を消さないこと!キー | 値 |
---|---|
送信先 | 0.0.0.0/0 |
ターゲット | 「Internet Gateway」を選択し,先ほど作成した「アプリ名_gateway」を選択 |
「閉じる」ボタンをクリック
(作成したルートテーブルを選択したまま)「アクション」ボタンをクリックし,「サブネットの関連付けの編集」を選択
「アプリ名_public_1a_subnet」「アプリ名_public_1c_subnet」のみを選択し,「保存」ボタンをクリック
インスタンスごとに許可する通信を設定するため, セキュリティグループ
を作成しておきましょう。
( EC2
や RDS
に適用する作業は,後で行います)
【構成内容】 クライアント --(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 |
【注意】ソースを マイIP
とすることで,SSH接続できるIPアドレスを制限できます。ただし,自宅以外で EC2
にアクセスする可能性がある場合は,他のIPアドレスも登録が必要です。(意味が分からない場合は,SSH
のソースも 任意の場所
に設定して下さい)
【構成内容】 EC2
--(TCP)--> RDS
データベースは EC2
からのリクエストのみを受け付けるように設定しておきます。
画面左のメニューバーの「セキュリティグループ」を選択し,「セキュリティグループを作成」ボタンをクリック
キー | 値 |
---|---|
セキュリティグループ名 | アプリ名_db_security_group |
説明 | アプリ名_db_security_group |
VPC | アプリ名_vpc |
「インバウンドルール」の「ルールを追加」をクリック
【注意】アプリで使用するデータベースシステムを確認し,「いずれか一方」のルールを追加して下さい
MySQL
の場合キー | 値 |
---|---|
タイプ | MySQL/Aurora |
プロトコル | TCP ※自動選択 |
ポート範囲 | 3306 ※自動選択 |
ソース | カスタム : アプリ名_ec2_security_group |
説明 | ※空白でOK |
「セキュリティグループを作成」をクリック
PostgreSQL
の場合キー | 値 |
---|---|
タイプ | PostgreSQL |
プロトコル | TCP ※自動選択 |
ポート範囲 | 5432 ※自動選択 |
ソース | カスタム : アプリ名_ec2_security_group |
説明 | ※空白でOK |
「セキュリティグループを作成」をクリック