初心者向けECS入門|Fargateで簡単デプロイ

AWS

はじめに

AWSのECS(Elastic Container Service)は、コンテナを効率よく実行・管理できるマネージドサービスです。便利な一方で、「ECSって難しそう…」「どこから手をつければいいのか分からない」と感じる方も多いのではないでしょうか。

そこで大切なのは、いきなり実装に飛び込むのではなく、まず 全体像を把握すること です。
ECSがどんな役割を持ち、どんな場面で使われるのかを理解しておくと、後のハンズオンや設計がぐっと分かりやすくなります。

本記事では、ECSを学ぶ前に押さえておきたい基礎ポイントを整理し、さらに実際にコンテナを動かしてみるハンズオンまでを体験していきます。

コンテナについての前提知識はこちらで解説しています。

ECS入門前に学ぶDockerとコンテナ基礎
AWS ECSを学ぶ前に必須となるコンテナとDockerの基礎を解説。VMとの違い、Dockerfile作成、実行手順を初心者向けに紹介します。

ECSの全体像を把握する

ECSとは?

ECS(Elastic Container Service)は、AWSが提供する コンテナ実行環境のマネージドサービス です。
自分でサーバーを立ててコンテナを管理するのではなく、AWSに任せることで、運用コストを減らしつつ効率的にコンテナを動かせるのが特徴です。

ECSの基本的な役割

ECSの役割をひとことで言うと、「コンテナをまとめて管理し、安定して動かす仕組み」 です。
例えば次のようなことを自動的に行ってくれます。

  • コンテナを指定した台数で起動・停止する
  • サーバーの負荷に応じてスケーリングする
  • 落ちたコンテナを自動的に再起動する

このように、ECSを使えばアプリケーションの実行基盤を安心して任せられます。

EKSやFargateとの違い

AWSにはECS以外にもコンテナ関連サービスがあり、よく比較されるのが EKSFargate です。

  • ECS:AWS独自のシンプルなコンテナ管理サービス。AWSに馴染みがあれば学習コストが低い。
  • EKS:Kubernetes(オープンソースの標準的なコンテナ管理ツール)をAWSで動かせるサービス。マルチクラウドやKubernetes標準の仕組みを活用したい場合に向く。
  • Fargate:ECSやEKSの実行基盤をサーバーレス化したもの。EC2の管理が不要で、コンテナに集中できる。

ECSの代表的なコンポーネント

ECSを使う上で欠かせないのが、クラスター・タスク定義・サービス の3つのコンポーネントです。それぞれの役割を簡単に整理しておきましょう。

クラスター:コンテナをまとめる「箱」

クラスターは、コンテナを動かすためのリソース(EC2インスタンスやFargateなど)をまとめる単位です。
イメージとしては「コンテナを入れておく大きな箱」であり、ECS上でアプリを動かす土台になります。

タスク定義:コンテナの「設計図」

タスク定義は、どんなコンテナをどのように動かすか を記述した設計図です。

  • 使用するDockerイメージ
  • 必要なCPUやメモリのサイズ
  • 環境変数やポート番号の設定

といった内容をまとめておき、それをもとにコンテナが起動されます。

サービス:スケーリングと常時稼働の仕組み

サービスは、タスク定義をもとに「コンテナをどのくらいの数で、どのように動かし続けるか」を管理する仕組みです。

  • コンテナを常に指定数だけ稼働させる
  • 負荷に応じて自動でスケールアウト/スケールインする
  • 落ちたコンテナを自動的に復旧する

といった動作を担い、アプリを安定して稼働させるための中心的な役割を果たします。

ECSの実行モード

ECSでは、コンテナを動かすために 2つの実行モード を選ぶことができます。それぞれの特徴を理解しておくと、目的に合わせた選択がしやすくなります。

EC2モード

EC2インスタンスを自分で用意し、その上にECSエージェントを配置してコンテナを動かすモードです。

  • サーバーのスペックや台数を細かく調整できる
  • 既存のEC2の仕組み(AMI、セキュリティグループ、カスタム監視など)を活用できる
  • その分、インフラの運用・管理コストがかかる

「細かく制御したい」「自社の要件に合わせてチューニングしたい」場合に向いています。

Fargateモード

サーバーを意識せず、AWSが裏側のインフラを完全に管理してくれるサーバーレス型の実行モードです。

  • EC2の準備や管理が不要
  • コンテナに必要なCPU・メモリを指定するだけで起動できる
  • 利用した分だけ課金される従量課金制

「インフラ運用に時間をかけず、アプリ開発に集中したい」場合に最適です。

ECSハンズオン(最初のアプリ稼働)

ネットワークやVPCの設定

  • VPC:既存のVPCを選択するか、新しく作成
  • サブネット:パブリックサブネットを選択
  • セキュリティグループ:HTTP(80番ポート)を開放しておくと、ブラウザからアクセス可能になります

もしVPC関連を新規設定する場合は下記を参考にしてください。

【初心者向け】EC2でWordPressを構築してみよう!
AWS EC2でWordPressを構築する手順を丁寧に解説。VPC・サブネット・IGW・ルート・SG・IAM・EC2、Apache+PHP+MariaDB、WP配置とDB作成、wp-config設定、HTTPでの確認まで。

クラスターを作成する

まずは、ECSでアプリを動かすための「クラスター」を作成します。クラスターは、コンテナを実行する基盤となるリソースのまとまりです。

AWSマネジメントコンソールからECSにアクセス

  1. AWSマネジメントコンソールにログイン
  2. サービス一覧から ECS を選択
  3. 左メニューの「クラスター」から [クラスターを作成] をクリック

クラスターの設定

  • クラスター名:わかりやすい名前を入力(例:my-ecs-cluster
  • インフラストラクチャー:ここではシンプルに Fargate を選択
    (EC2モードを使う場合は、後でEC2インスタンスの準備が必要になります)
Screenshot

クラスターの作成

設定内容を確認して [作成] をクリックすると、数十秒ほどでクラスターが完成します。

Fargateを利用してコンテナをデプロイする

クラスターを作成したら、次はその上で実際にコンテナを動かしてみましょう。ここでは、Fargate を利用してインフラ管理不要でコンテナをデプロイします。

タスク定義を選択

  • ECSコンソールの左メニューから [タスク定義] をクリック
  • [新しいタスク定義の作成] を選択
Screenshot
  • 必要な設定を入力
    • タスク名my-first-task などわかりやすい名前
    • 起動タイプ:Fargate
    • コンテナイメージ:例として公式の Nginx イメージを指定
      https://gallery.ecr.aws/nginx/nginx
    • ポートマッピング:コンテナの 80 番ポートを公開設定
Screenshot
Screenshot

タスクを実行

  1. クラスターの画面に戻り、[タスクの実行] をクリック
  2. 先ほど作成したタスク定義を選択
  3. ネットワーク設定
    • VPC:先ほどのクラスターで選択したもの
    • サブネット:パブリックサブネットを選択
    • パブリックIPの自動割り当て有効化(これをONにしないと外部アクセスできません)

デプロイ完了と動作確認

  • 数十秒でタスクが起動し、コンテナが稼働状態になります
  • タスクの詳細画面に表示される パブリックIP をコピー
  • ブラウザで http://<パブリックIP> にアクセスすると、Nginxのデフォルトページが表示されます

まとめ

本記事では、AWS ECS(Elastic Container Service)を学ぶ前提としてコンテナの知識を踏まえながら、ECSの全体像から最初のアプリ稼働まで を体験しました。

  • ECSの全体像
    • ECSは「コンテナをまとめて管理し、安定して動かすための仕組み」であることを確認しました。
    • 代表的なコンポーネント(クラスター・タスク定義・サービス)や、EC2モードとFargateモードの違いを理解しました。
  • ハンズオン
    • AWSコンソールからクラスターを作成し、Fargateモードで公式Nginxイメージをデプロイ。
    • ネットワーク(VPC/サブネット/SG)の基本設定を行い、ブラウザでパブリックIPにアクセスして動作確認できました。

コメント

タイトルとURLをコピーしました