1
1

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環境の構築を、機能の連携を意識して設計してみた

Last updated at Posted at 2025-12-09

インフラを知っていることでアプリのシステム全体が見える

オリジナルプロダクトの開発を進めるうえで、アプリはインフラ基盤の上で動作します。
今回はサービス全体の仕組みを理解する目的でインフラ構築にも取り組みました。
できるだけ図を使って整理し、各要素のつながりが分かりやすくなるように工夫しています。

公開されたネットワークと隠されたネットワーク

パブリックサブネット 

公開されたネットワークとは、ユーザーから直接アクセス可能なネットワークのこと
 例)https://example.com へのアクセス

プライベートサブネット

隠されたネットワークとは、外部から直接アクセスできないネットワークのこと
プライベートな空間となるためデータベースを設置している

ネットワーク 説明 具体例
Webサーバー Webサイトを提供する 開発したアプリ、Apache、OS
データベースサーバー データを保存する MySQL、OS

TCP/IP
構築したサーバーはネットワークにつなげて通信するため、それぞれのサーバーにIPアドレスという番号を振る必要がある
またドメイン名でアクセスする=DNSサーバーの設定も必要となる

image.png

ネットワークを構成するときの基本的な仕組み
①DNSサーバーにドメイン名とIPアドレスの対応を割り当てる
②IPアドレスを割り当て、データがルーターから出ていくように構成する
③ネットワークで使うIPアドレス範囲を定める

 ※NATゲートウェイ:方方向だけの通信を許す
  DBからインターネットサーバーに接続は可能

サブネット
VPC仮想的なネットワークの領域
そのようなIPアドレス範囲を扱うかを指定する

EC2でサーバーを作る
起動した各サーバーの個体は「インスタンス」という

IPアドレス
「0.0.0.0」~「255.255.255.255」まで
ICANNという団体が一括管理している

パブリックIPアドレス
インターネットに接続する際使用されるIPアドレス

プライベートIPアドレス
社内LANやネットワークの実験時に使用されるIPアドレス

ネットワークを構築する

まずは簡単にAWSでネットワークを構築しました。

1.VPCを作成する

リージョンを選択する
例)AWSで一番使われている主要リージョンの1つ「オレゴン」
例)東京など

2. VPCをサブネットに分割する

パブックサブネットとプライベートサブネットを作成する

3.インターネット回線を引き込む

インターネットゲートウェイを作成、VPCにアタッチする

4.ルートテーブルを作成する

VPCと接続し、パブリックサブネットと関連付ける
「0.0.0.0/0」とインターネットゲートウェイを選択し、インターネット接続を有効化する

サーバーを構築する

インスタンスの作成

  • Amazon Linux 2023(OS)を選択し、キーペア(EC2に接続するための鍵ファイル)を作成する
  • パブリックIPアドレスを付与して、外部ネットワーク(自宅・職場)から EC2 に SSH 接続できるようにする
  • SSHを使って遠隔からのログインで必要な設定をする
    セキュリティグループ(EC2のファイアウォール)を作成する

SSHで接続する

RLoginでパブリックIPアドレスにSSHで接続する

インスタンスのパブリック IPv4 アドレスが接続先となる

Elastic IPを確保する

起動・停止を繰り返したいので、設定しました
別のIPアドレを割り当てられてしまうため、固定したいときはおすすめです

ポート番号の考え方

ファイヤウォールで接続制限となり、通してよいデータだけを通す
 →ファイヤーウォールを設けることが効果的

セキュリティグループのインバウンドルールをクリック、インバウンドルールでポート22(SSH)だけ通信できる

ポート番号 サービス
:80 HTTP
:443 HTTPS
:22 SSH
:3306 MySQL

IPアドレスは同じサービスを区別する
同じサーバー内で HTTP と HTTPS が混ざらないようにしている

ファイアウォールやセキュリティグループ設定で必要

AWS では
「443 を開ける」→ HTTPS が通る
「80 を閉じる」→ HTTP アクセスを止める
となり、「どのサービスを公開するか」=「どのポートを開けるか」で制御できる

ダイレクトの設定で必須になる
HTTP → HTTPS にリダイレクトする場合

  1. ユーザーが http://(→ポート 80)へアクセス
  2. Web サーバーが受け取る(80 番)
  3. https://(→443 番)へ 301 リダイレクト

→ このため、HTTPS を強制したい場合でも 80 番ポートは開けておく必要がある

ロードバランサ―もポート番号を見て振り分ける
AWS ALB(アプリケーションロードバランサー)

  • リスナー 80 → 自動で443 へリダイレクト
  • リスナー 443 → バックエンドEC2へ転送

Apache HTTP Serverのインストール

サービス デォルトポート番号 説明
SSH 220 モート接続・サーバ管理用
HTTP 80 Apahe(httpd)がブラウザからアクセスされる
HTTPS 443 暗号化されたウェブ通信用

http://パブリックIP でアクセス可能になる

ドメイン

ドメイン名はDNSサーバーによってIPアドレスに変換され、接続される
Webサイトにアクセスする際、ドメイン名は裏でIPアドレスに変換されて通信が行われる

データベースの構築

インターネットから直接アクセスできないように構成されたサブネットにサーバーを配置することで、プライベートサブネットを構築する

セキュリティグループの設定

  • ポート80(HTTP)と443(HTTPS)を開放(外部アクセス用)する
  • ポート220(SSH)を開放(管理用、必要に応じて)する
  • 独自ドメインを使いたい場合は、Route 53などのDNSサービスでドメインを取得し、パブリックIPに紐づける
  • DNSレコード(Aレコード)を設定して、http://domein.com でアクセス可能にする

まとめ

HTTPで独自ドメインを使った安全なWebサイトを公開できました。
今回はAWSの操作よりも、各機能がどう連携しているかに焦点を当てました。
パブリックサブネットは外部公開用、プライベートサブネットは内部リソース用と役割を分けることで、セキュリティと効率を両立している仕組みを理解することができました。

また、今回パブリックサブネット1つに対して、プライベートサブネット2つ設置する理由については、
異なるアベイラビリティゾーン(AZ)に配置して、片方のAZが障害になってももう一方で稼働を継続できる運用にしています。

参考資料
http://domein.com でアクセスが可能になりました。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?