コンテンツにスキップ

Elastic Container Service (ECS)

1. サービス概要

Amazon Elastic Container Service (ECS) は、コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできるフルマネージドのコンテナオーケストレーションサービスである。
開発者は、Docker コンテナを ECS で実行し、インフラストラクチャの管理を気にすることなく、アプリケーションの開発とデプロイに集中できる。
ECS は、様々なユースケースに対応するための柔軟性と、AWS の他のサービスとの統合を提供する。

主なユースケースとして、

  • Web アプリケーションのデプロイ
  • マイクロサービスアーキテクチャの構築
  • バッチ処理の実行
  • 機械学習ワークロードの実行

などが挙げられる。
Amazon ECS は、これらのユースケースに対応するための様々な機能と、AWS の他のサービスとの統合を提供する。

2. 主な特徴と機能

2.1 フルマネージドサービス

ECS は、コンテナオーケストレーションをフルマネージドで提供する。
ユーザーは、コンテナのデプロイ、管理、スケーリングに集中でき、インフラストラクチャの管理を行う必要はない。

2.2 実行環境の選択

ECS は、Fargate と EC2 という 2 つの実行環境をサポートしている。
Fargate は、サーバーレスでコンテナを実行できるため、インフラストラクチャの管理が不要である。
EC2 は、EC2 インスタンス上でコンテナを実行するため、より柔軟な構成が可能である。

2.3 Docker イメージのサポート

ECS は、Docker コンテナイメージをサポートしており、Docker CLI や Docker API を使って、コンテナイメージをプッシュ/プルできる。
Amazon ECR などのコンテナレジストリと統合できる。

2.4 ロードバランシング

アプリケーションロードバランサー(ALB)やネットワークロードバランサー(NLB)と統合することで、コンテナ化されたアプリケーションのトラフィックを分散し、可用性を高めることができる。

2.5 自動スケーリング

アプリケーションの需要に応じて、コンテナの数を自動的にスケーリングできる。
これにより、リソースの利用率を最適化し、コストを削減できる。

2.6 サービスディスカバリー

AWS Cloud Map と統合することで、サービスディスカバリーを簡単に行うことができる。
コンテナ化されたサービス間で、お互いを自動的に検出できるようになる。

2.7 統合性と拡張性

Amazon ECS は、AWS の他のサービス(Amazon VPC, IAM, CloudWatch, CodeBuild, CodePipeline など)と密接に統合されており、コンテナベースのアプリケーション開発とデプロイメントを効率的に行える。
また、API を利用して、コンテナの管理や自動化を行うこともできる。

3. アーキテクチャおよび技術要素

  1. 開発者は、Docker イメージを Amazon ECR などのコンテナレジストリにプッシュ。
  2. ECS タスク定義を作成し、実行するコンテナイメージ、リソース、ネットワーク設定などを定義。
  3. ECS サービスを作成し、タスク定義に基づいてコンテナをデプロイ。
  4. 必要に応じて、ロードバランサーを設定し、トラフィックを分散。
  5. ECS は、タスクの実行状況を監視し、自動スケーリングを適用。

Amazon ECS は、AWS のインフラ上に構築されており、高い可用性とスケーラビリティを提供する。
コンテナのデプロイや管理は AWS が行うため、ユーザーはインフラの管理を行う必要はない。

4. セキュリティと認証・認可

Amazon ECS は、コンテナアプリケーションのセキュリティを確保するために、以下の機能を提供する:

  • IAM 統合: AWS Identity and Access Management (IAM) を利用して、ECS リソースへのアクセスを制御する。
  • VPC 内での実行: ECS タスクは Virtual Private Cloud (VPC) 内で実行され、ネットワーク隔離を実現。
  • タスクロール: ECS タスクに IAM ロールを割り当て、AWS リソースへのアクセスを制御。
  • データ暗号化: コンテナイメージ、タスクデータなどは暗号化される。
  • セキュリティグループ: ネットワークアクセスをセキュリティグループで制御。

これらのセキュリティ対策により、コンテナアプリケーションとそのデータを安全に保護する。

5. 料金形態

Amazon ECS の料金は主に以下に基づきる:

  • Fargate: 仮想 CPU、メモリ、ストレージなどの使用量に応じて課金。
  • EC2: EC2 インスタンスの利用料金、ストレージ、データ転送量に応じて課金。
  • ロードバランサー: ロードバランサーの利用料金、データ処理量に応じて課金。
  • データ転送: データ転送量に応じて課金。

6. よくあるアーキテクチャ・設計パターン

Amazon ECS は、様々なアプリケーションのデプロイメントに利用できる。
一般的なパターンは以下の通りである:

  • Web アプリケーションのデプロイ: Web アプリケーションをコンテナ化し、ECS でデプロイし、ロードバランサーでトラフィックを分散。
  • マイクロサービスアーキテクチャ: マイクロサービスごとにコンテナをデプロイし、ECS で管理。
  • バッチ処理の実行: バッチ処理ジョブをコンテナ化し、ECS で実行。
  • 機械学習ワークロードの実行: 機械学習モデルをコンテナ化し、ECS で実行。
  • API バックエンド: API バックエンドをコンテナ化し、ECS でデプロイし、API Gateway と連携。
  • CI/CD パイプライン: AWS CodeBuild, CodePipeline と連携し、コンテナイメージのビルドからデプロイまでを自動化。

7. 設定・デプロイ手順(ハンズオン例)

  1. AWS マネジメントコンソールから Amazon ECS を開き、クラスターを作成。
  2. ECS タスク定義を作成し、実行するコンテナイメージ、リソース、ネットワーク設定などを定義。
  3. ECS サービスを作成し、タスク定義に基づいてコンテナをデプロイ。
  4. 必要に応じて、ロードバランサーを設定し、トラフィックを分散。
  5. アプリケーションにアクセスし、動作を確認。

8. 試験で問われやすいポイント

8.1 フルマネージドサービス

  • 利点: コンテナオーケストレーションを AWS が管理、ユーザーはアプリケーション開発に集中。
  • 対象: コンテナのデプロイ、管理、スケーリング。
  • 試験対策: フルマネージドのメリット、管理範囲が問われる。

8.2 実行環境の選択

  • Fargate: サーバーレスでコンテナを実行、インフラ管理が不要。
  • EC2: EC2 インスタンス上でコンテナを実行、より柔軟な構成が可能。
  • 試験対策: Fargate と EC2 の違い、利用ケースが問われる。

8.3 Docker イメージのサポート

  • 連携: Docker CLI、Docker API、Amazon ECR。
  • 利用: コンテナイメージをプッシュ、プル。
  • 試験対策: Docker イメージの利用方法、ECR との連携が問われる。

8.4 ロードバランシング

  • 連携サービス: ALB, NLB。
  • 目的: アプリケーションのトラフィックを分散、可用性を高める。
  • 試験対策: ロードバランサーの設定方法、利用目的が問われる。

8.5 自動スケーリング

  • 機能: アプリケーションの需要に応じて、コンテナ数を自動的にスケーリング。
  • 目的: リソースの利用率を最適化、コストを削減。
  • 試験対策: 自動スケーリングの仕組み、設定方法が問われる。

8.6 サービスディスカバリー

  • 連携サービス: AWS Cloud Map。
  • 機能: コンテナ化されたサービス間での相互検出。
  • 試験対策: サービスディスカバリーの仕組み、Cloud Map との連携が問われる。

8.7 料金体系

  • 課金対象: Fargate 使用量、EC2 インスタンス利用料、ロードバランサー利用料、データ転送量。
  • 最適化: リソース使用率の最適化、適切な実行環境の選択がコスト最適化に有効。

8.8 類似・関連サービスとの比較

  • Amazon EKS: Kubernetes をベースとしたコンテナオーケストレーションサービス。ECS はよりシンプルなコンテナ管理を提供。
  • AWS Fargate: サーバーレスコンピューティングサービス。ECS で Fargate を利用可能。

8.9 試験で頻出となる具体的な問われ方と答え

  • Q: Amazon ECS は何をするサービスか?
  • A: コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできるフルマネージドのコンテナオーケストレーションサービスである。
  • Q: Amazon ECS の実行環境として何が利用できるか?
  • A: Fargate と EC2 の 2 つの実行環境を利用できる。
  • Q: Amazon ECS は、どのようなコンテナイメージをサポートしているか?
  • A: Docker コンテナイメージをサポートしている。
  • Q: Amazon ECS でロードバランシングを行うには、どのようなサービスと統合するか?
  • A: アプリケーションロードバランサー(ALB)やネットワークロードバランサー(NLB)と統合する。
  • Q: Amazon ECS の料金はどのように計算されるか?
  • A: Fargate 使用量、EC2 インスタンス利用料、ロードバランサー利用料、データ転送量などに基づいて計算される。