初めに
今回ネットワーク勉強ということで簡易的なVPC構築からしていきました。
構成図

構築手順
VPC作成

VPC設定はVPCなどを選択
これは自動でネットワークに必要なパーツ(VPC・サブネット・ルートテーブル・IGW)を、AWSが一括生成してくれるみたいです。
IPv4 CIDR ブロックの設定
このVPC全体で利用するプライベートIPアドレスの範囲を指定します。今回はデフォルトの 10.0.0.0/16 を設定
10.0.0.0/16の分解と意味
10.0.0.0(開始IPアドレス)
プライベートIPアドレス(社内LANなどで自由に使えるIP)のスタート地点
/16(サブネットマスク / プレフィックス長)
アドレスの範囲を指定する数値
左から16ビット分(10.0. まで)を固定し、残りの部分を自由に変えられるようにする設定

AZの数は分かりやすくするために1つにします。
パブリックサブネットの数はEC2を置く場所として1つを選択します。
プライベートサブネットの数は今回使用しないので0を選択します。
NAT ゲートウェイも今回は使用しないのでなしを選択します。
VPCエンドポイントは今回EC2にWebサーバーを立てて疎通確認をするだけなので、S3を使わないなら「なし」でも問題ないです。

この二つは両方チェックを入れます。
DNSの名前解決を使用するため
この設定でVPCの作成をします。

作成後のVPC詳細画面にある「リソースマップ」を確認すると、先ほど設定した サブネット ➔ ルートテーブル ➔ インターネットゲートウェイ / S3エンドポイントが自動的に紐付けられて一本道で繋がっていることが視覚的に確認できます。
EC2インスタンス作成
先ほどVPC構築の際に作成したパブリックサブネットにEC2インスタンスを作成します。
設定
OSの種類 Amazon Linux 2023
インスタンスタイプ t3.micro

キーペアはすでにある方はそれを使用してない方は新たに作成してください

次にネットワーク設定ですがネットワークが vpc-0c0f7…(デフォルトVPC)になっています。
このままだと、せっかく先ほど作成したプロジェクト-vpc や パブリックサブネット の中にEC2が配置されませんので編集します。
⚠️VPCを切り替えたタイミングでパブリックIP自動割り当てが無効になることがあるので変更後は有効化にしてください

追加で同じ編集画面からインバウンドセキュリティグループのルールからWebブラウザで通常使用される 「80番ポート」 への通信を通す設定でタイプHTTPに変更します。

ストレージ設定はデフォルトのままです。
最後に高度な詳細のユーザーデータに以下のコマンドを入力

#!/bin/bash dnf install -y httpd systemctl start httpd systemctl enable httpd
コマンド詳細
| コマンド | 意味 |
|---|---|
| #!/bin/bash | Bash(Linuxのコマンドライン)で実行するスクリプト |
| dnf install -y httpd | Webサーバーソフトである Apache(httpd) を自動でインストールする(-y は確認をすべてYesでスキップ) |
| systemctl start httpd | インストールした Apache(Webサーバー)を起動 する |
| systemctl enable httpd | サーバーが再起動した際にも Apacheが自動で再起動 するように設定 |
チェックは入れなくも大丈夫です。
設定は以上で作成します。

これで一通りできたので疎通確認を実施していきます。
パブリックIPv4アドレスをコピーしてブラウザに貼ります。
⚠️貼り付ける際に先頭に`http://`をつけてください。今回許可しているのがHTTP通信ですのでそのまま貼ってしまうとhttpsになってしまう可能性があるので

開くと無事に表示されました。
今回の通信の流れ
- ブラウザ➔ インターネット
http://パブリックIPv4アドレスを入力すると、PCは「パブリックIPv4アドレスのサーバーにWebページを見せて」というデータ(HTTPリクエスト)をインターネット上へ投げる。
-
インターネット ➔ インターネットゲートウェイ
世界中のルーターを巡り、そのリクエストはAWSにある自分のVPCの玄関口 「インターネットゲートウェイ」 に到着。
-
IGW ➔ ルートテーブル ➔ パブリックサブネット
インターネットゲートウェイを通った通信は、ルートテーブルのルール(0.0.0.0/0 = 外部からの通信をサブネットへ流す)に従って、目的地の パブリックサブネット へ入っていく。
-
パブリックサブネット ➔ セキュリティグループ
サブネットの入口(またはEC2の直前)で、セキュリティグループがチェックを行います。
「HTTP(80番ポート)からの通信だな?良し、ルールで許可されているから通す」と門が開く。
-
セキュリティグループ ➔ EC2(Apache) ➔ ブラウザ(表示完了)
EC2インスタンス内部に通信が届きます。
まとめ
今回は、AWSの基本となるネットワーク基盤(VPC)を構築し、EC2インスタンス上にWebサーバーを立てて外部からのアクセス(疎通確認)をしたことで普段触れることのないサービスに対する知識が深まりました。
最後に心がけておきたい事は以下です。
EC2は使わない時は停止!
不要なら削除!(VPCも)
以上です。最後までお読みいただきありがとうございます🙇