ポートフォリをとして作ったRuby on RailsアプリをDockerコンテナ化し本番環境をAWSで構築するまでの道のりです。
ポートフォリオ自体はこちらとなります。
[【ポートフォリオ】転職活動時に作成したポートフォリオの概要(テッ◯キャンプ)]
(https://qiita.com/sho_U/items/058e590325ee6833abb0)
かなり苦しめられたので、どなたかのお役に立てれば。
タイトル | |
---|---|
1 | ローカル環境のRailsアプリをDockerコンテナ化 |
2 | [AWSにVPCを作成する。パブリックサブネットを作成する] |
3 | プライベートサブネットを作成する |
4 | EC2インスタンスを作成する |
5 | RDSを作成する |
6 | DockerコンテナをAWSにアップロードする |
#AWSにVPCを作成する。
##VPCとは(ざっくり)
Virtual Private Cloud と呼ばれるものでAWS内に作成する仮想的なネットワーク網のことです。
まずは下記の様な構成のVPCとサブベットを作成します。
サブネットとは、VPC内でさらに区分されたネットワークのことです。
パブリックサブネットにアプリ本体。プライベートサブネットにデーターベースを置きます。
パブリックサブネットは、外部からのアクセスを許可する設定します。
プライベートサブネットは、外部からのアクセスを許可せず、パブリックサブネットからのアクセスのみを許可します。(データーベースは外部からアクセスする必要はないのでセキュリティー向上のため)
なお、「パブリックサブネット」「プライベートサブネット」という設定自体はなく、後ほど設定するセキュリティーグループにおいて、上記のようなネットワークのアクセス制限を設定していきます。
vpcのプライベートIPアドレスは、サイダー表記が16ビットなので、先頭から16ビット分つまり、10.0が、ネットワーク部となります。
パブリックサブネット、プライベートサブネット共にプライベートアドレスは10.0.から始まっているので、VPC内のネットワークにあります。
また、パブリックサブネットのサイダー表記は/24なので24ビット分、つまり10.0.10.までがネットワーク部。
プライベートサブネットのサイダー表記も/24なので24ビット分、つまり10.0.20.までがネットワーク部であり、
パブリックサブネットとプライベートサブネットは異なるネットワーク空間となります。
###VPCの作成
AWSにログインして、VPCダッシュボードに入り、VPCを作成する。
名前 : VPCの名前任意
IPv4 CIDR ブロック : VPC用のプライベートIPアドレス(今回は10.0.0.0/16)
「VPCを作成」をクリック
##パブリックサブネット作成
AWSコンソールからVPCにVPCに入り、サブネットを選択してサブネットを作成する。
VPC IDに先ほど作成したVPCを選択する。
アベイラビリティーゾーン:今回はap-northease-1a
名前:fitO2_public_subnet_1a
IPv4 CIDR ブロック : 10.0.10.0/24
「サブネットを作成」をクリック
##パブリックサブネットのルーティングの作成
###インターネットゲートウェイ(IGW)を作成し、VPCにアタッチします。
IGWとは、ざっくりいうとVPCとインタネットを繋ぐ窓口のようなものです。IGWを通じて、インターネットとVPC通信を行います。アタッチとは、作成したIGWをVPCと紐づける作業となります。
VPCコンソールから、「インタネットゲートウェイ」を選択、「インターネットゲートウェイの作成」をクリック。
名前を決めて、作成。
一覧から作成したIGWを選択して、右上のアクションからVPCに「アタッチをクリック」
先ほど作成したVPCを選択して、「インターネットゲートウェイのアタッチ」をクリック
###ルートテーブルを作成して、パブリックサブネットに紐付け
パブリックサブネット用のルーティングテーブルを作成します。
パブリックサブネットに来たアクセスのうち
10.0.0.0/16 が宛先のものはVPCに送ります。
10.0.10.0/24 が宛先のものはパブリックサブネット(自分自身)に送ります。
0.0.0.0/0 (上記以外全ての宛先)は、IGWに送ります。
VPCコンソールから、「ルートテーブル」を選択し、「ルートテーブルの作成」をクリックして、名前を決めてVPCに先ほど作成したVPCを選択します。
一覧から作成した、ルーティングを選択し、下部の「ルート」タブを確認すると、
送信先「10.0.0.0/16」のものが宛先(ターゲット)がVPC(local)となっていることが確認できます。
ルートテーブルは、必ず所属するVPCが必須であるためため、先ほど選択したVPCが紐付けられます。
「サブネットの関連付け」タブをクリックし、「サブネットの関連付け編集」をクリックします。
パブリックサブネットを選択し、保存をクリックします。
##IGWへのルートを作成する。
「ルートの追加」を選択して、「0.0.0.0/0」を選択する。
先ほど作成したIGWを選択する。
「ルートの保存」をクリックする。
これで、パブリックサブネットに紐づくルーティングテーブルが作成されました。
作り方をまとめると、下記の様になります。
それぞれ作り方が異なるのでややこしいですが、やっていることは、宛先IPアドレスに対して、どこに通信を振り分けるかということです。
##パブリックサブネット用のセキュリティーグループを作成する。
EC2ダッシュボードのセキュリティーグループをクリックして、「セキュリティーグループの作成」をクリックする。
「ルールの追加」をクリックします。
セキュリティーグループ名 : fitO2_SG
VPC: 先ほど作成したVPC
インバウンド:
上記図の様に作成
これで、全てのアクセス元に対して、SSH通信(22番ポート)とhttp通信(80番ポート)を開放するセキュリティーグループが作成できました。後ほど、作るEC2インスタンスに、このセキュリティーグループを適用させる予定です。
(セキュリティーグループは後ほど、もうちょっと詳しく説明します。)
次回(3)へ続く
プライベートサブネットを作成する