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?

「Dockerはわかるけど…」から卒業!AWSでコンテナを動かすための30日集中講座 - Day 9: まずはここから!AWS ECSの基本構成とデプロイの流れ

1
Last updated at Posted at 2025-08-17

Day 9: まずはここから!AWS ECSの基本構成とデプロイの流れ 🛠️

皆さん、こんにちは!30日集中講座、Day 9へようこそ。

第1週でDockerの基礎を学んだ皆さんは、いよいよクラウドでのコンテナ運用に挑戦する準備ができました。AWSには様々なコンテナサービスがありますが、この講座ではまず最もシンプルで、初心者におすすめの「ECS on Fargate」から始めます。

ECS on Fargateは、Dockerの知識を直接活かせる上に、インフラ管理の複雑さから解放されるため、皆さんがコンテナ開発のクラウド化をスムーズに体験するには最適な選択です。


1. ECSを理解するための3つの要素

ECSでコンテナを動かすには、以下の3つの要素を理解することが不可欠です。ローカルでdocker composeを使っていた皆さんは、これらの概念をdocker composeの設定と対比して考えると理解が深まります。

ECSのコンテナオーケストレーションは、以下のような階層構造で構成されています。

クラスターサービスタスクコンテナ (複数可)

  • タスク定義 (Task Definition): コンテナの設計図です。どのDockerイメージを使うか、CPUやメモリをどれだけ割り当てるか、どのポートを公開するか、といった設定を定義します。これはDockerのdocker-compose.ymlに相当します。一つのタスク定義には、アプリケーション本体とログ収集用のサイドカーコンテナなど、複数のコンテナ定義を含めることも可能です。
  • クラスター (Cluster): コンテナを実行するための論理的なグループで、タスクを配置する場所です。
  • サービス (Service): 実行するタスクの数を管理します。指定したタスク定義に基づいて、実行中のコンテナグループであるタスクを常に必要な数だけ起動し続けます。オートスケーリングやロードバランサーとの連携もこのサービスで設定します。

これらの要素の関係を視覚的に理解しましょう。
Screenshot 2025-08-17 at 19.26.22.png


2. AWS ECSでのデプロイ3ステップ

ECSでアプリケーションをデプロイする流れは、非常にシンプルです。

ステップ1: コンテナイメージの準備

まず、アプリケーションのDockerイメージを、AWSが提供するコンテナレジストリサービス「ECR (Elastic Container Registry)」にプッシュします。ECRはDocker HubのAWS版で、プライベートなコンテナイメージを安全に保存・管理できます。ECRへのプッシュ方法は次回のDay 10で詳しく解説します。

ステップ2: タスク定義の作成

タスク定義では、コンテナをどのように実行するかを具体的に設定します。Fargateを使用する場合、networkMode: awsvpcrequiresCompatibilities: [FARGATE]を指定します。

タスク定義のJSON設定例

{
  "family": "my-web-app",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "containerDefinitions": [
    {
      "name": "web-container",
      "image": "nginx:latest",
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp"
        }
      ]
    }
  ]
}
  • IAMロール: ECSサービスがユーザーに代わってECRからイメージを取得したり、CloudWatch Logsにログを送信する際に必要な権限をタスク実行ロールとして設定します。

ステップ3: サービスとクラスターの作成

最後に、サービスとクラスターを関連付けます。

ネットワーク設定

FargateはVPC内で実行されます。サブネットは、パブリックサブネットとプライベートサブネットのどちらも選択できますが、セキュリティ向上のため、プライベートサブネットを使用し、NAT Gatewayを経由してインターネットに接続するのがベストプラクティスです。

セキュリティグループ

コンテナへのアクセスはセキュリティグループで制御します。

  • インバウンドルール: ポート80(HTTP)や443(HTTPS)など、必要なポートをApplication Load Balancer (ALB) からのアクセスに限定して開放します。
  • アウトバウンドルール: ECRやCloudWatch Logsへのアクセスが必要なため、ポート443(HTTPS)をインターネットへ許可します。

3. コストとトラブルシューティング

コスト

Fargateは従量課金制で、使用したCPU/メモリの時間に応じて課金されます。小規模なテスト環境であれば、月数百円から始められるため、初心者でも安心して試すことができます。

よくある初期エラーと対策

  • タスクが起動しない:
    • タスク実行ロールにECRへのアクセス権限が不足している。
    • セキュリティグループのアウトバウンドルールでHTTPS(443)が許可されていない。
  • コンテナが停止し続ける:
    • アプリケーションがタスク定義で指定したポートで正しく起動しているか確認しましょう。
    • CloudWatch Logsでコンテナのログを確認すると、原因が特定できます。
  • 外部からアクセスできない:
    • ロードバランサーのターゲットグループ設定が正しくない。
    • セキュリティグループのインバウンドルールに誤りがある。

4. まとめと今日のハンズオン

  • ECSは、タスク定義、クラスター、サービスの3つの基本要素で構成されています。
  • Fargateは、サーバー管理不要で運用をシンプルにするための強力な選択肢です。
  • デプロイの流れは、ECRへのイメージプッシュ → タスク定義作成 → サービス作成です。

今日の学びを定着させるために、以下のハンズオンに挑戦してみましょう。

【今日のハンズオン課題(所要時間:30分)】

  1. AWSコンソールにログインし、ECSサービス画面を開く。
  2. AWS CLIをインストール・設定し、IAMユーザーにECRへのプッシュ権限を付与する。
  3. ECSクラスターを1つ作成(Fargateを使用)。
  4. ECRでリポジトリを1つ作成(例: my-first-app)。
  5. 使用予定のVPCのサブネット構成を確認。

次回の予告
Day 10: ECRへのコンテナイメージ登録とタグ付け

それでは、また明日お会いしましょう!

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?