【AWS環境構築メモ⑤】EC2インスタンスを作成する

## 0.はじめに

前々回作成した**VPCのパブリックサブネット**に**EC2**を設置していきます。

- **EC2**

「Elastic Compute Cloud」の略称。AWS上に仮想サーバー設置して操作できる。
EC2では仮想サーバの事を「インスタンス」という単位で扱い、
この中にアプリを設置して操作できるようになります。

![スクリーンショット 2022-03-27 0.27.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/8e7f9428-c4eb-58e8-f530-e0e42b5ffa67.png)

## 1.前回の記事

**[【AWS環境構築メモ④】セキュリティーグループを作成する](https://qiita.com/yuuichimizuta/items/5d3b9e4872ad8ae1db4f)**

## 2.前提条件

- **AWSアカウント作成済み**
- **リージョンはアジアパシフィック(東京) ap-northeast-1**
- **VPC作成済み**
- **セキュリティーグループ作成済み**

## 3.作成手順(サマリー)

|順番|手順|
|---|---|
|1|EC2インスタンスの作成|
|2|秘密鍵を~/.sshへ移動|
|3|Elastic IPを割り当てて、インスタンスに関連付ける|
|4|EC2インスタンスへSSH接続|

## 4.作成手順

### 1.EC2インスタンスの作成

![スクリーンショット 2022-03-26 18.51.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/9edd859c-1f2c-0d63-6608-5ede8e578151.png)

- **サービスよりEC2を選択 → EC2ダッシュボード → [インスタンスを起動]をクリック**

![スクリーンショット 2022-03-26 18.51.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/cc843fd3-8d46-5661-a320-24a1417bc052.png)

**Amazon マシンイメージの選択**

- **無料枠対象の[Amazon Linux 2]を選択**

![スクリーンショット 2022-03-26 18.52.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/0a9f8ce3-a82d-358c-032c-cf61a08ac9a4.png)

**インスタンスタイプの選択**

- **無料枠対象の[t2.micro]を選択**
- **[次のステップ : インスタンスの詳細を設定]をクリックする**

![スクリーンショット 2022-03-26 18.52.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/880b2179-63f5-b5c9-7de6-bb5066f1169e.png)

**インスタンスの詳細を設定**

- **ネットワーク**
  - 対象のVPC(作成したVPC)
- **サブネット**
  - パブリックサブネット 1a　を選択
- **その他はデフォルトのまま**
- **[次のステップ : ストレージの追加]をクリックする**

![スクリーンショット 2022-03-26 18.53.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/cbe08d92-b683-874d-577c-279dd00b2b49.png)

**ストレージの追加**

- **ボリュームタイプ : 汎用 SSD(gp2) を選択**
- **[次のステップ　: タグの追加]をクリックする**

![スクリーンショット 2022-03-26 18.53.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/7b716032-02c4-96c9-51f1-6bd844ff786a.png)

**タグの追加**

- **キー : Name**
- **値 : 何のサーバーなのか分かりやすいタグにする。**
  - 〇〇-app-1a, 〇〇-web-1a　など。〇〇はVPC名かサービス名がおすすめ。
- **[次のステップ : セキュリティーグループの設定]をクリックする**

![スクリーンショット 2022-03-26 18.53.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/2eb6055c-3122-7614-9864-d5162beb74a1.png)

**セキュリティーグループの設定**

- **セキュリティーグループの割り当て : 既存のセキュリティーグループを選択**
- **EC2用に作成したセキュリティーグループを指定する**
- **[確認と作成]をクリックする**

![スクリーンショット 2022-03-26 18.54.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/38a6d826-64d2-1cab-08d2-6d92fe31b150.png)

**設定の確認をします**

- **確認して問題なければ[起動]をクリックする**
- <font color="Red">**[起動]をクリックすると、キーペア作成画面が表示される**</font>
  - 新しいキーペアの作成を選択
  - キーペア名 : サービス名-ec2-user　など分かりやすい名前がおすすめ
  - キーペアのダウンロードをクリックする(秘密鍵がダウンロードされる)
  - **[インスタンスの作成]** をクリックして完了

![スクリーンショット 2022-03-26 23.45.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/316ff15f-313b-6d1c-e2f7-f93276fd8bd7.png)

**インスタンス作成完了まで少し時間がかかります**

- **インスタンス作成完了後、インスタントが実行中になっていることを確認します**

<font color="Green">**EC2インスタンスの作成が完了しました**</font>

### 2.秘密鍵を~/.sshへ移動

**先程キーペア作成した時にダウンロードした秘密鍵を~/.sshに移動します**

- おそらく**ダウンロードフォルダ**にあると思うので確認してみます

```:ターミナル
$ ls -l ~/Downloads/キーペア名.pem
```
- 確認できたら、次は~/.sshディレクトリがあるかどうか確認する

```:
$ ls -la ~

// 存在しなかった場合は以下を実行

$ mkdir ~/.ssh
```
- **秘密鍵が存在するディレクトリに移動して、mvコマンドを実行し~/.ssh配下に移動させる**

```:
$ cd ~/Downloads
$ mv キーペア名.pem ~/.ssh
```

- **秘密鍵が移動できたことを確認**

```:
$ cd ~/.ssh
$ ls -l キーペア名.pem
```
- **秘密鍵の権限を変更する**
  - `600` : 所有者だけが読み取り・書き込みできる権限 `rw-------`

```:
$ chmod 600 ~/.ssh/キーペア.pem
```

### 3.Elastic IPを割り当てて、インスタンスに関連付ける

**Elastic IPを割り当てて、先程作成したEC2インスタンスに関連付けます**

![スクリーンショット 2022-03-27 0.42.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/30c099d4-9ecd-e805-b546-052e2ec1e11b.png)

- **Elastic IP → [Elastic IP アドレスを割り当てる]をクリックする**

![スクリーンショット 2022-03-27 0.53.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/af8a7bf5-cb2a-4a2b-c0a7-8cf81b779ad8.png)

- **Elastic IP　アドレスの設定**
  - ネットワークグループ : ap-northeast-1
  - パブリック IPv4 アドレスプール : AmazonのパブリックIPv4アドレスプールを選択
- **タグ**
  - 任意
- **[割り当て]をクリックする**

![スクリーンショット 2022-03-27 0.46.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/135167ca-d33b-6c2f-c822-f78c2fba14ad.png)

**Elastic IP アドレスをインスタンスに関連付ける**

- **作成したElastic IP アドレスを選択**
- **[Elastic IP アドレスの関連付け]を選択**

![スクリーンショット 2022-03-27 0.46.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/c2889dbe-0ce2-159b-fd16-8e83285b2265.png)

- **インスタンス**
  - 先程作成したEC2インスタンスを指定
- **プライベート IP アドレス**
  - 先程作成したEC2インスタンスのプライベート IP アドレスを指定
- **[関連付ける]をクリックする**

<font color="Green">**Elastic IP アドレスの関連付けが完了しました**</font>

### 4.EC2インスタンスへSSH接続

**作成したEC2インスタンスにSSH接続してみます**

- **SSH接続**
  - 以下のコマンドを実行

```:ターミナル
$  ssh ec2-user@関連付けたElasticIPアドレス -i ~/.ssh/キーペア名.pem

 // 以下が表示されたらyesと入力。

Are you sure you want to continue connecting (yes/no)?
```

- **以下のように表示されればSSH接続成功**

```:ターミナル
Last login: Fri Mar  4 21:03:05 2022 from xxx

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
7 package(s) needed for security, out of 24 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-xx-x-xx-x ~]$
```

## 5.最後に

以上でEC2インスタンスの作成は完了しました。

今回はタスクも多く、難しい用語もたくさん出てきたのでかなり苦労しましたが、このように記事に残せて嬉しいです!

まだまだ理解不足なので、これからも学習を続けてもっと実践的な記事を書きたいです!

**次回はACMでSSL証明書を発行をしていきます。**

**次回 : [【AWS環境構築メモ⑥】ACMでSSL証明書を発行する](https://qiita.com/yuuichimizuta/items/61f22085342430a69a32)**

## 6.参考

https://qiita.com/hiroshik1985/items/f078a6a017d092a541cf

https://qiita.com/kanegoon/items/4bcdf5184cf1752eb44f

https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase2

https://qiita.com/Jerid/items/d5dd3a29ed9a0e374493#:~:text=Elastic%20IP%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%B8%E3%81%AE%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91&text=%E3%80%8C%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%8D%E3%81%8B%E3%82%89%E3%80%8CElastic%20IP,%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91%E3%80%8D%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%BE%E3%81%99%E3%80%82&text=%E3%80%8C%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%80%8D%E3%81%AB%E3%81%AF,%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82