AWS認定資格 WEB問題集&徹底解説
AIプラクティショナー
AWSサービスの一つであるAmazon Elastic Container Service (Amazon ECS)はどんな内容なのでしょうか?また、AWS認定資格のAIプラクティショナー(AIF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
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. アーキテクチャおよび技術要素
- コンテナイメージをECRに登録する。
- タスク定義でイメージURI・CPU・メモリ・タスクロール・実行ロールを定義する。
- ECSクラスター上にサービスを作成し、起動タイプとALBを設定する。
- ALBターゲットグループが健全なタスクに自動登録・除外する。
- 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. 設定・デプロイ手順(ハンズオン例)
- ECRリポジトリを作成し、
docker build→docker pushでイメージを登録する。 - タスク定義をJSON/コンソールで作成(起動タイプ・CPU・メモリ・コンテナ定義・ロール)。
- ECSクラスターを作成(Fargate起動タイプを選択)。
- Serviceを作成し、ALB・ターゲットグループ・タスク数・サブネット・セキュリティグループを設定する。
- CloudWatch Container Insightsを有効化し、タスクメトリクスを監視する。
- 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起動タイプを選択する。