最小構成のネットワークにEC2を配置してみる

# はじめに
最小構成のネットワークを作成し、EC2を配置します。
最後にターミナルからEC2に接続します。
AWSってこんなふうに操作するんだなぁ、くらいの理解を目指します。

比較的細かく手順を記述したため、ボリューミーになってしまいましたが、操作自体は難しくないはずです。


# 前提条件
- AdministratorAccessが付与されたIAMユーザを使用します。

# ローカル環境
```terminal
$ sw_vers
ProductName:		macOS
ProductVersion:		13.1
BuildVersion:		22C65
```

# 完成イメージ
本記事では、この完成イメージの構成要素を1つずつ作成していきます。
![structure.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/3fe53961-f783-31be-5ff5-18b5739e68e0.png)

# 注意
- 本記事では、EC2インスタンスを起動します。
  途中で作業をやめる場合は手順最後の**EC2インスタンスの停止**を実施するようにしましょう。
  停止しない場合、料金が発生する可能性があります。
- 実施する時期によって画面構成や項目名が異なる可能性があります。
  異なる場合、その都度操作画面に対応する形で置き換えてください。

# 実施
- 本手順は、TestUserという名前のアカウントで操作します。
- 操作は、以降の手順を上から順番に実施していきます。

## リージョン選択
１. AWSにIAMユーザでサインインします。
２. 画面右上のリージョンから「**東京**」を選択します。
![001_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/ebf4e8af-202b-c210-ac2a-cc92c372d168.png)

## VPC
１. AWSコンソール画面の検索窓に「**vpc**」と入力し、機能の「**VPC**」を選択します。
![002_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/d09398f9-ea2b-f0ad-f8b2-65599e1cfde7.png)
２. 「**VPCを作成**」を選択します。
３. 以下の設定をして「**VPCを作成**」を選択します。
- 作成するリソース:
    - VPCのみ
- 名前タグ:
    - test-vpc
- IPv4 CIDR ブロック:
    - IPv4 CIDR の手動入力
- IPv4 CIDR:
    - 10.0.0.0/16
- IPv6 CIDR ブロック:
    - IPv6 CIDR ブロックなし
![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/ffcbb99a-8ea5-2e1e-5ec6-55c6ceff173c.png)

画面上部に「正常に作成されました」 と表示されていれば、VPCの作成は完了です。
![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/3890e520-e3e9-7b6a-74f9-b23371599466.png)

## サブネット
１. 画面左のメニューから「**サブネット**」を選択します。
２. 「**サブネットを作成**」を選択します。
３. 以下の設定をして「**サブネットを作成**」を選択します。
- VPC ID:
    - test-vpc
![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/b91e7229-fde7-faba-b73a-174e0e88be8c.png)
- サブネット名:
    - test-subnet
- アベイラビリティーゾーン:
    - ap-northeast-1a
- IPv4 CIDR ブロック:
    - 10.0.1.0/24 
![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/7d431dcd-8823-e2f4-e084-42fb9b0db89d.png)

画面上部に「正常に作成されました」 と表示されていれば、サブネットの作成は完了です。
![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/1b4ff2fd-284c-9334-c66e-358dafdd949c.png)

## インターネットゲートウェイ
１. 画面左のメニューから「**インターネットゲートウェイ**」を選択します。
２. 「**インターネットゲートウェイの作成**」を選択します。
３. 以下の設定をして「**サブネットを作成**」を選択します。
- 名前タグ:
    - test-internet-gateway

タグが自動で設定されます。
![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/0e37908a-3ceb-181a-b07c-47019e968a12.png)

画面上部に「正常に作成されました」 と表示されていれば、インターネットゲートウェイの作成は完了です。
![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/a2c30785-289e-af4a-c795-ab43937e0dd5.png)

４. 画面左のメニューから「**インターネットゲートウェイ**」を選択します。
５. 作成したインターネットゲートウェイを選択し、アクションから「**VPCにアタッチ**」を選択します。
![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/684c3901-e95b-4ad6-89f1-ef985d72d47c.png)
６. 以下の設定をして「**インターネットゲートウェイのアタッチ**」を選択します。
- 使用可能な VPC:
    - test-vpc

![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/8e3be286-a836-7ba1-1c23-b39b1da86f97.png)

画面上部に「正常に作成されました」 と表示されていれば、インターネットゲートウェイの作成は完了です。
![012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/6a3a95e7-8956-e716-6eb3-9c2643562675.png)

## ルートテーブル
１. 画面左のメニューから「**ルートテーブル**」を選択します。
２. 「**ルートテーブルを作成**」を選択します。
３. 以下の設定をして「**ルートテーブルを作成**」を選択します。
- 名前タグ:
    - test-route-table
- VPC
    - test-vpc

タグが自動で設定されます。
![013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/42a6dc9f-5bc8-aa9c-fc93-bb902ff770f5.png)
４. 画面左のメニューから「**ルートテーブル**」を選択します。
５. 作成したインターネットゲートウェイを選択し、アクションから「**ルートを編集**」を選択します。
![014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/b1581c77-2bc1-8151-b0a4-72d72ef61897.png)
６. 「**ルートを追加**」を選択し、以下の設定をして「**変更を保存**」を選択します。
- 送信先:
    - 0.0.0.0/0
- ターゲット:
    - インターネットゲートウェイ
        - test-internet-gateway

![015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/a337184f-aca5-10f3-bc31-2c7baffc382a.png)
７. 画面左のメニューから「**ルートテーブル**」を選択します。
８. 作成したインターネットゲートウェイを選択し、アクションから「**サブネットの関連付けを編集**」を選択します。
![016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/7797a555-70db-884f-67a0-5262eb97934e.png)
９. 「test-subnet」を選択し、「**関連付けを保存**」を選択します。
１０. 画面左のメニューから「**ルートテーブル**」を選択します。
![017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/5afbd757-1822-4d44-6088-e03c1285eadd.png)
１１. 画面左のメニューから「**ルートテーブル**」を選択します。
作成したインターネットゲートウェイの明示的なサブネットの関連付けに「**test-subnet**」と表示されていれば設定は完了です。
![018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/5b143b96-1294-8475-77f6-e4847360ba81.png)

## キーペア
１. AWSコンソール画面の検索窓に「**ec2 キーペア**」と入力し、機能の「**キーペア**」を選択します。
![019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/7fe01b14-5730-52ae-e5d4-4688536ed8cf.png)
２. 「**キーペアを作成**」を選択します。
３. 以下の設定をして「**VPCを作成**」を選択します。
- 作成するリソース:
    - VPCのみ
- 名前:
    - test-key-pair

![020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/2ff203b8-4be9-aa7e-9a5b-b928656653cb.png)

画面上部に「正常に作成されました」 と表示されていれば、インターネットゲートウェイの作成は完了です。
![020_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/c438222c-40f3-8ec1-4bb3-6341c6b1171f.png)
**この時、秘密鍵が自動でダウンロードされるので、紛失しないように大切に保管しましょう。**
このファイルは、EC2インスタンスにSSHで接続する際に使用します。


## セキュリティグループ
１. 画面左のメニューから「**セキュリティグループ**」を選択します。
２. 「**セキュリティグループを作成**」を選択します。
３. 以下の設定をして「**セキュリティグループを作成**」を選択します。
- セキュリティグループ名:
    - TestSecurityGroup
- 説明:
    - Test Security Group
- VPC:
    - test-vpc
![021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/7948237c-30dc-1c7d-f4f3-6ec693310ce2.png)
- インバウンドルール:
    - タイプ:
        - SSH
    - ソース:
        - マイIP 
![022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/fabb4939-468b-af37-a9ee-a913fc1db1fe.png)

## EC2インスタンス
１. 画面左のメニューから「**インスタンス**」を選択します。
２. 「**インスタンスを起動**」を選択します。
３. 以下の設定をして「**インスタンスを起動**」を選択します。
Name and tags
- 名前:
    - test-ec2
![023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/cb4a5a8f-9803-a6d8-a847-efaea5d079bf.png)

- Amazon マシンイメージ (AMI):
    - Amazon Linux 2023 AMI
![024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/fa7368de-2bc0-c95b-cedf-de70222db2b3.png)

- インスタンスタイプ
    - t2.micro
![025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/f963efcc-8018-1bae-266e-d95086e109f2.png)

- キーペア名
    - test-key-pair
![026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/c720a2d1-8440-0fae-f3df-2e1832696a32.png)

- VPC
    - test-vpc
- サブネット
    - test-subnet
- パブリック IP の自動割り当て 
    - 有効化
- ファイアウォール (セキュリティグループ)
    - 既存のセキュリティグループを選択する
- 共通のセキュリティグループ
    - TestSecurityGroup

![027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/3b565fa6-d00a-fd41-3a8f-c788773c7654.png)
画面上部に「成功」 と表示されていれば、EC2インスタンスの作成は完了です。
この時、インスタンスは作成と同時に起動していることに注意しましょう。
![028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/3e700da3-0e0f-9122-460d-f14966393d45.png)

## EC2インスタンスへの接続
１. ターミナルを立ち上げ、秘密鍵のファイルの権限を変更します。
```terminal
chmod 400 test-key-pair.pem 
```
２. EC2インスタンスへSSH接続します。
```terminal
ssh -i test-key-pair.pem ec2-user@3.112.68.208
```
@の後のIPアドレスは、EC2インスタンスのパブリック IPv4 アドレスを指定します。
![029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/9d13f10b-1504-bce2-6079-ff6ddfbc9099.png)
途中、接続を継続するか否かを聞かれるので、「yes」と入力しましょう。
```terminal
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
```

以下のように表示されれば接続成功です。
```terminal
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
```

## EC2インスタンス停止
１. 作成したEC2インスタンスをチェックし、インスタンス状態から「**インスタンスを停止**」を選択します。
インスタンスを削除する場合、「**インスタンスを終了**」を選択します。
![030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/ab683813-da0c-7946-6486-bfd1532f4799.png)
２. 本当に停止するかどうかをきかれるので「停止」を選択します。
![031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/b8b07d0e-8575-2249-e6c1-833f1a4ddd6c.png)
３. EC2インスタンスのインスタンスの状態が「**停止済み**」になっていれば完了です。
![032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1237378/df2a3252-ee82-7b44-7af8-e3f7e8b7b1a3.png)

# 終わりに
初心者からすると、「EC2の構築」ときくだけでハードルが高く感じてしまいますが、本手順を繰り返し実施することで作業に慣れることができると考えています。