0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS未経験が実務を想定してWebサーバ検証環境を構築してみた① VPC・EC2・Apache構築

0
Posted at

はじめに

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数です。

スクリーンショット 2026-06-24 174713.png

ルートテーブル

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

スクリーンショット 2026-06-24 180917.png

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アドレス

結果として、以下の文字列が表示されました

スクリーンショット 2026-06-24 184059.png

これにより、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メトリクス確認
  • セキュリティグループ変更によるアクセス制御確認
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?