Amazon ECS の特徴

Amazon Elastic Container Service (Amazon ECS) は完全に管理されたコンテナオーケストレーションサービスであり、organizations がコンテナ化されたアプリケーションを簡単にデプロイ、管理、およびスケールするのに役立ちます。バージョンレスで独自の Amazon ECS コントロールプレーンは、AWS 環境の他の部分と密接に統合され、クラウドでコンテナワークロードを実行するための安全で使いやすいソリューションを提供します。Amazon ECS は、Amazon Elastic Compute Cloud (Amazon EC2) や AWS Fargate で実行できるほか、Amazon ECS Anywhere のオンプレミスインフラストラクチャでも実行できます。

主な特徴

AWS Fargate は Amazon ECS に組み込まれているため、サーバーの管理、キャパシティプランニング、セキュリティを確保するためのコンテナワークロードの分離方法の決定について心配する必要がなくなります。アプリケーションの要件を定義し、コンソールまたは Command Line Interface (CLI) で起動タイプとして AWS Fargate を選択するだけで、AWS Fargate がコンテナを柔軟なコンピューティングオプションで実行するために必要なスケーリングとインフラストラクチャ管理をすべて行い、アプリケーションに必要な他のサポートする AWS サービスと自動的に統合します。

Amazon ECS Anywhere を利用することで、使い慣れた同じ Amazon ECS コンソールとオペレーターツールを使用して、オンプレミスのコンテナワークロードを管理し、コンテナベースのアプリケーション全体で一貫したエクスペリエンスを実現できます。また、AWS Outposts で Amazon ECS を利用すると、オンプレミスシステムへの特に低いレイテンシーを必要とするコンテナ化したアプリケーションを実行できます。

Amazon ECS は、お客様が既に信頼しているセキュリティ、ID、管理、ガバナンスのツールとネイティブに統合するため、迅速かつ成功裏に本番環境に移行するのに役立ちます。コンテナそれぞれにきめ細かく許可を割り当てることができるため、アプリケーション構築時には高度な分離が可能になります。AWS に期待する高い安全性とコンプライアンスレベルで、コンテナを起動してください。 また、Amazon GuardDuty との統合を通じて、ワークロードに対する外部の脅威がエスカレートする前に、これらの脅威を迅速かつ簡単に検出できます。

Amazon ECS はフルマネージド型のコンテナオーケストレーションサービスであり、AWS の設定と運用上のベストプラクティスが組み込まれているため、コントロールプレーン、ノード、アドオンを管理する必要はありません。ネイティブで AWS とサードパーティーのツールのどちらも統合されているため、チームはアプリケーションの構築のみに集中でき、環境に気を散らされることはありません。

開発

Amazon ECS は、Windows コンテナの管理をサポートしています。Amazon ECS 向けに最適化された Windows Amazon マシンイメージ (AMI) により、インスタンスおよびコンテナの作成時間のパフォーマンスを強化することや、CPU、メモリ使用量、予約メトリクスを確認することが可能になります。

AWS Copilot CLI は、デベロッパーが Amazon ECS および AWS Fargate で本番対応のコンテナ化されたアプリケーションを構築、リリース、および操作できるようにするツールです。Copilot は、インフラストラクチャから継続的デリバリーまでのベストプラクティスを取り入れており、お客様がコマンドラインで快適に利用できるようにします。また、サービスのステータスやログを表示してサービスの状態を監視したり、本番サービスをスケールアップまたはスケールダウンしたり、自動テスト用の新しい環境を起動したりすることもできます。 AWS Copilot をダウンロードしてください。

Amazon ECS は、Docker Hub や Amazon Elastic Container Registry (ECR) など、サードパーティーがホストする Docker イメージリポジトリやアクセス可能なプライベート Docker レジストリで使用できます。 お客様がタスク定義でリポジトリを指定するだけで、Amazon ECS でアプリケーションに最適なイメージが取得されます。

管理

Amazon ECS を使用すると、タスク定義と呼ばれる宣言型の JavaScript Object Notation (JSON) テンプレートを使用してタスクを定義できます。タスク定義では、Docker のリポジトリとイメージ、メモリと CPU の要件、共有データボリューム、コンテナどうしのリンク方法といった、タスクに必要なコンテナを 1 つ以上指定できます。サービスに登録できる単一のタスク定義ファイルから必要な数だけタスクを起動できます。また、タスク定義ファイルを使用すると、アプリケーション仕様のバージョン管理を行うこともできます。

Amazon ECS では、簡単な一連の API アクションでサービスを統合および拡張できます。この API アクションにより、クラスターの作成および削除、タスクの登録および登録解除、Docker コンテナの起動および終了、クラスターおよびクラスター内インスタンスの詳細なステータス情報の取得が可能です。Amazon ECS クラスターのプロビジョニング、タスク定義の登録、コンテナのスケジューリングに AWS CloudFormation を利用することもできます。

Amazon ECS を使用すると、コンテナを新しいバージョンに更新できます。アプリケーションのタスク定義を新しいバージョンに更新してアップロードすると、Amazon ECS スケジューラにより、更新されたイメージを使用して新しいコンテナが自動的に開始され、前のバージョンを実行しているコンテナは自動的に停止します。Amazon ECS では、コンテナは、関連する Application Load Balancer から自動的に登録および登録解除されます。

Amazon ECS は異常のあるコンテナを自動的に復旧し、アプリケーションをサポートするのに必要な数のコンテナを確実に使用できるようにします。

Capacity Providers は、コンテナ化されたワークロードをさまざまな種類のコンピューティング能力で実行する方法について柔軟なルールを定義し、容量のスケーリングを管理します。キャパシティープロバイダーは、Amazon Elastic Compute Cloud (Amazon EC2) と AWS Fargate のどちらでも動作します。タスクとサービスの実行時に、それらを複数の Capacity Providers に分割でき、Fargate と Fargate Spot 全体で事前に定義した分割割合でサービスを実行するなど、新たな機能を有効にすることができます。

Amazon Elastic Block Store (Amazon EBS) は、Amazon ECS および AWS Fargate のデプロイのためにコストパフォーマンスの高いストレージをプロビジョニングできるようにする、使いやすくスケーラブルで高性能なブロックストレージサービスです。Amazon ECS にデプロイされたコンテナワークロードでは、EBS のすべての設定と機能を使用できます。

Amazon Elastic File System (Amazon EFS) は、シンプルでスケーラブルなフルマネージドの伸縮自在なファイルシステムです。これを利用することで、Amazon ECS と AWS Fargate のデプロイから、最新のアプリケーションを構築して、データと状態を永続化および共有できます。接続性を含め、コンテナを用いた Amazon EFS 使用のあらゆる側面に対応し、管理は不要です。アプリケーションのみに集中でき、インフラストラクチャに注意が削がれることはありません。 永続ファイルストレージの詳細をご覧ください

スケジューリングとタスク配置

Amazon ECS には、リソースニーズ (CPU、RAM など) と可用性要件に基づいてクラスター全体にコンテナを配置するスケジューリングストラテジーが複数用意されています。利用可能なスケジューリングストラテジーを使用して、バッチジョブ、実行時間の長いアプリケーションやサービス、デーモンプロセスをスケジューリングできます。

Amazon ECS のタスクスケジューリングでは、バッチ処理ジョブなど、作業の実行と停止を含むプロセスを実行できます。タスクスケジューリングを使用したタスクの開始方法には、ジョブのキューから自動で行う方法、設定した時間間隔に基づいて行う方法があります。

Amazon ECS タスクのスケジューリングについての詳細はこちら »

Amazon ECS サービスのスケジューリングでは、ステートレスなサービスとアプリケーションを実行できます。このスケジューリングストラテジーでは、指定した数のタスクが常に実行され、失敗した場合は再度開始されます。お客様はタスクを Elastic Load Balancing ロードバランサーに登録することや、実行中のタスクに対してユーザーが定義したヘルスチェックを実行することができます。

Amazon ECS のデーモンスケジューリングでは、ECS クラスター内の選択した各インスタンスで同じタスクが自動的に実行されます。これにより、ログ記録、モニタリング、バックアップなど、サービスに共通の管理機能を担うタスクを簡単に実行できます。

Amazon ECS では、ユーザーは、インスタンスタイプ、アベイラビリティーゾーン、ユーザーが定義するカスタム属性といった組み込みの属性に基づいて、Amazon EC2 インスタンスのクラスターへのタスクの配置方法をカスタマイズすることができます。environment=production のような属性を使用してリソースにラベルを付与したり、これらのリソースを検索するためにリスト API アクションを使用したりします。また、RunTask および CreateService API アクションを使用して、これらのリソースにタスクをスケジューリングします。

Amazon ECS では、ビンパックや分散などの配置戦略を使用して、タスクの配置場所を詳細に定義します。複数のポリシーを連鎖させることで、コードを記述することなく高度な配置機能を実現できます。

ネットワーク

Amazon ECS Service Connect は、Amazon ECS のサービス検出、接続、およびトラフィックの可観測性を簡素化します。ネットワークインフラストラクチャではなく、アプリケーションコードに集中できるため、アプリケーションをより迅速に構築できます。ECS Service Connect を使用して、サービスエンドポイントの論理名を定義し、それらをクライアントアプリケーションで使用して依存関係に接続できます。ECS Service Connect は、正常なエンドポイントにトラフィックを送信するのに役立ち、ECS コンソールと Amazon CloudWatch で豊富なトラフィック テレメトリーを提供します。ECS Service Connect では、クライアントアプリケーションがトラフィックエラーを発生させることなく新しいバージョンのサービスエンドポイントに切り替えるのに役立つ自動 Connection Draining がサポートされているため、ネイティブ ECS デプロイはより堅牢です。

ECS Service Connect を使用すると、以下のことができます。

• クライアントアプリケーションが依存関係に接続する方法をワンステップで設定する

• 論理的な名前付けを使用して回復力のある分散アプリケーションを作成および運用する

• ロードバランサーをデプロイおよび設定することなく、ECS タスク間のトラフィックをモニタリングおよび分散する

• サービスをより迅速にデプロイし、アプリケーションを構成する ECS マイクロサービスのシームレスな統合を提供する

既存の Amazon ECS サービスをサービス検出から ECS サービスコネクトに移行する方法の詳細をご覧ください »

Amazon ECS は AWS Cloud Map と統合されているため、コンテナ化されたサービスを互いに簡単に検出して接続することができます。 AWS Cloud Map は、アプリケーションリソースにカスタム名を定義付けるクラウドリソースの検出サービスです。ウェブサービスが、これらの動的に変化するリソースの最新ロケーションを常に検出するため、アプリケーションの可用性が向上します。

既存の Amazon ECS サービスをサービス検出から ECS サービスコネクトに移行する方法の詳細をご覧ください »

Amazon ECS では、Docker ネットワーキングをサポートしており、Amazon VPC と統合してコンテナを分離できます。これにより、コンテナをその他のサービスや外部トラフィックと接続する方法をコントロールできます。Amazon ECS を使用すると、さまざまなユースケースを対象としたコンテナ用の 4 種類のネットワーキングモードから選択できます。

タスクネットワーキング/awsvpc
このモードでは、実行中の各 ECS タスクに専用の伸縮自在なネットワーキングインターフェイスが割り当てられるため、VPC 内のコンテナで EC2 インスタンスのようなフルネットワーキング機能を利用できます。

ブリッジ
このモードでは、ローカルの仮想ネットワーク内のホストで実行しているすべてのコンテナを接続する Linux ブリッジが作成されます。これには、ホストのデフォルトネットワーク接続でアクセスできます。

ホスト
このモードでは、ホストのネットワークスタックにコンテナが直接追加され、分離せずにホストのネットワークにコンテナが公開されます。

なし
このモードでは、コンテナの外部ネットワーキングが無効になります

Amazon ECS は Elastic Load Balancing と統合されているため、ユーザーは Application Load Balancer または Network Load Balancers を使用して、コンテナ全体でトラフィックを分散できます。タスク定義とロードバランサーを使用するよう指定すると、Amazon ECS では、ロードバランサーに対するコンテナの追加と削除が自動的に実行されます。タスク定義でダイナミックポートを指定し、これにより、EC2 インスタンスで予定されている場合に、コンテナに未使用のポートが提供されます。また、パスベースのルーティングを使用して、複数のサービスでロードバランサーを共有します。

モニタリングとロギング

Amazon ECS は、Amazon CloudWatch を通じて、コンテナおよびクラスターのモニタリング機能を提供します。タスク定義、サービスまたはクラスターごとのグループで、実行タスクの CPU とメモリ使用の平均値と合計量をモニタリングできます。コンテナやクラスターのスケールを拡張または縮小する際に、CloudWatch アラームを設定して警告します。

Amazon ECS では、すべての Amazon ECS API 呼び出しを記録し、そのログファイルが AWS CloudTrail を通じて配信されるよう設定できます。記録される情報には、API 呼び出し元の ID、API 呼び出しの時間、API 呼び出し元のソース IP アドレス、リクエストのパラメータ、および Amazon ECS から返された応答の要素が含まれます。CloudTrail により、AWS マネジメントコンソール、AWS SDK、AWS CLI から行われた API コールの履歴が提供されます。これにより、セキュリティ分析、リソース変更履歴、コンプライアンスの監査が可能になります。

AWS Config は Amazon ECS と統合し、AWS アカウントで AWS リソースの設定を可視化します。AWS Config により、ユーザーは、リソースがどのように設定されているのか、互いにどのように関連しているのか、継続的に設定や関係性はどのように変化するのかをモニタリングし、追跡することができます。AWS Config を使用することで、コンプライアンス、セキュリティ、運用上のトラブルシューティング、リソース管理を簡素化できます。

ハイブリッドデプロイ

AWS Outposts で Amazon ECS を使用することで、オンプレミスシステムへの特別に低いレイテンシーを必要とするコンテナ化したアプリケーションを実行できます。Outposts は、AWS のインフラストラクチャ、AWS のサービス、API、およびツールを、実質的にすべての接続サイトに拡張する完全マネージド型サービスです。Outposts で Amazon ECS を使用すれば、クラウドでコンテナを管理するように簡単にオンプレミスのコンテナを管理できます。

Amazon ECS Anywhere により、使い慣れた Amazon ECS コンソールとオペレーターツールを使い、オンプレミスのコンテナワークロードを管理でき、コンテナベースのアプリケーション全体で一貫したエクスペリエンスを実現します。AWS Systems Manager (SSM) の統合で、オンプレミスのハードウェアと AWS コントロールプレーン間には、自動的に安全な信頼関係が確立します。

Amazon ECS Anywhere の詳細はこちら »