[EC2×Route53]DNS設定を変更せずに環境切り替えを行う

EC2を使用したWEBページの環境切り替えをDNS設定を変更せずに行う手順の覚え書き。
OSのサポート切れで、環境移行を行ったり、同じドメインでサイトをリプレイスをするときなどに。
Elastic IPの関連付けを変更するだけなので、一瞬で切り替わります。

## イメージ図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/8918af49-d817-c1d1-a0d4-353621fa639b.png)



## 環境
* EC2: t2.micro, Amazon linux2
* ローカルPC：Windows10
 

## 前提条件
(1) EC2インスタンス（Amazon Linux2）2つを以下3つの条件で作成済であること

① セキュリティ（インバウンドルール）

|ポート範囲  |プロトコル（タイプ）  | ソース |
|---|---|---|
|22 |TCP（SSH）  |マイIP or 0.0.0.0/0  |
|80  |TCP（HTTP） |マイIP or 0.0.0.0/0  |
|443  |TCP（HTTPS）  |マイIP or 0.0.0.0/0   |
※「ソース」については、自身のローカルPCから確実に接続できる内容で記載しています。適宜変更してください。

② Elastic IP : EC2インスタンス2つに関連付け済

* 詳細は、 [Elastic IP | aws](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) を参照

③ Apacheをインストールして、各インスタンスのindex.htmlで表示されるページの内容を異なるものにしておく

* Windowsより、PuTTYでEC2インスタンスに接続する方法については、[PuTTY を使用した Windows から Linux インスタンスへの接続 | aws](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/putty.html) を参照

* Apacheのインストール、index.htmlの作成手順は、[CentOS 7でApacheをインストールし起動する | aws](https://qiita.com/S-Masakatsu/items/63b9e0e7a869d2aafc4b) を参照

(2) Route53にて、以下2つを実施していること

① ドメインが登録されていること
② DNS設定を完了していること（以下の手順では、後述のElastic IP1をドメインに紐づけているものとする）

* 詳細は、 [ドメイン名の登録 | aws](https://aws.amazon.com/jp/getting-started/hands-on/get-a-domain/) を参照

<b>※DNS設定は、Route53以外で行っても同様の方法で環境を切り替えられます。</b>

## 手順
以下の手順では、インスタンス、Elastic IPをそれぞれ以下の表に記載の名称で記載することとします。

|名称  |インスタンス  |プライベートアドレス  |
|---|---|---|
|EC2その1  |i-0e721XXXXX  |10.0.2.229 |
|EC2その2  |i-0a0b1XXXXX  |10.0.2.234 |

|名称  |Elastic IP  |
|---|---|
|Elastic IP1  |18.181.31.49  |
|Elastic IP2 |3.114.159.64  |


変更前のEC2とElastic IPの組み合わせは以下の通り

■変更前

|Elastic IP  |インスタンス  |プライベートアドレス  |組み合わせ|
|---|---|---|---|
|18.181.31.49 |i-0e721XXXXX |10.0.2.229|Elastic IP1 × EC2その1|
|3.114.159.64 |i-0a0b1XXXXX   |10.0.2.234 |Elastic IP2 × EC2その2|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/9bddd55f-f671-f25e-5d1e-1807ea29ff22.png)

※：モザイク部分は「XXXXX」で表現。Elastic IPは解放済のため、上記にアクセスしても筆者の環境にはアクセスできません。

### 1. 変更前アクセスチェック
「対象ドメイン/index.html」のURLを叩くと、EC2その1に配置したindex.htmlの内容が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/66c76fed-a038-9442-3497-dd0b3dbdd921.png)

### 2. Elastic IP1をEC2その2に割り当てる

(1) AWSコンソールのEC2にて、ナビゲーションペインのElastic IPをクリック（①）、Elastic IP1にチェック（②）、「アクション」を選択して（③）、「Elastic IPの関連付け」をクリック（④）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/1ec26b5c-2bc2-636c-dfb1-bf75064346b7.png)

(2) 画面遷移したら、「インスタンス」で「EC2その2」（①）、EC2その2のプライベートIPアドレスを選択（1択のみ）し（②）、「このElastic IPアドレスの再関連付けを許可する」にチェックを入れ（③）、「関連付ける」をクリック（④）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/51c53c03-2296-baa9-1912-f68fee22b84f.png)

(3) ナビゲーションペインにて、Elastic IPをクリックし、Elastic IP1がEC2インスタンス2に紐づいていること（①）、Elastic IP2に紐づいているインスタンスがないことを確認（②）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/4d500c81-f8ae-d7ef-80b9-829a5ce5a426.png)


### 3. Elastic IP2をEC2その1に割り当てる

(1) EC2のナビゲーションペインにてElastic IPをクリックし、Elastic IP2にチェックを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/8bda48e3-2542-7672-10e6-a0bc6079f029.png)


(2) 画面遷移したら、EC2その1 → EC2その1のプライベートIPアドレスを選択（1択のみ）し、「このElastic IPアドレスの再関連付けを許可する」にチェックを入れ、「関連付ける」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/39e0ea59-7447-0661-8372-b2cafb4b8d79.png)


(3) Elastic IP2がEC2インスタンス1に紐づいていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/d8dbfd58-c736-277c-30f9-3dd16a261635.png)

### 4. 変更後アクセスチェック
URLを叩くと、EC2その2に配置したindex.htmlの内容が表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/cd2f7188-a30a-0314-6913-25a2494db814.png)


変更後のEC2とElastic IPの組み合わせは以下の通り

■変更後

|Elastic IP  |インスタンス  |プライベートアドレス  |組み合わせ|
|---|---|---|---|
|18.181.31.49 |i-0a0b1XXXXX |10.0.2.234 |Elastic IP1 × EC2その2|
|3.114.159.64 |i-0e721XXXXX   |10.0.2.229|Elastic IP2 × EC2その1|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/b052f852-c420-4ab6-523d-0a040b0c3c73.png)


## 終わりに

この方法なら、環境切り替えが非常にスムーズ。
切り替え前の環境が不要になる場合は、EC2インスタンスの停止・終了と、Elastic IPの開放を忘れずに。