第三章: EC2とRoute53を使って独自ドメインでHello world!を表示させよう

### EC2を作成

1. awsのコンソール画面で[EC2]を選択
2. EC2のダッシュボードから「インスタンスを起動」ボタン押下
3. マシンイメージ(AMI)は一番先頭の「Amazon Linux 2」を選択
4. インスタンスタイプはt2.microのままで[インスタンスの詳細の設定]ボタンを選択
5. 画像のように作成したVPC, Subnet, IAMを選択し自動パブリックIPアドレスは「有効」にしときましょう。それから下にスクロールして「高度な詳細」を開き下のbashスクリプトを貼り付けてください。
![スクリーンショット 2020-10-15 22.50.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528444/2d822a9d-3d30-acdf-5aa2-b8e9a0fa2fed.png)
<details><summary>bashスクリプト</summary><div>

```#!/bin/bash
# アパッチのインストール
sudo yum update -y
sudo yum install httpd -y 
sudo systemctl start httpd.service
sudo systemctl enable httpd.service

# hello worldの確認
sudo echo "hello world!" > /var/www/html/index.html

# cloud watchに出力する logの設定
sudo yum install -y awslogs
sudo systemctl start awslogsd
sudo systemctl enable awslogsd.service
```
</div></details>
6. そしたら「ストレージの追加」
7. そのまま「タグの追加」
8. キーは「Name」、値は「my-best-ec2-1a」を入力して「セキュリティーグループの設定」
9. 既存のセキュリティーグループの「my-best-sg」を選択して「確認と作成」
10. 内容を確認したら「起動」ボタン押下
11. キーペアを選択するモーダルが出るが、既存のキーペアを持ってるなら選択して「インスタンスの作成」※初めて作成する場合はキーペアのファイルをダウンロードする

### 作成したEC2を色々と操作してみよう
インスタンスのタブに行き、インスタンスの状態が「実行中」となったらパブリック IPv4 アドレスをコピーしてブラウザに貼り付けてください。hello world!と表示されましたでしょうか
![スクリーンショット 2020-10-15 23.25.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528444/d7fe0c1b-f622-011d-12e9-53d16db50897.png)

AWSのコンソールでCloudWatchを検索し、ロググループに「/var/log/messages」というロググループができていますでしょうか。このタブをの中を見るとec2のサーバーログが確認できると思います
![スクリーンショット 2020-10-15 23.29.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528444/a68e6b36-e68c-a731-8d49-d8648ddc3c51.png)

### EC2のバックアップを作成してみよう
ec2のハードディスクであるボリュームからsnapshotをとって複製し、バックアップを取る流れです。
1. awsのEC2からボリュームタブを選択してください
2. 起動してるec2[my-best-ec2-1a]を選択しアクションから「スナップショットの作成」を選択
3. 説明とキーバリューを下の画像の様に入力し、「スナップショットの作成」押下
![スクリーンショット 2020-10-15 23.43.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528444/fd64d2bd-14db-ef96-76f4-8ddda4cb943d.png)
4. 起動してるec2にsshで接続しましょう。macであればターミナルを開いて接続。([]は二つとも省略してください)

```
ssh -i [ディレクトリ/pemキーのファイル名.pem] ec2-user@[パブリック IPv4 アドレス]
```

５. 接続したらindex.htmlファイルを編集します。
vimの簡単操作: 
i   ->   書き込みモード 
esc  ->  書き込みモード終了
:wq  ->  保存してvimを閉じる

```
# vimエディタ起動
sudo vi /var/www/html/index.html
# 編集画面になったら hello world!の後ろに[編集]を追加
hello world! 編集!←追加
```
６. 編集したらブラウザで反映されているか確認をし、ec2を停止します。[my-best-ec2-1a]を選択してアクションからインスタンスを停止
7. EC2のスナップショットタブから先ほどの[my-best-ec2-snapshot]を選択し、アクション→「ボリュームの作成」を選択
8. キーバリューに**Name**, **my-best-ec2-volume**を入力して「ボリュームの作成」押下
9. ボリュームタブへ行き、「my-best-ec2-1a」のボリュームをアクションから「ボリュームのデタッチ」
10. 先ほど作った「my-best-ec2-volume」のボリュームをアクションから「ボリュームのアタッチ」
11. インスタンスを[my-best-ec2-1a]にし、デバイスを[/dev/xvda]に設定する。終わったら[アタッチ]を押す
![スクリーンショット 2020-10-16 0.20.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528444/13d00b04-750f-a848-5df8-c2dea8b7486b.png)
12. もう一度ec2を起動してブラウザで確かめてください。先ほどのhello world!のままになってると思います。**※先ほどとはパブリックIPアドレスが変わっていると思うので新しいIPアドレスで確認してください。**

## Elastic IPアドレスを紐づける

今のままだとパブリックIPアドレスがインスタンスを停止するたびに変わってしまいます。そうならないためにElastic IPアドレスをEC2に紐づけてIPアドレスを固定しましょう

1. awsのEC2から「Elastic IP」を選択します
2. 「Elastic IP アドレスの割り当て」を押す
3.  そのまま「割り当て」を押す
4.  作成されたIPアドレスを選択し、アクションから「Elastic IP アドレスの関連づけ」を押す
5.  インスタンスは**my-best-ec2-1a**を選択して、「関連づける」押下
6.  EC2が起動中だった場合は再起動をするとパブリック IPv4 アドレスがElastic IPアドレスに変わってると思います。

### 独自ドメインでアクセスできる様に設定をする
以前お名前.comから取得したドメインをRoute53に登録したと思います。今度はそのドメインにEC2のIPアドレスを登録しましょう。

1. EC2のパブリックIPアドレスをコピーしておいてください
2. AWSのコンソール画面から[Route 53]を検索してホストゾーンから登録したドメインを選択します。以下の画面になったら「レコードを作成」を押す
![スクリーンショット 2020-10-16 0.43.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528444/da48a5d7-3db4-ccf0-6d35-60d3837753cd.png)
3. シンプルルーティングのまま次へ
4. 画像の様に設定したら[シンプルなレコードを定義]押下
![スクリーンショット 2020-10-16 0.45.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528444/3e15b835-a657-3920-26a8-ae35a7bb5fe8.png)
5. 確認したら「レコードを作成」を押下
6. ブラウザでドメインを入力して**hello world!**が表示されていれば成功です


[前へ: 第二章: VPCやサブネット等の設定をしよう](https://qiita.com/Yuuki46240345/private/e7631c3172ffba52ede6)
[次へ: 第四章: ELBとRoute53を使って独自ドメインををSSL化してHello worldを表示させよう](https://qiita.com/Yuuki46240345/private/a148b10db7bf1aa904ab)