変更要約: コンテナ運用節 s4 に図 aws-container-ops(ECR→ECS/EKS/Fargate→Container Insights)を追加。クローン基底章は SOA-C02 の図を継承済みで、図欠落は本 s4 のみだったため補完。
3.4コンテナの運用(ECS/EKS/ECR)
SOA-C03 で比重が増したコンテナ運用を学びます。Amazon ECS・EKS・Fargate の使い分け、Amazon ECR によるイメージ管理と脆弱性スキャン、デプロイ戦略(ローリング/Blue-Green)、サービスの自動スケーリング、Container Insights による監視とログ(awslogs/FireLens)、タスクロールによる最小権限を運用観点で押さえます。
SOA-C03(CloudOps Engineer)は、SOA-C02 と比べてコンテナ運用の比重が増えています。運用担当者は、コンテナの実行基盤の選択・イメージの管理・安全なデプロイ・スケーリング・監視を一貫して扱えることが求められます。
3.4.1実行基盤の選択:ECS・EKS・Fargate
- Amazon ECS:AWS ネイティブのコンテナオーケストレーター。シンプルで AWS 統合が深い。
- Amazon EKS:マネージド Kubernetes。Kubernetes エコシステム/移植性が必要な場合に。
- AWS Fargate:ECS/EKS のサーバーレス実行(EC2 を管理しない)。ノード運用を不要にする起動タイプ。
3.4.2Amazon ECR—イメージ管理と脆弱性スキャン
Amazon ECR(Elastic Container Registry)はコンテナイメージの保管場所です。運用では イメージスキャン(基本/拡張スキャン=Amazon Inspector 連携)で既知の脆弱性を検出し、ライフサイクルポリシーで古いイメージを自動削除、イミュータブルタグで上書きを防ぎます。イメージの取得は IAM とリポジトリポリシーで制御します。
3.4.3デプロイとスケーリング
コンテナの更新は ローリング更新(既定)や Blue-Green デプロイ(CodeDeploy 連携で切替・即時ロールバック)で安全に行います。負荷に応じた拡縮は サービスの自動スケーリング(ターゲット追跡=CPU/メモリ/ALB リクエスト数などの目標値に追従)で実現します。前段に Application Load Balancer を置き、ヘルスチェックで不健全なタスクを自動的に置き換えます。
3.4.4監視・ログ・最小権限
監視は CloudWatch Container Insights(クラスター/サービス/タスク/Pod のメトリクスとパフォーマンスを可視化)で行います。ログは awslogs ドライバーや FireLens(Fluent Bit 経由で柔軟にルーティング)で CloudWatch Logs などへ集約します。権限は タスクロール(コンテナ内のアプリ用 IAM ロール)と タスク実行ロール(イメージ取得・ログ出力用)を分け、いずれも最小権限にします。
| 運用テーマ | 使う機能 | 要点 |
|---|---|---|
| 実行基盤 | ECS / EKS / Fargate | AWS統合=ECS、K8s=EKS、サーバーレス=Fargate |
| イメージ | ECR(スキャン/ライフサイクル/イミュータブル) | 脆弱性検出と世代管理 |
| デプロイ | ローリング / Blue-Green(CodeDeploy) | 安全な切替と即時ロールバック |
| スケーリング | サービス自動スケーリング(ターゲット追跡) | CPU/メモリ/ALBリクエストに追従 |
| 監視・ログ | Container Insights / awslogs・FireLens | メトリクス可視化+ログ集約 |
| 権限 | タスクロール / タスク実行ロール | 役割を分け最小権限 |
混同に注意:
①ECS(AWSネイティブ)/EKS(Kubernetes)/Fargate(サーバーレス起動タイプ)——Fargate は ECS/EKS の実行方式であり別物のオーケストレーターではない。
②タスクロール(コンテナ内アプリ用)とタスク実行ロール(イメージ取得・ログ出力用)は別。
③ECR の脆弱性スキャン(イメージの既知脆弱性)とContainer Insights(実行時メトリクス監視)は役割が違う。
「要件 → 機能」:例「EC2 を管理せずコンテナを動かす」=Fargate、「イメージの脆弱性を検出」=ECR スキャン(Inspector 拡張)、「コンテナを無停止で更新し即ロールバック」=Blue-Green(CodeDeploy)、「負荷に応じてタスク数を増減」=サービス自動スケーリング、「クラスター/サービスのメトリクスを可視化」=Container Insights、「コンテナ内アプリに最小権限」=タスクロール。
3.4.5この節のまとめ
- 実行基盤:ECS(AWSネイティブ)/EKS(K8s)/Fargate(サーバーレス)。ECR でイメージをスキャン・世代管理
- デプロイはローリング/Blue-Green(CodeDeploy)、拡縮はサービス自動スケーリング、前段に ALB+ヘルスチェック
- 監視は Container Insights、ログは awslogs/FireLens、権限はタスクロール/タスク実行ロールを分けて最小権限
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. EC2 インスタンスを管理せずにコンテナを実行できる、ECS/EKS のサーバーレス起動タイプはどれですか?
Q2. コンテナイメージの既知の脆弱性を検出し、古いイメージをライフサイクルポリシーで自動削除できる AWS サービスはどれですか?
Q3. コンテナサービスを無停止で更新し、問題があれば即座にロールバックしたい場合に適したデプロイ方式はどれですか?
Q4. ECS/EKS のクラスター・サービス・タスクのメトリクスとパフォーマンスを可視化する CloudWatch の機能はどれですか?
Q5. コンテナ内で動くアプリケーションに最小権限を付与するために使う IAM ロールはどれですか?
Q6. コンテナの負荷(CPU・メモリ・ALB リクエスト数など)の目標値に追従してタスク数を自動的に増減させるのはどれですか?

