AWSの開発環境構築手順：EC2編

# EC2とは？

ChatGPTに質問しました。

> Q:EC2に関しても教えてください

> A:
Amazon EC2（Elastic Compute Cloud）は、AWSが提供するスケーラブルな仮想サーバーのサービスです。
必要なときにオンデマンドでコンピューティングリソースを立ち上げられ、CPU、メモリ、ストレージなどを自由に選択できます。
EC2インスタンスの利用時間に応じて料金が発生するため、コスト効率よくサーバーを運用できます。
また、オートスケーリングやElastic Load Balancingなどと組み合わせて、トラフィックの変動に応じたスケーラビリティの向上も可能です。

いわゆるサーバーです。
Amazon Linux、Ubuntu、Red HatなどのOSを使用することができます。

ここで出てくるElastic Load Balancing(ELB)は、一般的にロードバランサー・負荷分散装置とも呼ばれます。
仮にサーバーが一台で、想定以上のアクセス数に耐え切れずダウンしてしまうと、サービスが止まってしまいます。
ELBによって複数サーバーに負荷分散をすることによってそれを防ぐことができます。
※ELBの手順も執筆予定

# 作業内容

## インスタンスを起動

EC2の画面に遷移して、[インスタンスを起動]ボタンを押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/89a611f9-23c8-7168-643e-3682e54071fa.png)
<br>

- 「名前」を入力する
※本記事ではproject-dev-ec2とする
- 「アプリケーションおよびOSイメージ」で「Amazon Linux」を選択する
※執筆時点で最新の「Amazon Linux 2023」を使用する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/8c95bfb7-cfbb-3803-c316-a477843adceb.png)
<br>

- 「インスタンスタイプ」を選択する
※ひとまず無料枠のt2.microを選択
- 「キーペア」で「新しいキーペアの作成」をする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/07f09a46-cf36-d0c5-921d-75e79b9ed4c7.png)
<br>

- 「キーペア名」を入力する
- 「キーペアのタイプ」：RSA
- 「プライベートキーファイル形式」：.pem
- [キーペアを作成]を押す
**※この時、秘密鍵がダウンロードされるので必ず保管する**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/eb8852fe-8a54-a80a-4b20-4d2e72b0e400.png)
<br>

その後、作成したキーペアが選択された状態になっていることを確認する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/978adcd2-1f98-76d0-d494-232c604cd36a.png)
<br>

「ネットワーク設定」の[編集]ボタンを押すと詳細な項目が表示される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/737f7d77-de3d-865c-e446-df7356a41202.png)
<br>

- 「VPC - 必須」で、作成したproject-dev-vpcを選択する
- 「サブネット」が「project-dev-subnet-public1-ap-northeast-1a」になっていることを確認する
- 「パブリックIPの自動割り当て」が無効化になっていることを確認する
※後でElasticIPと関連付ける
- 「ファイアウォール」で「既存のセキュリティグループを選択する」を選択する
- 「共通のセキュリティグループ」で、project-dev-ec2-sgを選択する

※ElasticIPとは固定のIPアドレスで、AWSで使用する単語です。
「パブリックIPの自動割り当て」にすると、インスタンスを起動する度にIPアドレスが変わってしまうので、ElasticIPを使用することで固定化することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/bc8a30e1-d5ee-5a24-d272-6f0a6877cdb4.png)
<br>

[インスタンスを起動]する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/03fd33f0-6a09-8807-be00-f22777d0e283.png)
<br>

しばらく待って、ステータスチェックが完了するまで待機

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/82564f90-9331-bd53-da1c-c0a66da0f537.png)


## ElasticIPを割り当て、関連付ける

EC2>ネットワーク＆セキュリティ>Elastic IPと進み、[Elastic IP アドレスを割り当てる]ボタンを押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/76923578-f8c8-f421-8711-01ef52680002.png)
<br>

特に入力せず[割り当て]を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/cfdbddcc-fe0b-e3e5-3b37-b4092beea0a1.png)
<br>

[このElastic IP アドレスを関連付ける]を押す
※チェックボックスにチェック>アクション>このElastic IP アドレスを関連付ける、でもOK

![ip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/e2bb1741-c7ef-bfc3-0283-03914ed6c2ea.png)
<br>

先に作成したEC2インスタンスを選択して、[関連付ける]を押す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3836454/7986de86-25b8-5f8b-41dc-ac5f99b40373.png)
<br>

## SSH接続でインスタンスに入れることを確認する

キーペア作成時にダウンロードした秘密鍵の場所を確認する
※今回は`~/.ssh/`に配置

下記コマンドでlogin
※初回はフィンガープリントの確認が表示されるので`yes`と入力する

```
ssh -i ~/.ssh/project-dev-ssh-key-pair.pem ec2-user@<Elastic IPアドレス>
```

下記みたいになればOK

```
shin-gee@workspace:~$ ssh -i .ssh/project-dev-ssh-key-pair.pem ec2-user@11.22.333.44
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
Last login: Thu Oct 24 07:32:31 2024 from 555.66.77.88
[ec2-user@ip-11-2-3-444 ~]$
```

※余談
`ec2-user`はAmazon Linuxの場合のデフォルトのユーザーなので、OSによって異なる

# 参考記事

- [ロードバランサー（Load Balancer）とは](https://www.ntt.com/bizon/glossary/j-r/load-balancer.html)