ネットワーク構築・RDSのVPC移行手順
はじめに
デプロイ済みのPFを、構築した違う仮想ネットワーク上に
またデプロイしなおし、公開する手順!
自分が何をしているのかわからなくなりがちなので、
手順をメモしながら、わからないとこ整理です。
イメージ図
VPC作成
まず、VPCを新しく作ります。
(aws-practice-pf)
内容
サブネット作る
今回作った3つのサブネット。
AWS上のサブネット名 | パブリック/プライベート | アベイラビリティゾーン | CIDRブロック |
---|---|---|---|
aws-practice-public-subnet-1a | パブリック | ap-northeast-1a | 192.168.0.0/19 |
aws-practice-private-subnet-1a | プライベート | ap-northeast-1a | 192.168.64.0/19 |
aws-practice-private-subnet-1c | プライベート | ap-northeast-1c | 192.168.96.0/19 |
ちなみに、サブネットが「パブリック」であるか「プライベート」であるかは、そのサブネットのルートテーブルと関連付けられたセキュリティ設定によって決まります!
内容
こんな感じで、後の二つも作成する!
作成されてるか確認!🙆🏻♀️
自動割り当てパブリックIPを指定
aws-practice-public-subnet-1aは、後で公開設定をします。(直接インターネットからアクセスできる状態)
インスタンス起動時に自動的に割り当てられるパブリックIPアドレスを付与するための設定を行います。
内容
- サブネット一覧画面で、パブリックとするaws-practice-public-subnet-1aを選択
- 右上にある「アクション」ボタンを選択
- その中から「サブネットの設定を編集」を選択
- 「パブリックIPv4アドレスの自動割り当てを有効化」にチェックを入れて「保存」
aws-practice-public-subnet-1aの「詳細」を開いて
「パブリック IPv4 アドレスの自動割り当て」が「はい」となっていることを確認!
ルートテーブルを作成
2つのルートテーブルを作成し、1つをパブリック用に、もう1つをプライベート用に設定する!
VPCを作成するときに、自動的に1つのルートテーブルが作成されているので、
aws-practice-private-routetableを追加で1つ作って合計2つにします!
(パブリックとプライベートの設定は後で行います。)
AWS上のルートテーブル名 | パブリック/プライベート |
---|---|
aws-practice-public-routetable | パブリック |
aws-practice-private-routetable | プライベート |
内容
名前、VPC(先ほど作成したもの)を設定して作成をクリック!
ルートテーブルが作成されたことを確認
上記画像ではすでに変更しているが、
VPC作成時に自動的に作成されるルートテーブル(パブリック)の名称を変更する!
インターネットゲートウェイ作成
インターネットゲートウェイは、サブネットをパブリックに設定するために必要です!
VPCに対して1つ設定すればOK!作成後、VPCにアタッチする!
内容
「名前タグ」を設定し、[作成]をクリック!
作成されたインターネットゲートウェイの[アクション]で[VPCにアタッチ]を実行する!
サブネットのパブリック/プライベート設定
- ルートテーブルにパブリックのルートを追加する
- ルートテーブルにサブネットを関連付ける
1. ルートテーブルにパブリックのルートを追加する
- ルートテーブルの[ルートを編集]をクリック
- [ルートを追加]をクリック
- 「送信先」「ターゲット」を設定して、[変更を保存]をクリック!
- 「送信先」=「0.0.0.0/0」
- 「ターゲット」=作成したインターネットゲートウェイID
内容
2. ルートテーブルにサブネットを関連付ける
現時点では、サブネットとルートテーブルの関連付けはデフォルトの設定になっているので、
下記の組み合わせになるよう関連付けを行う!
AWS上のサブネット名 | AWS上のルートテーブル名 |
---|---|
aws-practice-public-subnet-1a | aws-practice-public-routetable |
aws-practice-private-subnet-1a | aws-practice-private-routetable |
aws-practice-private-subnet-1c | aws-practice-private-routetable |
- ルートテーブルを選択して、ルートテーブルの[サブネットの関連付け]タブに切り替える!
- [サブネットの関連付けの編集]をクリックして、[サブネットの関連付けの編集]画面を表示
- 関連付けたいサブネットを選択して、保存
内容
パブリックサブネットを関連づけるテーブルの編集画面!
こうなっていればOK!
プライベートサブネットを関連づけるルートテーブルも、同じように編集!
こうなっていればOK!
ちなみに、ルートテーブルの詳細で 「メイン」が「はい」になっているルートテーブルは、
同じVPC内でこの関連付けを行っていないサブネットに対して
暗黙的に関連付けられるルートテーブルを示しています。
暗黙的に関連付けられているサブネットは、[サブネットの関連付け]タブで
「明示的な関連付けがないサブネット」のところで確認できます。
ネットワークACL(AccessControlList)作成
ネットワークACLはサブネットが作成されるときに
自動的に作成されるデフォルト(すべて許可)のものを利用するので設定は不要です。
以上で、VPCの作成が完了です!
EC2作成
先ほど作成したVPCとEC2を置きたいサブネットを選択してEC2を作成する!
内容
ネットワーク設定では、
先ほど作成したVPCとEC2を置きたいサブネットを選択!
「セキュリティグループルールを追加」をクリック
- 「タイプ」で「HTTP」
- ソースタイプには「カスタム」
- ソースには、「0.0.0.0/0」と「::/0」と入力
「ストレージを設定」と「高度な詳細」はそのままでOK!
画面右側に概要が表示されているので、確認して起動をクリック!
正常に起動された場合は「インスタンスの起動を正常に開始しました」画面が表示されます🙆🏻♀️
その後、、
EC2にログイン
⬇︎
サーバーにアクセス
⬇︎
サーバーに「Nginx」をインストール
⬇︎
ブラウザからWebサーバーにアクセス
RDSをVPCに移行
現在違うVPCにあるRDSを作成したVPCに移行します!
サブネットグループを作成
疑問メモ
-
違うAZにあるプライベートサブネットには何もない理由
災害などが起きた時にAZの違う方を使えるように大枠を用意しているイメージ🤔 -
VPCのサブネットとRDSのサブネットグループって別物?
2つは異なる概念、別物!
VPCサブネットはAWSリソース(例:EC2インスタンス)が置かれる「区画」のようなもの。
RDSサブネットグループは、その「区画」の集合で、RDS(データベース)が置かれる場所を決めるために使用する。
- RDSコンソールのナビゲーションにある[サブネットグループ]を選択
- [DB サブネットグループの作成]をクリック
- 「サブネットグループの詳細」で[名前][説明]を入力し、[VPC]ではリストからサブネットグループを作成したいVPCを選択
- 「サブネットを追加」の[アベイラビリティーゾーン]で、リストの中から作成したサブネットが存在するアベイラビリティーゾーンを選択・[サブネット]で、リストの中から作成したサブネットを選択
- 2つ以上のアベイラビリティゾーンのサブネットをそれぞれ設定し、[作成]をクリック
これで完了!
内容
DBインスタンスのサブネットグループを変更
- ナビゲーションの[データベース]を選択
- [DBインスタンス]を選択し、[変更]をクリック
- 「接続」の[DBサブネットグループ]で新しいVPCに関連付けられているサブネットグループを選択
- 設定できたら、最下部の[続行]をクリック
- 「変更のスケジューリング」で[すぐに適用]を選択し、[DBインスタンスを変更]をクリック
※変更が反映するまで、10分程度かかります。
6.サブネットグループの変更が済んだら1と2の手順を行い、「接続」の[セキュリティグループ]で対象のRDSへに適切なセキュリティグループを選択
(何のセキュリティかというと、RDSを指定のEC2からのみアクセス可能にすること🙆🏻♀️)
※セキュリティグループが存在しない場合は、MySQLを許容するように作成して選択。
-
設定できたら、最下部の[続行]をクリック
-
「変更のスケジューリング」で[すぐに適用]を選択し、[DBインスタンスを変更]をクリック
※変更が反映するまで、10分程度かかります。
これで、RDSのDBインスタンスのVPC移行は完了!!
あとはデプロイの手順を行い完成!
さいごに
長くなりすぎてしまった!
実際に手を動かしてみて、メンターさんに聞きながら
自分が何をやっているのかイメージが湧いてきたかな🤔
デプロイのところでエラーが出てしまって、今日合格もらえなかったので
明日なんとかエラー解消させたい!
Discussion