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?

【第0回】AWS ECS Fargate 11回シリーズ:全体ナビゲーション

Last updated at Posted at 2026-01-23

この記事について

記事 タイトル 状態
第0回 全体ガイド 📍今回
第1回 構成図編 ⬜ 未読
第2回 VPC & Subnet ⬜ 未読
第3回 NAT Gateway & Route Table ⬜ 未読
第4回 Security Group ⬜ 未読
第5回 ECR & Docker Image ⬜ 未読
第6回 Public ALB ⬜ 未読
第7回 ECS Front & IAM ⬜ 未読
第8回 ECS API & Internal ALB ⬜ 未読
第9回 RDS MySQL ⬜ 未読
第10回 Secrets Manager & 完成 ⬜ 未読

進捗: 0% (0/11記事) | 目標: シリーズ全体の概要

📁 完全なコードはGitHubで公開:👉 GitHub: fargate-iac-02


1. はじめに

このシリーズは、
docker-composeで動いていたWebアプリケーションを、
AWS ECS Fargateに移行するまでの全工程を、自己学習しながら可視化していく全11記事(第0-10回)です。

1-1. このシリーズのゴール

最終的に作るもの:

インターネット
  ↓ HTTPS
Public ALB
  ↓ HTTP
ECS Frontend (Nginx)
  ↓ HTTP
Internal ALB
  ↓ HTTP
ECS API (Go)
  ↓ MySQL
RDS MySQL (Multi-AZ)

完成時の動作:

  • ✅ ブラウザで画面が表示される
  • ✅ 「API Test」ボタンでAPI通信ができる
  • ✅ 「Database Test」ボタンでDB接続ができる

1-2. 学ぶこと

  • AWS構成図の書き方(4種類・5図)
  • Terraformによるインフラ構築(IaCの基本)
  • ECS Fargateの実装(サーバーレスコンテナ)
  • Multi-AZ構成の設計(高可用性)
  • Security Groupの設計(最小権限の原則)
  • RDS MySQLの構築(Multi-AZ)
  • 段階的な構築方法(Phase分け)

1-3. 初心者向け

  • スキル:

    • AWSアカウントを持っている
    • docker-composeを少し触ったことがある
    • Terraformの名前を聞いたことがある
  • こんな方におすすめ:

    • AWS初心者だけど、実務レベルの構成を学びたい
    • docker-composeからECSへの移行を考えている
    • インフラをコードで管理したい
    • 段階的に学びたい

2. シリーズ全体の構成

2-1. 全11記事の構成

記事 タイトル 内容 詳細
第0回 全体ガイド このページ シリーズ構成・学習ルート・Terraform基礎
第1回 構成図編 4種類の構成図を作成 概念図・論理構成図・物理構成図・シーケンス図
第2回 VPC & Subnet ネットワーク基盤(前半) VPC作成・Public/Private Subnet・IGW
第3回 NAT & Route Table ネットワーク基盤(後半) NAT Gateway・Route Table・ルーティング設計
第4回 Security Group セキュリティ設計 5つのSG作成・インバウンド/アウトバウンド設計
第5回 ECR & Docker コンテナレジストリ ECR作成・Dockerイメージpush・Front/API両方
第6回 Public ALB ロードバランサー ALB・ターゲットグループ・リスナー設定
第7回 ECS Front & IAM Frontendコンテナ ECSクラスター・タスク定義・サービス・IAMロール
第8回 ECS API & Internal ALB APIコンテナ Internal ALB・API用ECS・Front→API連携
第9回 RDS MySQL データベース RDS作成・サブネットグループ・Multi-AZ構成
第10回 Secrets Manager & 完成 機密情報管理 & 統合 シークレット管理・ECS環境変数・動作確認

3. 学習ルート

3-1. ルート1: 完全版(全記事読破)

第0回(ナビゲーション)
  ↓
第1回(構成図編)
  ↓
第2-3回(Phase 1: ネットワーク基盤)
  ↓
第4-5回(Phase 2: Security & ECR)
  ↓
第6-7回(Phase 3: ECS Front)
  ↓
第8回(Phase 4: ECS API)
  ↓
第9-10回(Phase 5: RDS & 完成)

所要時間: 約2時間(読了)+ 約6-8時間(実装)

こんな人におすすめ:

  • AWS初心者で、基礎から学びたい
  • 設計の考え方から理解したい
  • 時間をかけてじっくり学習したい

3-2. ルート2: 最短ルート(画面表示まで)

第1回(構成図編)
  ↓
第2-3回(Phase 1: ネットワーク基盤)
  ↓
第4回(Security Group)※ 最小限だけ
  ↓
第5回(ECR)
  ↓
第6-7回(Phase 3: ECS Front)

所要時間: 約1時間(読了)+ 約3-4時間(実装)

こんな人におすすめ:

  • とにかく動かしたい
  • 画面表示まで最短で完成させたい
  • 後からDB接続を追加したい

3-3. ルート3: ピンポイント学習

特定の技術だけ学びたい方向け:

学びたいこと 読むべき記事
VPC設計 第2回
NAT Gatewayの仕組み 第3回
Security Group設計 第4回
ECRの使い方 第5回
ALBの設定 第6回、第8回
ECS Fargateの基本 第7回
ECS Task間通信 第8回
RDS Multi-AZ 第9回
Secrets Manager 第10回

4. 各Phase(段階)の詳細

4-1. Phase一覧

Phase 目的 主要リソース 完了時の状態
Phase 1 ネットワーク基盤構築 VPC、Subnet、NAT Gateway AWSコンソールでVPCリソースが確認できる
Phase 2 セキュリティ & コンテナ準備 Security Group、ECR DockerイメージをECRにpush完了
Phase 3 Frontend公開 Public ALB、ECS Frontend、IAM ブラウザで画面表示成功
Phase 4 API層構築 Internal ALB、ECS API 「API Test」ボタンが動作
Phase 5 DB層 & 完成 RDS MySQL、Secrets Manager 「Database Test」ボタンが動作

4-2. Phase 1: ネットワーク基盤(第2-3回)

目的 主要リソース 完了時の状態
ネットワーク基盤構築 VPC、Subnet、IGW、NAT Gateway、Route Table AWSコンソールでVPCリソースが確認できる

ポイント:

  • Multi-AZ構成(ap-northeast-1a、1c)
  • Public / Private / DB の3層分離
  • NAT Gateway経由でPrivateからインターネットアクセス

4-3. Phase 2: Security & ECR(第4-5回)

目的 主要リソース 完了時の状態
セキュリティ基盤 & コンテナ準備 Security Group、ECR Repository DockerイメージをECRにpush完了

ポイント:

  • 最小権限の原則(必要な通信のみ許可)
  • SG間参照で動的なIP変更に対応
  • Front / API 両方のイメージを管理

4-4. Phase 3: ECS Front(第6-7回)

目的 主要リソース 完了時の状態
Frontend公開 Public ALB、ECS Cluster、Task Definition、Service、IAM Role ブラウザで画面表示成功

ポイント:

  • ALB → ECS の連携
  • Task Execution Role(ECRからpull)
  • CloudWatch Logsでログ確認

4-5. Phase 4: ECS API(第8回)

目的 主要リソース 完了時の状態
API層構築 Internal ALB、ECS Task Definition(API)、ECS Service 「API Test」ボタンが動作

ポイント:

  • 内部通信専用のInternal ALB
  • Frontend → Internal ALB → API の通信
  • Private Subnet内で完結

4-6. Phase 5: RDS & 完成(第9-10回)

目的 主要リソース 完了時の状態
DB層 & システム完成 RDS MySQL(Multi-AZ)、DB Subnet Group、Secrets Manager 「Database Test」ボタンが動作

ポイント:

  • Multi-AZ構成で高可用性
  • Secrets Managerで認証情報を安全に管理
  • ECS環境変数からシークレット参照

5-1. 本番環境構成(全Phase完成時)

リソース 数量 日額費用(24h) 月額費用 料金根拠URL
NAT Gateway 2 $3.00 $90 NAT Gateway料金
Public ALB 1 $0.67 $20 ALB料金
Internal ALB 1 $0.67 $20 ALB料金
ECS Fargate Front × 2 + API × 2 $1.50 $45 Fargate料金
RDS MySQL Multi-AZ db.t3.micro $1.17 $35 RDS料金
その他 EIP、CloudWatch、Secrets等 $0.20 $6 -
合計 - 約$7.21/日 約$216/月 -

💰 コスト計算の詳細:

リソース 単価 計算式 日額
NAT Gateway $0.062/時間 × 2 $0.062 × 24h × 2 = $2.976 $3.00
ALB(Public) $0.028/時間 $0.028 × 24h = $0.672 $0.67
ALB(Internal) $0.028/時間 $0.028 × 24h = $0.672 $0.67
ECS Fargate vCPU: $0.04656/時間
Memory: $0.00511/時間
(0.25vCPU × $0.04656 + 0.5GB × $0.00511) × 24h × 4 = $1.496 $1.50
RDS MySQL $0.048/時間(Multi-AZ) $0.048 × 24h = $1.152 $1.17

📌 料金の注意事項:

  • 上記は東京リージョン(ap-northeast-1)の2025年12月時点の料金
  • データ転送料は含まれていません(別途発生)
  • 最新の料金は各リンク先で確認してください

5-2. 学習用の最小構成

リソース 数量 日額費用(24h) 月額費用 削減額
NAT Gateway 1(削減) $1.50 $45 -$45
Public ALB 1 $0.67 $20 -
Internal ALB 1 $0.67 $20 -
ECS Fargate Front × 1 + API × 1 $0.75 $22.50 -$22.50
RDS MySQL Single-AZ db.t3.micro $0.60 $18 -$17
合計 - 約$4.19/日 約$125/月 -$91

💰 学習用コスト計算の詳細:

リソース 単価 計算式 日額
NAT Gateway $0.062/時間 × 1 $0.062 × 24h × 1 = $1.488 $1.50
ECS Fargate 同上 (0.25vCPU × $0.04656 + 0.5GB × $0.00511) × 24h × 2 = $0.748 $0.75
RDS MySQL $0.024/時間(Single-AZ) $0.024 × 24h = $0.576 $0.60

節約のポイント:

  • NAT Gatewayを1つに削減(Multi-AZを諦める)→ -$1.50/日(-$45/月)
  • ECS TaskのDesired Countを1に削減→ -$0.75/日(-$22.50/月)
  • RDSをSingle-AZに変更→ -$0.57/日(-$17/月)

⚠️ 学習用構成の注意事項:

  • 可用性が低下します(Single Point of Failure)
  • 本番環境には使用しないでください
  • 学習後は必ずリソースを削除してください

5-3. 料金の最新情報について

📍 最新料金の確認方法:

各AWSサービスの料金は定期的に変更されます。最新の料金は以下の公式ページで確認してください:

サービス 料金ページURL
VPC(NAT Gateway) https://aws.amazon.com/vpc/pricing/
Elastic Load Balancing(ALB) https://aws.amazon.com/elasticloadbalancing/pricing/
ECS Fargate https://aws.amazon.com/fargate/pricing/
RDS for MySQL https://aws.amazon.com/rds/mysql/pricing/
CloudWatch https://aws.amazon.com/cloudwatch/pricing/
Secrets Manager https://aws.amazon.com/secrets-manager/pricing/

💡 料金計算ツール:

  • AWS料金計算ツール: https://calculator.aws/
  • 詳細な見積もりを作成できます
  • リージョン別の料金を確認できます

📅 この記事の料金基準:

  • リージョン: 東京(ap-northeast-1)
  • 基準日: 2025年12月
  • 為替レート: 1 USD = 約150円(参考)

6. クイックスタート

「今すぐ始めたい!」という方向け:

6-1. ステップ1: 環境準備

# 必要なツールのインストール確認
terraform --version  # v1.9.x以上
aws --version       # AWS CLI v2.x
docker --version    # v20.x以上

6-2. ステップ2: リポジトリクローン

# プロジェクトディレクトリを作成
mkdir my-ecs-project
cd my-ecs-project

# Terraformコード
mkdir terraform
cd terraform

6-3. ステップ3: 第1回から順番に読む

第1回: 構成図編 を読んで、設計を理解してから実装開始!


7. ファイル構成(完成時)

my-ecs-project/
├── .gitignore
├── README.md
│
├── terraform/               # Terraform実装(全5 Phase)
│   ├── phase1-network/      # 第2-3回で作成
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── terraform.tfvars
│   │   ├── vpc.tf
│   │   ├── subnet.tf
│   │   ├── igw.tf
│   │   ├── nat.tf
│   │   ├── route_table.tf
│   │   └── outputs.tf
│   │
│   ├── phase2-security/     # 第4-5回で作成
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── terraform.tfvars
│   │   ├── data.tf
│   │   ├── security_group.tf
│   │   ├── ecr.tf
│   │   └── outputs.tf
│   │
│   ├── phase3-ecs-front/    # 第6-7回で作成
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── terraform.tfvars
│   │   ├── data.tf
│   │   ├── alb.tf
│   │   ├── ecs_cluster.tf
│   │   ├── cloudwatch.tf
│   │   ├── iam.tf
│   │   ├── ecs_task_def.tf
│   │   ├── ecs_service.tf
│   │   └── outputs.tf
│   │
│   ├── phase4-ecs-api/      # 第8回で作成
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── terraform.tfvars
│   │   ├── data.tf
│   │   ├── alb.tf
│   │   ├── cloudwatch.tf
│   │   ├── ecs_task_def.tf
│   │   ├── ecs_service.tf
│   │   └── outputs.tf
│   │
│   └── phase5-rds/          # 第9-10回で作成
│       ├── main.tf
│       ├── variables.tf
│       ├── terraform.tfvars
│       ├── data.tf
│       ├── secrets.tf
│       ├── rds.tf
│       └── outputs.tf
│
├── front/                   # Frontendイメージ(第5回で作成)
│
└── api/                     # APIイメージ(第5回で作成)

📝 補足

front/api/ について

本シリーズはTerraformによるインフラ構築がメインのため、アプリケーションコード(HTML/CSS/JS/Go)の詳細解説は省略します。

ディレクトリ 内容 用途
front/ Nginx + 静的HTML/JS API Test / DB Test ボタンUI
api/ Go言語 API ヘルスチェック、DB接続テスト

⚠️ 注意: ECRにPushする前に、front/config.jsbaseURL をInternal ALBのDNS名に書き換える必要があります(第7回で説明を記載)


8. マイルストーン一覧

学習の進捗を実感できるように、5つのマイルストーンを設定しています:

🎯 マイルストーン1: ネットワーク基盤完成(第3回終了時)
   └─ VPC、Subnet、NAT Gateway、Route Tableが完成

🎯 マイルストーン2: セキュリティ基盤完成(第5回終了時)
   └─ Security Group、ECRが完成
   └─ DockerイメージのECR pushまで完了

🎯 マイルストーン3: 画面表示成功(第7回終了時)
   └─ ブラウザで画面が表示される 🎉

🎯 マイルストーン4: API動作確認(第8回終了時)
   └─ 「API Test」ボタンが動作する ✅

🎯 マイルストーン5: 完全動作(第10回終了時)
   └─ 「Database Test」ボタンが動作する 🎉🎉🎉
   └─ 全システムが完全動作!

9. 各記事へのリンク

設計編

第1回: 構成図編 - 4種類の構成図を書いて設計を学ぶ

実装編 - Phase 1: ネットワーク基盤

第2回: VPC & Subnet - ネットワーク基盤(前半)
第3回: NAT Gateway & Route Table - ネットワーク基盤(後半)

実装編 - Phase 2: Security & ECR

第4回: Security Group - セキュリティ設計の基本
第5回: ECR & Docker Image Push - コンテナレジストリ

実装編 - Phase 3: ECS Front

第6回: Public ALB - ロードバランサーの設定
第7回: ECS Front & IAM - Frontendコンテナの実装

実装編 - Phase 4-5: API & DB

第8回: ECS API & Internal ALB - APIコンテナの実装
第9回: RDS MySQL - データベースの構築
第10回: Secrets Manager & 完成 - 機密情報管理と統合


(第1回へ続く)

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?