AWS認定資格 WEB問題集&徹底解説

AIプラクティショナー

Amazon Elastic Container Service (Amazon ECS) の概要と試験出題ポイントは?

AWSサービスの一つであるAmazon Elastic Container Service (Amazon ECS)はどんな内容なのでしょうか?また、AWS認定資格のAIプラクティショナー(AIF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

Amazon ECS 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

Amazon Elastic Container Service (ECS) は、Dockerコンテナを実行・管理するためのAWS独自のフルマネージドコンテナオーケストレーションサービスです。 Control Plane(スケジューリング・ヘルスチェック)はAWSが完全管理し、ユーザーはアプリ実行に集中できます。

起動タイプは EC2(インスタンス管理あり)Fargate(サーバーレス・管理不要)ECS Anywhere(オンプレ・他クラウド) の3種類から選びます。 Amazon ECR(コンテナイメージレジストリ)、ALB、CloudWatch、Secrets Manager と密接に統合され、AWS 上で最もわかりやすくコンテナを動かす標準解です。

主なユースケースはマイクロサービスアーキテクチャ、Web アプリのコンテナ化、バッチジョブ実行、CI/CD パイプラインとの統合です。

2. 主な特徴と機能

2.1 起動タイプの比較(最頻出)

  • EC2 起動タイプ: EC2インスタンス上でコンテナを実行。OS・パッチ・キャパシティ管理はユーザー責任。GPU、特権コンテナ、Daemonタイプワークロード、カスタムAMIが必要な場合に必須。
  • Fargate 起動タイプ: EC2管理不要。vCPU・メモリ指定のみでタスク単位秒課金。「運用負荷最小化」問題の標準答。GPU不可・Daemonワークロード不可・ホストOS依存処理不可。
  • ECS Anywhere: オンプレミス・他クラウドのサーバをECS管理下に登録。SSM Agentが必須。AWS API・CloudWatchをそのまま利用可能。

2.2 ECSの構成要素

  • クラスター: タスクを実行する論理的な管理単位。
  • タスク定義: コンテナイメージ・CPU・メモリ・IAMロール・ポート・ログ設定などのブループリント。docker-compose 立位。
  • タスク: タスク定義の実行インスタンス。バッチ処理はサービス不要でタスク単位実行。
  • サービス: 指定数のタスクを常時維持し、ALB/NLBと連携してロードバランシング。ローリングアップデートにも対応。

2.3 IAMロール(最強の試験ポイント)

  • タスクロール (Task Role): タスク内のアプリがAWSリソース(S3/DynamoDB等)にアクセスするためのロール。
  • 実行ロール (Execution Role): ECS AgentがECRイメージをPull、CloudWatch Logsを出力、Secrets Manager/SSMからシークレットを取得するためのロール。
  • 「コンテナがAWSリソースにアクセス」→ タスクロール。「ECR Pull / Logs」→ 実行ロール。両者を混同しないことが重要。

2.4 ネットワークモードと Service Connect

  • awsvpcモード: タスクごとにENIが割り当てられ、セキュリティグループで制御可能。Fargateでは必須。
  • ECS Service Connect: マイクロサービス間のディスカバリー・ロードバランシング・認証を、ローカルプロキシ経由で提供。App Meshより簡単なサービスメッシュ代替。

2.5 Auto Scaling と Fargate Spot

  • スケール対象は「タスク数」。CPU/メモリ使用率・ALBリクエスト数/CloudWatchカスタムメトリクスでスケール。
  • EC2起動タイプではタスクAuto Scaling + EC2 ASGの二段階スケールが必要。
  • Fargate Spot: Fargateに比べ大幅割引(割り込みリスクあり)。フォールトトレラントなバッチ処理向け。

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

  1. コンテナイメージをECRに登録する。
  2. タスク定義でイメージURI・CPU・メモリ・タスクロール・実行ロールを定義する。
  3. ECSクラスター上にサービスを作成し、起動タイプとALBを設定する。
  4. ALBターゲットグループが健全なタスクに自動登録・除外する。
  5. CloudWatch Container Insights / ECS Execで運用監視を行う。

典型パターン: ALB → ECS Service(Fargate) → RDS/ElastiCache。 CI/CDでは CodePipeline → CodeBuild(Docker build/ECR push)→ ECS サービス更新が標準。

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

  • タスクロール: コンテナアプリのAWSリソースアクセス権限。IAMユーザー・アクセスキーをコンテナに埋め込むのは誤り。
  • 実行ロール: ECS AgentがECR Pull/Logs出力するための権限。
  • シークレット管理: Secrets Manager / SSM Parameter Storeをタスク定義のsecretsフィールドで参照。実行ロールに取得権限が必要。
  • VPC/セキュリティグループ: awsvpcモードでタスク単位のSG制御が可能。
  • ECRイメージスキャン: Amazon Inspector連携ECRスキャンで脆弱性検出。
  • ECS Exec: SSMセッションマネージャー経由でタスクコンテナにインタラクティブ接続。SSH不要。

5. 料金形態

  • ECS Control Plane: 無料。
  • EC2起動タイプ: EC2インスタンス料金が発生。
  • Fargate: vCPU・メモリの使用量-秒単位で課金。EC2より単価は高いが運用コスト考慮でFargateが有利なケースも多い。
  • Fargate Spot: Fargateに比べ大幅割引(割り込みリスクあり)。フォールトトレラントなバッチ処理向け。
  • ECS Anywhere: 登録インスタンス1台あたりの時間課金。
  • ECR: ストレージ(GB/月)とデータ転送料。

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

  • マイクロサービス: サービスごとにECSサービスを作成し、Service Connectでサービス間通信。
  • WebアプリFargate: ALB → ECS Fargate Service → RDS/Aurora。スケールに応じたタスク数自動調整。
  • CI/CDパイプライン: CodeCommit/GitHub → CodeBuild(Docker build + ECR push)→ CodeDeploy(ECSブルー/グリーン)。
  • GPUワークロード: EC2 p4d/p5インスタンス + ECS EC2起動タイプ。
  • バッチ処理: EventBridge → ECSタスク実行(サービス不要)。
  • ハイブリッド: ECS AnywhereでオンプレコンテナをAWS CloudMap/CloudWatchで一元管理。

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

  1. ECRリポジトリを作成し、docker builddocker push でイメージを登録する。
  2. タスク定義をJSON/コンソールで作成(起動タイプ・CPU・メモリ・コンテナ定義・ロール)。
  3. ECSクラスターを作成(Fargate起動タイプを選択)。
  4. Serviceを作成し、ALB・ターゲットグループ・タスク数・サブネット・セキュリティグループを設定する。
  5. CloudWatch Container Insightsを有効化し、タスクメトリクスを監視する。
  6. Auto ScalingポリシーをServiceに連携する。

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

8.1 起動タイプの選択(最頻出)

Q: 「コンテナの運用負荷を最小化したい」というECS設問での起動タイプは?
A: Fargate。EC2インスタンス・OS パッチ・キャパシティ管理が不要。

Q: GPUや特権コンテナが必要な場合は?
A: EC2起動タイプ。FargateはGPU非対応。

Q: オンプレミスのサーバをECS管理下に入れたい場合は?
A: ECS Anywhere。SSM Agentのインストールが必要。

8.2 タスクロール vs 実行ロール

Q: コンテナ内のアプリがS3にアクセスするための権限を付与するには?
A: タスク定義にタスクロール(Task Role)を設定する。実行ロールは不正解。

Q: ECS AgentがECRからイメージをPullするための権限は?
A: 実行ロール(Execution Role)に ecr:GetAuthorizationToken 等の権限が必要。

8.3 サービス vs タスク実行

Q: 定期バッチ処理にはサービスが必要か?
A: 不要。EventBridge等からタスクを単発起動するだけでよい。サービスは常時続起動を維持する場合に使う。

8.4 ECS vs EKS vs Lambda

  • ECS: AWSネイティブの簡単コンテナ管理。Kubernetes汎用層不要。
  • EKS: Kubernetes互換・展望性が必要な場合。マイグレーションポジティブ。
  • Lambda: 15分以内・イベント駆動ならLambda。長時間常駐・コンテナ化済みアプリはECS。

8.5 Fargateの制限と速判断

Q: Fargateで実行できないワークロードは?
A: GPUワークロード、Daemonタイプ、ホストOSに依存する特権コンテナ。これらはEC2起動タイプを選択する。