Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【初心者向け】はじめてのAmazon ECS

【初心者向け】はじめてのAmazon ECS

Avatar for NRI Netcom

NRI Netcom PRO

October 29, 2025
Tweet

More Decks by NRI Netcom

Other Decks in Technology

Transcript

  1. 【初心者向け】はじめてのAmazon ECS 〜 NRIネットコム TECH AND DESIGN STUDY #81 〜

    2025年10月28日 NRIネットコム株式会社 NTシステム事業二部 浮田 博揮
  2. 1 Copyright(C) NRI Netcom, Ltd. All rights reserved. はじめに 01

    ECSとは 02 ECSを構成する4つの要素 03 おわりに 04
  3. 3 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 浮田

    博揮 (UKITA Hiroki) ⚫ NRIネットコム株式会社 NTシステム事業二部 ◼ AWSを利用したシステムのインフラ開発・運用に従事 ◼ ブログ ⚫ NLBはなぜ暖機運転が不要なのか 〜NLBの裏で動くサービスの解説〜 ⚫ Amazon ECS(Fargate)でパケットをキャプチャする ⚫ AWS Network Firewallとそのルールグループについて解説する 自己紹介 https://tech.nri-net.com/archive/author/h-ukita
  4. 4 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ AWSを使い始めたばかりで、ECSに興味がある人

    ◼ Dockerを触ったことがあるが、ECSは未経験の方 ◼ ECS on EC2とFargateの違いに興味がある方 対象者
  5. 6 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Amazon

    Elastic Container Service(以下、ECS)とは… ⚫ フルマネージドなコンテナオーケストレーションサービスのことです ⚫ 簡単に言うと、AWSがよしなにコンテナを管理してくれるサービスのことです ECSとは Amazon ECS AWS Fargate Amazon EC2 コントロールプレーン データプレーン デプロイや スケジューリング、 スケーリングなどを 管理
  6. 7 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Amazon

    Elastic Container Service(以下、ECS)とは… ⚫ フルマネージドなコンテナオーケストレーションサービスのことです ⚫ 簡単に言うと、AWSがよしなにコンテナを管理してくれるサービスのことです ECSとは Amazon ECS AWS Fargate Amazon EC2 コントロールプレーン データプレーン デプロイや スケジューリング、 スケーリングなどを 管理
  7. 8 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ EC2とは

    ⚫ AWS上で動く仮想サーバ ◼ Fargateとは ⚫ サーバーレスなコンピューティングエンジン ⚫ マネージドでスケーリングやメンテナンスが不要 ⚫ 従量課金 ◼ Fargateの特徴 ⚫ プラットフォームバージョン • カーネルやコンテナランタイムのバージョンのことで、Linuxプラットフォームバージョンには1.3.0と1.4.0がある ⚫ ストレージ • エフェメラルストレージ • Linuxプラットフォーム1.4.0の場合、 20GBのAES-256で暗号化されたエフェメラルストレージがタスクにマウントされる • コンテナイメージはエフェメラルストレージに格納されるので、20GBを丸々使えるわけではないことに注意 • 200GBまで拡張できる • プラットフォーム1.4.0でEFSをマウント可能 EC2とFargate
  8. 9 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ ECS

    on EC2の責任共有モデル ECS on EC2とFargateの責任共有モデル 引用)https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/security-shared-model.html#security-shared-model-ec2
  9. 10 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Fargateの責任共有モデル

    ECS on EC2とFargateの責任共有モデル 引用)https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/security-shared-model.html#security-shared-model-fargate
  10. 11 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Fargateの責任共有モデル

    ECS on EC2とFargateの責任共有モデル 引用)https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/security-shared-model.html#security-shared-model-fargate モニタリングやパッチの 管理が不要
  11. 12 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 2025年9月30日、ECSにEC2マネージドインスタンスが登場

    ◼ メリット ⚫ EC2インスタンスのプロビジョニング、スケーリング、メンテナンスの管理をAWSに任せられる ⚫ 最適な汎用EC2インスタンスを自動で選択することによるコスト最適化 • 複数の小さなタスクを大きなEC2インスタンスに配置する • ニーズに適したサイズにEC2インスタンスを変更する • 今まで通りGPUの利用やネットワークパフォーマンスに優れたインスタンスタイプも選択できる ◼ デメリット ⚫ ECSサービス間通信を行うService Connectが使えない ⚫ EC2にSSH接続できない ⚫ 定期的なセキュリティパッチが適用され、EC2インスタンスが再起動する • 最大で14日間EC2インスタンスが稼働する • メンテナンスウィンドウによるスケジュールが可能 ◼ つまり、インフラ管理が不要なECS on EC2が登場した ◼ Fargateを第一の選択肢にしつつ、 GPUを利用したいなどの要件がある場合に、EC2マネージドインスタンスを選択肢に入れる ECSにEC2マネージドインスタンスが登場
  12. 13 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Amazon

    Elastic Container Service(以下、ECS)とは… ⚫ フルマネージドなコンテナオーケストレーションサービスのことです ⚫ 簡単に言うと、AWSがよしなにコンテナを管理してくれるサービスのことです ECSとは Amazon ECS AWS Fargate Amazon EC2 コントロールプレーン データプレーン デプロイや スケジューリング、 スケーリングなどを 管理
  13. 15 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSを構成する4つの要素 コンテナ

    タスク定義 ECSクラスター ECSサービス ECSタスク 参照
  14. 16 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSを構成する4つの要素 コンテナ

    タスク定義 ECSクラスター ECSサービス ECSタスク 参照 ECSサービスやECSタスクを 論理グループ化する
  15. 17 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Service

    Connect ⚫ ECSのサービス間通信の設定 ⚫ 後述のECSサービスで設定できるので、ここでは設定しなくてもよい ◼ インフラストラクチャ ⚫ 実行基盤を選択する • Fargateのみ • Fargate + EC2マネージドインスタンス • Fargate + EC2セルフマネージドインスタンス ECSクラスター
  16. 18 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ モニタリング

    ⚫ オフ • ECSサービスのメトリクスを取得できる ⚫ Container Insights • ECSクラスターとECSサービスのメトリクスを取得できる ⚫ オブザーバビリティが強化されたContainer Insights • ECSクラスターやECSサービス、ECSタスク、コンテナのメトリクスを取得できる ECSクラスター
  17. 19 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ ECS

    Execの暗号化とロギング ⚫ ECS Execは、ECSで稼働しているコンテナへログインできる機能 ⚫ ECSクラスターでは、ECS Execセッションの暗号化とログの出力先を設定する • ECS Execの有効化はECSサービスで行う • 既にTLS 1.2で暗号化されており、独自の暗号化キーを利用したい場合に設定する ECSクラスター
  18. 20 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 暗号化

    ⚫ 暗号化されたストレージ • EBSはAWSにより暗号化されている • AWSマネージドキー、もしくはカスタマーマネージドキーで暗号化したいときに設定する ⚫ Fargateエフェメラルストレージ • Fargateのプラットフォームバージョン1.4.0のエフェメラルストレージはAWSにより暗号化されている • AWSマネージドキー、もしくはカスタマーマネージドキーで暗号化したいときに設定する ◼ デフォルトで暗号化されているので、積極的に設定する必要はない ECSクラスター
  19. 21 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSを構成する4つの要素 コンテナ

    タスク定義 ECSクラスター ECSサービス ECSタスク 参照 タスクの管理を行う ・必要なタスク数 ・デプロイの設定 ・ネットワークの設定
  20. 22 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ サービスの詳細

    ⚫ タスク定義ファミリー • タスク定義の選択 ⚫ リビジョン • タスク定義のバージョンのこと ECSサービス
  21. 23 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ コンピューティング設定

    ⚫ キャパシティプロバイダー • オンデマンドとスポットインスタンスを併用できる ⚫ 起動タイプ • Fargate、EC2、External(オンプレや仮想マシンにコンテナを起動する) ◼ トラブルシューティング ⚫ ECS Execをオンにする • 適切なIAMロールを割り当てると、コンテナに接続することができる ECSサービス
  22. 24 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ デプロイ設定

    ⚫ スケジューリング戦略 • レプリカ • クラスター全体で必要なタスクを維持する(Fargateはレプリカ一択) • デーモン • コンテナインスタンスごとに1つのタスクを起動する ⚫ 必要なタスク数 • 起動したいタスク数を設定する ⚫ アベイラビリティゾーンの再調整 • ベストエフォートによる配置から厳格に配置するようにする ⚫ ヘルスチェックの猶予期間 • ELB、コンテナからのヘルスチェックを無視する期間 • デフォルトは0秒なので、コンテナの起動が長い場合は猶予期間を調整する ECSサービス
  23. 25 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ デプロイ設定

    ⚫ ローリングアップデート • タスクを徐々に置き換えていく ⚫ ブルー/グリーン • 既存環境(ブルー)と並行して 新環境(グリーン)を作成する • グリーンに対してテストを実施し、 問題なければトラフィックを 切り替える • グリーンに本番のトラフィックを流してすとすることが可能 • 秒単位によるロールバックが可能 ECSサービス 実行中タスク:2 最小実行タスク:100% 最大実行タスク:200% 実行中タスク 新規起動タスク ローリングアップデートのタスクの流れ の場合、2つのタスクを維持したまま 最大で4つのタスクを起動する
  24. 26 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ デプロイ不具合の検出

    ⚫ ECSでデプロイの失敗を検出する方法とアクションを設定する ⚫ サーキットブレーカーを使用する • タスクが正常に起動しない場合、デプロイを失敗扱いにする • 失敗時のデプロイ • 失敗時に、正常に起動していたタスクの状態に戻す ⚫ CloudWatchアラームを使用 • サーキットブレーカーではなく、CloudWatchアラームを使用してデプロイを失敗扱いにする ECSサービス
  25. 27 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ ネットワーキング

    ⚫ ECSタスクをどのサブネットで起動するか、またアタッチするセキュリティグループを設定する • VPC • サブネット • セキュリティグループ • パブリックIP ECSサービス
  26. 28 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ ロードバランシング

    ⚫ ECSの前段にロードバランサーを配置する ⚫ ロードバランサーの種類 • ALB • NLB ⚫ ロードバランサー、リスナー、 ターゲットグループを設定する ⚫ 今回は、HTTP:80ポートのトラフィックを ALBからECSにそのまま流しています ECSサービス
  27. 29 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ サービスの自動スケーリング

    ⚫ CPU使用率やメモリ使用量に応じてECSタスクを スケーリングする ⚫ タスクの最小数 • ECSタスクの最小稼働数 ⚫ タスクの最大数 • ECSタスクの最大稼働数 ⚫ タスクの最小数 ≦稼働中のタスク ≦タスクの最大数 ⚫ スケーリングポリシータイプ • ターゲットの追跡(AWS推奨) • タスク全体のCPUやメモリのターゲット値になるよう タスク数を増減させる • ステップスケーリング • 段階的にスケーリングする ECSサービス
  28. 30 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSを構成する4つの要素 コンテナ

    タスク定義 ECSクラスター ECSサービス ECSタスク 参照 タスク定義に基づき コンテナ群を実行する
  29. 31 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ タスク定義に基づき実行されるコンテナ群

    ◼ 同一のホストで実行されるため、タスク内のコンテナ間通信ができる ◼ ECSタスクの終了フロー ⚫ エントリープロセスであるプロセスID1にSIGTERMシグナルが送信される ⚫ 正常終了しない場合、30秒後にSIGKILLが送信されが強制終了する ECSタスク Nginxコンテナ ECSタスク Mackerelコンテナ 通信が可能 引用)https://aws.amazon.com/jp/blogs/news/graceful-shutdowns-with-ecs/
  30. 32 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSを構成する4つの要素 コンテナ

    タスク定義 ECSクラスター ECSサービス ECSタスク 参照 コンテナの詳細な設定を行う ・使用するDockerイメージ ・CPUとメモリの設定 ・環境変数やログの設定
  31. 33 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ タスク定義ファミリー

    ⚫ タスク定義の名前を決める ⚫ リビジョン(バージョン)管理されており、タスク定義を更新するごとにリビジョンが増える ECSタスク定義
  32. 34 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 起動タイプ

    ⚫ 起動タイプを選択する ⚫ OS、アーキテクチャ、ネットワークモード ⚫ タスクサイズ設定 • ECSタスクのCPUとメモリを設定する • 細かい設定はできない • 予め決められた値から選択する ECSタスク定義 引用) https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate- tasks-services.html#fargate-tasks-size
  33. 35 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 起動タイプ

    ⚫ タスクロール • コンテナ内のアプリケーションが AWSサービスを利用する際に使うIAMロール • 設定は必須ではない ⚫ タスク実行ロール • ECSタスク起動時に利用するIAMロール • ECRからイメージを取得したり、 CloudWatch Logsへログを出力したりするのに使う ECSタスク定義 コンテナ ECSタスク タスクロール タスク実行ロール
  34. 36 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ コンテナ

    ⚫ 必須コンテナ • システムの存続に不可欠なコンテナであれば「はい」にする • タスクには、少なくとも1つの必須コンテナが必要 ⚫ イメージURI • 起動するイメージを選択 ECSタスク定義
  35. 37 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ コンテナ

    ⚫ ポートマッピング • コンテナとホストのポートをマッピングしてトラフィックの送受信をできるようにする ⚫ リソース割り当て制限 • ソフト制限 • あらかじめリソースを予約したいときに、コンテナが使うメモリを予約する • ハード制限 • 上限を設けて暴走を防ぎたいときに、コンテナが使うメモリを予約する • 値を超えるとコンテナは停止する ECSタスク定義
  36. 38 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 環境変数

    ⚫ コンテナ内で使いたい変数を登録する ⚫ キーとバリューを登録する ⚫ 秘密データを渡す場合は、AWS SSMのパラメータストアを利用する ECSタスク定義
  37. 39 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ ログ記録

    ⚫ CloudWatchやSplunk、Data Firehose、Kinesis Data Stream、OpenSearch、S3にログを転送できる ECSタスク定義
  38. 40 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 再起動ポリシー

    ⚫ 再起動ポリシーを有効にする • 1タスクに複数コンテナを起動している状態で、1つのコンテナが落ちるとタスク全体が落ちるのを防ぐ • 再起動ポリシーが無効の場合、タスクが再起動を行う • 再起動ポリシーが有効の場合、対象のコンテナが再起動を行う ⚫ 無視された終了コード • コンテナが再起動しない終了コード ⚫ 試行リセット期間 • コンテナを再起動する前に、コンテナが実行しないといけない期間 • デフォルトだと300秒後に、コンテナが終了すると再起動される ECSタスク定義 Nginxコンテナ ECSタスク Mackerelコンテナ Nginxコンテナが終了すると Nginxコンテナだけを再起動する
  39. 41 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ HealthCheck

    ⚫ コンテナのヘルスチェックコマンドと関連するパラメータを設定する ⚫ Dockerのヘルスチェックと同じ ECSタスク定義
  40. 42 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ スタートアップの依存関係の順序

    ⚫ コンテナの起動を順序通りに起動させる ⚫ パラメータにSTART、COMPLETE、SUCCESS、HEALTHYがある ◼ コンテナタイムアウト ⚫ タイムアウトを開始 • 依存関係の解決を諦めるまで待機する時間 ⚫ タイムアウトを停止 • 正常終了しなかったときに、強制終了するまでの待機時間 • デフォルトは30秒 ECSタスク定義
  41. 43 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Docker設定

    ⚫ エントリポイントを上書きしたい時に設定する • エントリポイント • コマンド • 作業ディレクトリ ECSタスク定義
  42. 44 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSを構成する4つの要素 コンテナ

    タスク定義 ECSクラスター ECSサービス ECSタスク 参照 コンテナの詳細な設定を行う ・使用するDockerイメージ ・CPUとメモリの設定 ・環境変数やログの設定 ECSサービスやECSタスクを 論理グループ化する タスクの管理を行う ・必要なタスク数 ・デプロイの設定 ・ネットワークの設定 タスク定義に基づき コンテナ群を実行する
  43. 46 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ ECSとは

    ⚫ フルマネージドなコンテナオーケストレーションサービス ◼ ECSには4つの構成要素がある ⚫ ECSクラスター • ECSサービスやECSタスクを論理グループ化する ⚫ ECSサービス • タスクの管理を行う ⚫ ECSタスク • タスク定義に基づきコンテナ群を実行する ⚫ タスク定義 • コンテナの詳細設定を行う ◼ 実行基盤 ⚫ Fargate • サーバレスなコンピューティングエンジン • インフラの管理が不要 ⚫ EC2マネージドインスタンス • インフラの管理が不要なEC2 ⚫ EC2セルフマネージドインスタンス おわりに ◼ ECSを使うメリット ⚫ マネージドであるため、インフラ管理の手間を減らせる • AWS FargateやEC2マネージドインスタンスを 利用すれば、OS等の管理が不要になる ⚫ スケーラブル • 負荷に応じてスケールイン/スケールアウトする ⚫ 高可用性 • 複数のAZに跨ってコンテナを起動することができる ⚫ コスト最適化 • 必要な分だけリソースを使える ⚫ 柔軟な実行環境 • EC2 or Fargate • スポットインスタンスも選択可能