🦡

ネットワーク構築・RDSのVPC移行手順

2023/07/06に公開

はじめに

デプロイ済みの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アドレスを付与するための設定を行います。

内容
  1. サブネット一覧画面で、パブリックとするaws-practice-public-subnet-1aを選択
  2. 右上にある「アクション」ボタンを選択
  3. その中から「サブネットの設定を編集」を選択
  4. 「パブリック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. ルートテーブルにパブリックのルートを追加する
  2. ルートテーブルにサブネットを関連付ける

1. ルートテーブルにパブリックのルートを追加する

  1. ルートテーブルの[ルートを編集]をクリック
  2. [ルートを追加]をクリック
  3. 「送信先」「ターゲット」を設定して、[変更を保存]をクリック!
  • 「送信先」=「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
  1. ルートテーブルを選択して、ルートテーブルの[サブネットの関連付け]タブに切り替える!
  2. [サブネットの関連付けの編集]をクリックして、[サブネットの関連付けの編集]画面を表示
  3. 関連付けたいサブネットを選択して、保存
内容

パブリックサブネットを関連づけるテーブルの編集画面!

こうなっていれば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(データベース)が置かれる場所を決めるために使用する。

  1. RDSコンソールのナビゲーションにある[サブネットグループ]を選択
  2. [DB サブネットグループの作成]をクリック
  3. 「サブネットグループの詳細」で[名前][説明]を入力し、[VPC]ではリストからサブネットグループを作成したいVPCを選択
  4. 「サブネットを追加」の[アベイラビリティーゾーン]で、リストの中から作成したサブネットが存在するアベイラビリティーゾーンを選択・[サブネット]で、リストの中から作成したサブネットを選択
  5. 2つ以上のアベイラビリティゾーンのサブネットをそれぞれ設定し、[作成]をクリック

これで完了!

内容

DBインスタンスのサブネットグループを変更

  1. ナビゲーションの[データベース]を選択
  2. [DBインスタンス]を選択し、[変更]をクリック
  3. 「接続」の[DBサブネットグループ]で新しいVPCに関連付けられているサブネットグループを選択

  1. 設定できたら、最下部の[続行]をクリック
  2. 「変更のスケジューリング」で[すぐに適用]を選択し、[DBインスタンスを変更]をクリック

※変更が反映するまで、10分程度かかります。

6.サブネットグループの変更が済んだら1と2の手順を行い、「接続」の[セキュリティグループ]で対象のRDSへに適切なセキュリティグループを選択
(何のセキュリティかというと、RDSを指定のEC2からのみアクセス可能にすること🙆🏻‍♀️)
※セキュリティグループが存在しない場合は、MySQLを許容するように作成して選択。

  1. 設定できたら、最下部の[続行]をクリック

  2. 「変更のスケジューリング」で[すぐに適用]を選択し、[DBインスタンスを変更]をクリック

※変更が反映するまで、10分程度かかります。

これで、RDSのDBインスタンスのVPC移行は完了!!

あとはデプロイの手順を行い完成!

さいごに

長くなりすぎてしまった!
実際に手を動かしてみて、メンターさんに聞きながら
自分が何をやっているのかイメージが湧いてきたかな🤔

デプロイのところでエラーが出てしまって、今日合格もらえなかったので
明日なんとかエラー解消させたい!

Discussion