1. 初めに
オンプレミスLinuxの学習とクラウドの学習を兼ねて、AWS上でインフラを構築してみました。
2. 構成図
3. 全体設計
ネットワーク
- VPC : 10.0.0.0/16
- Public-1a : 10.0.0.0/24 ← NATゲートウェイ、ALB
- Private-1a : 10.0.1.0/24 ← Web-1
- Public-1c : 10.0.2.0/24 ← ALB
- Private-1c : 10.0.3.0/24 ← Web-2
Security Group
- ALB用SG : 0.0.0.0/0から 80, 443ポート許可
- EC2用SG : ALB用SGから 80ポート許可
ALB
- HTTPはHTTPSへリダイレクト
- seenewlab.site → Web-1
- sub.seenewlab.site → Web-2
4. ネットワーク作成
下記の順でネットワークを作成します。
- VPC作成
- Subnet作成
- IGW作成
- EIP取得
- NATGW作成
- Route Table作成
- Security Group作成
1. VPC作成
VPC → お使いのVPC → VPCを作成
2. Subnet作成
VPC → サブネット → サブネットを作成
Public-1a
- VPC : seenew-vpc
- サブネット名 : seenew-public-1a
- AZ : ap-northeast-1a
- IPv4 サブネット CIDRブロック : 10.0.0.0/24
Private-1a
- VPC : seenew-vpc
- サブネット名 : seenew-private-1a
- AZ : ap-northeast-1a
- IPv4 サブネット CIDRブロック : 10.0.1.0/24
Public-1c
- VPC : seenew-vpc
- サブネット名 : seenew-public-1c
- AZ : ap-northeast-1c
- IPv4 サブネット CIDRブロック : 10.0.2.0/24
Private-1c
- VPC : seenew-vpc
- サブネット名 : seenew-private-1c
- AZ : ap-northeast-1c
- IPv4 サブネット CIDRブロック : 10.0.3.0/24
3. IGW作成
VPC → インターネットゲートウェイ → インターネットゲートウェイの作成
- 名前 : seenew-igw
作成後、IGW詳細 → アクション → VPCにアタッチ
- VPC : seenew-vpc
4. EIP取得
VPC → Elastic IP → Elastic IP アドレスを割り振る
5. NATゲートウェイ作成
VPC → NATゲートウェイ → NATゲートウェイを作成
- 名前 : seenew-nat
- アベイラビリティーモード : ゾーナル
- サブネット : seenew-public-1a
- 接続タイプ : パブリック
- Elastic IP 割り当て ID : 先ほどのEIP
6. Route Table作成
VPC → ルートテーブル → ルートテーブルを作成
Public Route Table
- 名前 : seenew-public-rtb
- VPC : seenew-vpc
作成後、ルート編集 → ルートを追加
- 送信先 : 0.0.0.0/0
- ターゲット : seenew-igw
ルート追加後、アクション → サブネット関連付けを編集
- seenew-public-1a、seenew-public-1cをチェックし、関連付けを保存
Private Route Table
- 名前 : seenew-private-rtb
- VPC : seenew-vpc
作成後、ルート編集 → ルートを追加
- 送信先 : 0.0.0.0/0
- ターゲット : seenew-nat
ルート追加後、アクション → サブネット関連付けを編集
- seenew-private-1a、seenew-private-1cをチェックし、関連付けを保存
7. Security Group
VPC(EC2) → セキュリティグループ → セキュリティグループを作成
ALB用SG
- セキュリティグループ名 : seenew-sg-alb
- 説明 : Security Group for ALB
- VPC : seenew-vpc
- インバウンドルール① : カスタムTCP 80 / ソース : Anywhere-IPv4
- インバウンドルール② : カスタムTCP 443 / ソース : Anywhere-IPv4
- アウトバウンドルール : すべてのトラフィック / ソース : Anywhere-IPv4
EC2用SG
- セキュリティグループ名 : seenew-sg-ec2
- 説明 : Security Group for EC2
- VPC : seenew-vpc
- インバウンドルール : カスタムTCP 80 / ソース : seenew-sg-alb
- アウトバウンドルール : すべてのトラフィック / ソース : Anywhere-IPv4
5. IAM
SSMで接続するためのロールを作成します。
IAM → ロール → ロールを作成
- 信頼されたエンティティタイプ : AWSのサービス
- ユースケース : EC2
- 許可ポリシー : AmazonSSMManagedInstanceCore
- ロール名 : seenew-role-ec2-ssm
6. EC2起動
EC2 → インスタンス → インスタンスを起動
Web-1
- 名前 : seenew-ec2-web1
- OSイメージ : Amazon Linux 2023 kernel-6.1 AMI
- インスタンスタイプ : t3.micro
- キーペア : キーペアなしで実行
- VPC : seenew-vpc
- サブネット : seenew-private-1a
- パブリックIPの自動割り当て : 無効化
- セキュリティグループ : seenew-sg-ec2
- 高度な詳細 → IAMインスタンスプロフィール : seenew-role-ec2-ssm
Web-2
- 名前 : seenew-ec2-web2
- サブネット : seenew-private-1c
- 他はWeb-1と同様
起動後
System Manager → セッションマネージャー → セッションの開始 → 起動中のEC2へ接続
sudo dnf update -y
sudo dnf install nginx -y
sudo systemctl start nginx
systemctl status nginx
echo "<h1> Hello From Web-1 </h1>" | sudo tee /usr/share/nginx/html/index.html #web-1
echo "<h1> Hello From Web-2 </h1>" | sudo tee /usr/share/nginx/html/index.html #web-2
7. ALB作成
ターゲットグループ
ターゲットグループ ①
EC2 → ターゲットグループ → ターゲットグループの作成
- ターゲットの種類 : インスタンス
- ターゲットグループ名 : seenew-alb-tg-web1
- プロトコル・ポート : HTTP, 80
- VPC : seenew-vpc
- プロトコルバージョン : HTTP1
- ヘルスチェックプロトコル : HTTP
- ヘルスチェックパス : /
- ターゲット : seenew-ec2-web1
ターゲットグループ ②
- ターゲットグループ名 : seenew-alb-tg-web2
- ターゲット : seenew-ec2-web2
- 他は TG ①と同様
ALB
EC2 → ロードバランサー → ロードバランサーの作成
- 種類 : Application Load Balancer
- ロードバランサー名 : seenew-alb
- スキーム : インターネット向け
- VPC : seenew-vpc
- アベイラビリティーゾーンとサブネット : seenew-public-1a, seenew-public-1c
- セキュリティグループ : seenew-sg-alb
- リスナー① : HTTP(80) → HTTPS(443)へリダイレクト
- リスナー② : HTTPS, 443 / ターゲットグループへ転送 / seenew-alb-tg-web1 / ポリシー名 : ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09 / ACMから
リスナー②は 8. Route 53 + ACM を作成してから実施してください。
ALBを作成して、詳細を確認するとリスナーとルールに2つのルールが登録されています。

ここで、HTTPS:443をクリックし、ルールを追加します。
- 条件 : ホストヘッダー
- 一致パータンタイプ : 値マッチング
- ホストヘッダー条件値 : sub.seenewlab.site
- ターゲットグループへ転送 : seenew-alb-tg-web2
- 優先度 : 10
8. Route53 + ACM
Route 53
Route53のホストゾーンを作成するためには独自ドメインが必要です。
1. ホストゾーン作成
Route 53 → ホストゾーン → ホストゾーンの作成
ドメイン名 : seenewlab.site (独自ドメイン)
作成が終わったらホストゾーンの詳細を確認します。
ネームサーバー欄にいくつかのドメインが書いています。

そのネームサーバーを自分がドメインを購入したサイトに登録します。

2. レコード作成
ホストゾーンの詳細 → レコードを作成
- レコード名 : seenewlab.site
- レコードタイプ : A
- エイリアス : ○
- トラフィックのルーティング先 : seenew-alb
- 同様に
*.seenewlab.siteのレコードも作成します。
ACM
Certificate Manager → 証明書を一覧 → リクエスト
- 完全修飾ドメイン名 : seenewlab.site , 「別の名前を追加」で *.seenewlab.siteも追加
- 検証方法 : DNS検証
- キーアルゴリズム : RSA 2048
リクエストが終わったら証明書の詳細に ドメインが2つ表示されます。
右上の Route 53でレコードを作成をクリックします。

全部選択してレコードを作成。
9. 動作確認
ブラウザに http://seenewlab.site と入力します。

自動的に HTTPSにリダイレクトされ、web1の画面が表示されます。
次はブラウザに http://sub.seenewlab.site と入力します。

sub.seenewlab.siteの場合は正常にweb2の方に転送されることが確認できます。
10. 終わりに
AWSを利用することで、簡単に公開Webサイトを構築できることがわかりました。
特に、HTTPS認証の方法が想像以上に簡単にできたので驚きました。
一方で、証明書作成時に出てきた「RSA 2048」やTLSポリシーなど、まだ理解しきれていない部分も多くありました。
今後は、単に構築するだけではなく、セキュリティや暗号化の仕組みについても理解を深めていきたいと思います。
また今回はALBを利用して、ドメインごとに別サーバへ振り分ける構成も試すことができ、実際のWebサービスに近い構成を体験できたのも良い経験になりました。


