

# Amazon ECS クラスター
<a name="clusters"></a>

Amazon ECS クラスターは、コンテナ化されたアプリケーションのインフラストラクチャ容量を提供する、タスクまたはサービスの論理グループです。クラスター作成時には、3 つの主要なインフラストラクチャタイプから選択します。各タイプは、異なるユースケースと運用要件に合わせて最適化されています。

## 適切なクラスタータイプの選択
<a name="cluster-types-overview"></a>

Amazon ECS では、クラスター用に 3 つのインフラストラクチャタイプが用意されています。ワークロード要件、運用設定、コスト最適化の目標に最適なタイプを選択します。

Amazon ECS マネージドインスタンス (推奨)  
**ほとんどのワークロードに最適** – AWS は、プロビジョニング、パッチ適用、スケーリングなど、基盤となる Amazon EC2 インスタンスを完全に管理します。このオプションを使用すると、パフォーマンス、コスト効率、運用のシンプルさについて最適なバランスが得られます。  
**次の場合に使用:**  
+ AWS にインフラストラクチャ管理を任せたい
+ 自動最適化による費用対効果の高いコンピューティングが必要
+ インフラストラクチャではなくアプリケーションに集中したい
+ 柔軟なスケーリングで予測可能なパフォーマンスが必要

Fargate  
**サーバーレスコンピューティング** – インフラストラクチャを管理せずに、タスクが使用するリソースに対してのみ料金を支払うサーバーレスコンピューティング。可変ワークロードや、すぐに使用開始する場合に最適です。  
**次の場合に使用:**  
+ 完全にサーバーレスなオペレーションが必要
+ 予測不可能なワークロードまたは可変ワークロードがある
+ 運用上のオーバーヘッドを最小限に抑えたい
+ 迅速なデプロイとスケーリングが必要

Amazon EC2 インスタンス  
**フルコントロール** – インスタンスの選択、設定、メンテナンスなど、基盤となる Amazon EC2 インスタンスを直接管理します。  
**次の場合に使用:**  
+ 特定のインスタンスタイプまたは設定が必要
+ 活用する既存の Amazon EC2 インフラストラクチャがある
+ カスタム AMI または特殊なソフトウェアが必要
+ 基盤となるインフラストラクチャを最大限制御する必要がある

**注記**  
Amazon ECS マネージドインスタンスは、パフォーマンス、コスト最適化、運用のシンプルさを適切に組み合わせることができる一方で、AWS がインフラストラクチャ管理タスクを処理できるようになるため、ほとんどの新しいワークロードに推奨される選択肢です。

## クラスターコンポーネント
<a name="cluster-components"></a>

クラスターは、インフラストラクチャの容量に加えて以下のリソースで構成されます。
+ タスクとサービスが実行されるネットワーク (VPC およびサブネット)

  キャパシティとして Amazon ECS マネージドインスタンスまたは Amazon EC2 インスタンスを使用する場合、サブネットはアベイラビリティーゾーン、ローカルゾーン、Wavelength ゾーン、または AWS Outposts に含められます。
+ オプションの名前空間

  名前空間は、Service Connect とのサービス間通信に使用されます。
+ モニタリングオプション

  CloudWatch Container Insights は追加料金がかかるフルマネージドサービスです。Amazon ECS のメトリクスとログを自動で収集、集計、要約します。

## クラスターの概念
<a name="cluster-concepts"></a>

Amazon ECS クラスターに関する全般的な概念を以下に示します。
+ クラスターを作成してリソースを分離します。
+ クラスターは AWS リージョン 固有です。
+ クラスターは、次のいずれかの状態になります。  
アクティブ  
クラスターはタスクを受け入れる準備ができており、該当する場合は、クラスターにコンテナインスタンスを登録できます。  
PROVISIONING  
クラスターにはキャパシティプロバイダーが関連付けられており、キャパシティプロバイダーに必要なリソースが作成されています。  
プロビジョン解除中  
クラスターにはキャパシティプロバイダーが関連付けられており、キャパシティプロバイダーに必要なリソースが削除されています。  
FAILED  
クラスターにはキャパシティプロバイダーが関連付けられており、キャパシティプロバイダーに必要なリソースの作成に失敗しました。  
INACTIVE  
クラスターは削除されました。`INACTIVE` ステータスのクラスターは、一定期間アカウント内で検出可能なままになる場合があります。この動作は今後変更される可能性があるため、`INACTIVE` クラスターの永続的な使用を前提としないようにしてください。
+ クラスターには、Amazon EC2 マネージドインスタンス、AWS Fargate、Amazon EC2 インスタンス、または外部インスタンスでホストされているタスクを混在させることができます。タスクは、起動タイプまたはキャパシティプロバイダー戦略として、Amazon ECS マネージドインスタンス、Fargate、または EC2 のインフラストラクチャで実行できます。EC2 キャパシティプロバイダーを使用する場合、Amazon ECS は Amazon EC2 Auto Scaling グループのキャパシティを追跡およびスケーリングしません。
+ クラスターには、Amazon ECS マネージドインスタンスキャパシティプロバイダー、Auto Scaling グループキャパシティプロバイダー、および Fargate キャパシティプロバイダーの組み合わせを含めることができます。キャパシティプロバイダー戦略には、Amazon ECS マネージドインスタンスキャパシティプロバイダー、Auto Scaling グループキャパシティプロバイダー、または Fargate キャパシティプロバイダーのみを含めることができます。
+ Amazon ECS マネージドインスタンスと EC2、または Auto Scaling グループのキャパシティプロバイダーには、異なるインスタンスタイプを使用できます。インスタンスは、一度に 1 つのクラスターにしか登録できません。
+ カスタム IAM ポリシーを作成することで、クラスターへのアクセスを制限できます。詳細については、「[Amazon Elastic Container Service のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」の「[Amazon ECS クラスターの例](security_iam_id-based-policy-examples.md#IAM_cluster_policies)」セクションを参照してください。
+ サービス自動スケーリングを使用して Fargate タスクをスケーリングできます。詳細については、「[Amazon ECS サービスを自動的にスケールする](service-auto-scaling.md)」を参照してください。
+ クラスターのデフォルトの Service Connect 名前空間を設定できます。デフォルトの Service Connect 名前空間を設定したら、Service Connect を有効にすることで、クラスター内で作成された新しいサービスを名前空間のクライアントサービスとして追加できます。追加の設定は必要ありません。詳細については、「[Service Connect を使用して Amazon ECS サービスを短縮名で接続する](service-connect.md)」を参照してください。

## キャパシティープロバイダー
<a name="capacity-providers"></a>

Amazon ECS キャパシティープロバイダーは、クラスター内のタスクに対するインフラストラクチャのスケーリングを管理できます。各クラスターには、1 つ以上のキャパシティプロバイダーがあり、さらにオプションとしてキャパシティプロバイダー戦略があります。クラスターにデフォルトのキャパシティープロバイダー戦略を割り当てられます。キャパシティープロバイダー戦略は、クラスターの複数のキャパシティープロバイダー間にタスクを分散する方法を決定します。スタンドアロンタスクを実行するか、サービスを作成するときは、クラスターのデフォルトのキャパシティプロバイダー戦略か、クラスターのデフォルト戦略をオーバーライドするキャパシティプロバイダー戦略のいずれかを使用します。クラスターのデフォルトのキャパシティプロバイダー戦略は、タスクまたはサービスの起動タイプまたはキャパシティプロバイダー戦略を指定しない場合にのみ適用されます。これらのパラメータのいずれかを指定した場合、デフォルトの戦略は使用されません。

Amazon ECS には、クラスター用に 3 種類のキャパシティプロバイダーを提供します。

Amazon ECS マネージドインスタンスのキャパシティプロバイダー  
AWS は、プロビジョニング、パッチ適用、スケーリング、ライフサイクル管理など、基盤となる Amazon EC2 インスタンスを完全に管理します。これにより、パフォーマンス、コスト効率、運用のシンプルさの最適なバランスが得られます。Amazon ECS マネージドインスタンスキャパシティプロバイダーは、ワークロードの要件に基づいてインスタンスの選択とスケーリングを自動的に最適化します。  
Amazon ECS マネージドインスタンスには次のメリットがあります。  
+ インスタンスの自動プロビジョニングとスケーリング
+ マネージドパッチ適用とセキュリティ更新
+ インテリジェントなインスタンス選択によるコスト最適化
+ 運用オーバーヘッドの削減

Fargate キャパシティプロバイダー  
インフラストラクチャを管理せずに、タスクが使用するリソースに対してのみ料金を支払うサーバーレスコンピューティング。事前定義されたキャパシティプロバイダー (Fargate および Fargate Spot) をクラスターに関連付けるだけで利用できます。

Auto Scaling グループキャパシティープロバイダー  
キャパシティとして Amazon EC2 インスタンスを使用する場合は、Auto Scaling グループを使用して Amazon EC2 インスタンスを管理します。Auto Scaling により、アプリケーションの負荷を処理するために適切な数の使用可能な Amazon EC2 インスタンスを確保できるようになります。基盤となるインフラストラクチャを完全に制御できます。

クラスターには、Amazon ECS マネージドインスタンス、AWS Fargate、Amazon EC2 インスタンス、または外部インスタンスでホストされているタスクを混在させることができます。タスクは、起動タイプまたはキャパシティプロバイダー戦略として、Amazon ECS マネージドインスタンス、Fargate、または EC2 のインフラストラクチャで実行できます。EC2 を起動タイプとして使用する場合、Amazon ECS は Amazon EC2 Auto Scaling グループのキャパシティーを追跡およびスケーリングしません。

クラスターには、Amazon ECS マネージドインスタンスキャパシティプロバイダー、Auto Scaling グループキャパシティプロバイダー、および Fargate キャパシティプロバイダーの組み合わせを含めることができます。キャパシティプロバイダー戦略には、Amazon ECS マネージドインスタンスキャパシティプロバイダー、Auto Scaling グループキャパシティプロバイダー、または Fargate キャパシティプロバイダーのみを含めることができます。