はじめに
AWSの構築業務に必要な基礎を身につけるため、実務を想定したハンズオンを行いました。
今回は、中小企業の社内ポータルサイトをAWS上に移行する前提で、最小構成のWebサーバ検証環境を構築します。
単にEC2を起動するだけではなく、VPC、サブネット、ルートテーブル、セキュリティグループ、EC2、Apacheの自動構築までを一連の流れとして実施しました。
想定案件
顧客
従業員50名程度の中小企業
課題
現在、社内ポータルサイトをオンプレミス環境で運用しているが、サーバの老朽化や障害時の復旧負荷が課題になっている。
要望
AWS上に検証環境を構築したい
まずは最小構成で始めたい
コストを抑えたい
将来的には可用性やセキュリティも強化したい
今回の構成
今回は検証環境のため、以下の最小構成としました。
Internet
|
Internet Gateway
|
VPC
|
Public Subnet
|
EC2
|
Apache
作成したリソース
| リソース | 名前 | 設定 |
|---|---|---|
| リージョン | 東京 | ap-northeast-1 |
| VPC | handson-vpc | 192.168.0.0/16 |
| Public Subnet | handson-public-subnet-1a | 192.168.1.0/24 |
| Internet Gateway | handson-igw | VPCにアタッチ |
| Route Table | handson-public-rt | 0.0.0.0/0 → IGW |
| Security Group | handson-web-sg | HTTPのみ許可 |
| EC2 | handson-web-ec2 | Amazon Linux 2023 |
| Webサーバ | Apache | ユーザーデータで自動構築 |
リージョン
今回は日本国内の企業向けシステムを想定しているため、東京リージョンを選択しました。
ap-northeast-1
利用者に近いリージョンを選択することで、通信遅延を抑えやすくなります。
VPC
VPCのCIDRは以下にしました。
192.168.0.0/16
検証環境として扱いやすく、今後サブネットを追加する余地もあるためです。
ただし、実案件で社内ネットワークやVPN接続を想定する場合、既存の社内LANとCIDRが重複しないように事前確認が必要です。
サブネット
今回はPublic Subnetを1つ作成しました。
192.168.1.0/24
検証用Webサーバを1台配置するだけであれば十分なIP数です。
ルートテーブル
Public Subnetからインターネットへ通信できるように、ルートテーブルに以下を追加しました。
送信先:0.0.0.0/0
ターゲット:Internet Gateway
これにより、Public Subnetからインターネットへ向かう通信経路を作成しました。
EC2にパブリックIPv4アドレスを付与し、Security GroupでHTTPを許可することで、ブラウザからWebサーバへアクセスできるようになります。
セキュリティグループ
Webサーバとして外部からHTTPアクセスを受けるため、以下のみ許可しました。
HTTP / TCP / 80 / 0.0.0.0/0
SSHは開放していません。
未経験向けのハンズオンでは、SSHを 0.0.0.0/0 で許可する例もありますが、これは世界中からログイン試行を受ける状態になります。
今回は検証環境のため、動作確認を目的としてHTTPを 0.0.0.0/0 で許可しました。
実運用で社内ポータルとして利用する場合は、社内IPやVPN経由のアクセスに制限する必要があります。
また、実務を想定し、SSHを使わずにEC2のユーザーデータでApacheを自動インストールする方針にしました。
EC2作成
EC2は以下の設定で作成しました。
名前:handson-web-ec2
AMI:Amazon Linux 2023
インスタンスタイプ:t3.micro
サブネット:handson-public-subnet-1a
パブリックIP自動割り当て:有効
セキュリティグループ:handson-web-sg
無料枠が使えないため、検証後は必ず停止または削除する方針にしました。
ユーザーデータ
ApacheのインストールとWebページ作成は、EC2のユーザーデータで自動化しました。
#!/bin/bash
dnf update -y
dnf install -y httpd
systemctl start httpd
systemctl enable httpd
echo "Hello AWS" > /var/www/html/index.html
このスクリプトにより、EC2起動時にApacheが自動でインストールされ、Hello AWS と表示するHTMLファイルが作成されます。
動作確認
EC2起動後、ステータスチェックが完了したことを確認しました。
その後、ブラウザで以下にアクセスしました。
http:// EC2のパブリックIPv4アドレス
結果として、以下の文字列が表示されました
これにより、EC2上のApacheが正常に起動し、HTTPアクセスできることを確認できました。
※コスト対策
今回は無料枠が使えないため、事前にAWS Budgetsで月10ドルの予算アラームを設定しました。
また、作業完了後はEC2インスタンスを停止しました。
EC2を停止するとインスタンス利用料は止まりますが、EBSボリュームは残るため、EBS料金は継続します。
完全に課金を止めたい場合は、EC2を停止ではなく終了する必要があります。
今回学んだこと
今回のハンズオンを通じて、以下を学びました。
- VPCの作成
- Public Subnetの作成
- Internet Gatewayの作成とアタッチ
- Route Tableによるインターネット向け通信の設定
- Security Groupによる通信制御
- EC2の作成
- Apacheの自動構築
- ユーザーデータによる初期設定
- HTTPアクセスによる動作確認
- EC2停止によるコスト対策
- 実務観点での気づき
今回の構成は最小構成ですが、実務では「なぜその構成にしたのか」を説明できることが重要だと感じました。
特に、SSHを開放せず、ユーザーデータで初期構築を自動化した点は、セキュリティと再現性の観点で重要です。
今後は、EC2の運用確認、CloudWatchによる監視、RDSとの接続、冗長構成なども順番に検証していきます。
次回
次回は、今回作成したEC2 Webサーバについて、運用確認を行います。
具体的には、以下を確認します。
- EC2停止・起動後の挙動
- パブリックIPの変化
- Apacheの自動起動確認
- CloudWatchメトリクス確認
- セキュリティグループ変更によるアクセス制御確認


