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

TerraformでVPC+EC2の環境を構築~インフラ学習編~

1
Last updated at Posted at 2026-04-30

はじめに

前回の続きです。
前回は、Terraformをインストールして、.tfにS3を定義し、構築しました。
今回はVPC+EC2を構築していきます。

まずは知識を付けよう

VPC構築して、インターネットゲートウェイをアタッチして、パブリックサブネット、プライベートサブネットを設定して、NAT Gatewayを設定して、セキュリティグループを設定して...
など、中途半端に浅い知識はあるのですが、今一度勉強し直します。

構成

構成は以下のようにします。
踏み台サーバーをパブリックサブネットに配置し、Webサーバーをプライベートサブネットに配置し、ALBを利用した一般的な構成です。
VPC構成.drawio.png

セキュリティグループは全リソースに設定しています。
図では踏み台サーバーのみ表示しています。

それぞれの用途や設定値について学習します。

学習

IPアドレスとは?

  • グローバルIPアドレス:世界中で一意のインターネット上で使われる住所
  • プライベートIPアドレス:外からは見られない内部で使われる住所

AWSのVPCでは、プライベートIPアドレスを使用します。

CIDR(サイダー)とは?

IPアドレスの範囲。
10.0.0.0/16 の場合、先頭16ビットが固定になります。

10.0.0.0/16
00001010.00000000.xxxxxxxx.xxxxxxxx
←-固定(16ビット)-→ ←-自由(16ビット)-→
= 10.0.0.0 〜 10.0.255.255
= 65,536個のIPアドレスが使える

VPCとは?

AWSの中に作成するプライベートネットワークのこと。

サブネットとは?

VPCの中で用途ごとに区切ったネットワークです。
先程のCIDRの話に戻すと、
VPC(10.0.0.0/16)の場合、各サブネットはVPCの範囲に収めます(例:10.0.0.0/24)

以下の種類があります。

パブリックサブネット プライベートサブネット
インターネットからの直接アクセス できる できない
置くもの (例)ALB、EC2、NAT Gateway (例)EC2、DB
インターネットの出口 Internet Gateway NAT Gateway(→ Internet Gateway)

AZとは?

Availability Zoneの略称です。
物理的に分けられたデータセンターのことで、各リージョンで複数のAZが存在します。
AZを分ける事で、片方のデータセンターで障害が起きても、切り替えて運用が可能になります。

ALBとは?

Application Load Balancerの略称です。
外からのリクエストを複数のEC2に分散させるサービスのことです。
先程、AZの説明をしましたが、ALBがEC2に対して、ヘルスチェックを行います。この仕組みにより、片方のAZで障害が起きても、切り替えが可能になります。
ALBを構成する要素は主に以下となります。

  • ロードバランサー本体:ALBそのものです。2つのパブリックサブネットに跨って配置します
  • ターゲットグループ:「どのEC2に振り分けるか」のグループです。プライベートサブネットのEC2をここに登録します
  • リスナー:「どのポートで待ち受けるか」のルールです。(例:ポート80で受けたらターゲットグループに転送)

Internet Gatewayとは?

VPCとインターネットを繋げる出入口です。

NAT Gatewayとは?

Internet Gatewayがあっても、プライベートサブネットのEC2はグローバルIPを持っていないため、そのままだとインターネットに出ることができません。
NAT Gatewayとは、パブリックサブネットに配置する、プライベートサブネットのEC2がインターネットに出るための出口です。入口にはならないので、セキュリティ上安全な仕組みです。
AWSが提供する固定のグローバルIP(Elastic IP)を紐づけることで、外部との通信が可能になります。

一般的なHTTPリクエスト・レスポンスはALBが行うため、NAT Gatewayが無いとレスポンスが返せない訳ではありません。
Docker環境を構築する際や外部APIを呼び出すシステムの際は、必要です。

ルートテーブルとは?

通信をどこに流すかを決めるルール表です。
今回の構成では、パブリックサブネット用のルートテーブルと、プライベートサブネット用のルートテーブルを作成する予定です。

パブリックサブネット用

送信先 ターゲット
10.0.0.0/16 local
0.0.0.0/0 Internet Gateway

プライベートサブネット用

送信先 ターゲット
10.0.0.0/16 local
0.0.0.0/0 NAT Gateway

10.0.0.0/16 → VPC内の通信はそのまま内部で転送
0.0.0.0/0 → それ以外(インターネット宛)はInternet Gateway又はNAT Gatewayへ

セキュリティグループとは?

EC2やALBへの通信の許可・拒否ルールを定義するものです。
セキュリティグループはデフォルトで全拒否なので、許可するルールを定義していきます。
インバウンド(外→中)、アウトバウンド(中→外)、それぞれにルール定義が必要です。

踏み台サーバーの役割

プライベートサブネットのEC2に安全にSSH接続するための中継サーバーです。
踏み台が無いと、Webサーバーをパブリックにする必要があるため、セキュリティ上、必要なものとなります。
踏み台EC2(パブリック)→WebサーバーEC2(プライベート)
にすることで、攻撃の入口を一か所に制限し、外から見える事を防ぐことができます。

安全にSSH接続をするために、踏み台サーバーが必要になります。
基本的なHTTP通信は、Internet Gateway→ALB→WebサーバーEC2(プライベート) の通信経路になるため、踏み台サーバーは経由されません。
あくまで開発者が開発・運用する際に、安全なSSH接続を実現するために踏み台を経由します。

最後に

基礎的な知識を付ける事が出来ました。
次回は、これまでの知識を元にTerraformで構築してみます。

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