

# Amazon ECS の起動タイプとキャパシティプロバイダー
<a name="capacity-launch-type-comparison"></a>

Amazon ECS には、ワークロードのキャパシティを設定するための 2 つの方法があります。起動タイプかキャパシティプロバイダーを使用できます。起動タイプには、EC2、Fargate、External があります。キャパシティプロバイダーは、キャパシティ管理のための高い柔軟性と高度な機能を備えています。Fargate および Fargate スポットキャパシティプロバイダーを使用するサーバーレスコンピューティング、Auto Scaling グループキャパシティプロバイダーを使用するセルフマネージド EC2 インスタンス、または Fargate のシンプルさと EC2 コンピューティングの柔軟性を組み合わせた Amazon ECS マネージドインスタンスキャパシティプロバイダーを使用するフルマネージドコンピューティングでワークロードを実行できます。キャパシティプロバイダーは、リソース割り当てをより適切に制御し、パフォーマンスとコストの両方を最適化することができます。従来の起動タイプと比較すると、ワークロードのキャパシティの設定のために推奨される方法です。キャパシティプロバイダーと起動タイプの違いを理解するために、以下を参考にしてください。

## ベストプラクティス
<a name="comparison-launch-types-vs-capacity-providers"></a>

ベストプラクティスは以下のとおりです。

起動タイプを使用してインフラストラクチャの互換性を定義する  
起動タイプでは、タスクとサービスを実行するインフラストラクチャを定義します。タスクを定義するときは、`RequiresCompatibilities` を指定して、タスクと互換性のある 1 つ以上の起動タイプを含めます。起動タイプとして、EC2、Fargate、External、Amazon ECS マネージドインスタンスを使用できます。起動タイプを使用してタスクまたはサービスを実行することもできますが、起動タイプはタスク定義での互換性の定義のみに使用し、タスクやサービスの起動にはキャパシティプロバイダーを使用することをお勧めします。タスクの互換性を定義には、1 つ以上の起動タイプを選択することができます。

キャパシティプロバイダーを使用してコンピューティングキャパシティーを設定する  
タスクまたはサービスを起動するときは、キャパシティプロバイダー戦略を設定します。Amazon ECS でサポートされているキャパシティプロバイダーは、Fargate および FARGATE\$1SPOT、セルフマネージド EC2 インスタンス用の Auto Scaling グループ、Amazon ECS マネージドインスタンスです。スポットフリートはキャパシティプロバイダーとしてのみ使用でき、起動タイプとしては使用できないことに注意してください。クラスター内には、Amazon ECS マネージドインスタンスキャパシティプロバイダーまたは Amazon EC2 Auto Scaling グループキャパシティプロバイダーを 1 つ、または複数作成できます。Fargate および Fargate Spot キャパシティプロバイダーは、すべてのクラスターで Amazon ECS によって作成および管理されるため、作成する必要はありません。クラスターではすべてのタイプのキャパシティプロバイダーを組み合わせることができますが、キャパシティプロバイダー戦略では異なるタイプのキャパシティプロバイダーを組み合わせることはできません。

サービスのキャパシティを更新する  
サービスのキャパシティプロバイダー戦略を更新するだけで、サービスをコンピューティングタイプ間で移動させることができます。

## サービスのミュータビリティ
<a name="service-mutability"></a>

 Amazon ECS は、異なるキャパシティプロバイダー間のサービスの更新をサポートしています。そのため、次のことが可能になります。
+ 起動タイプからキャパシティプロバイダーへのシームレスな更新
+ 異なるタイプのキャパシティプロバイダー間の移行
+ サービスの再作成なしでさまざまなコンピューティングオプションをテスト

以下に、プロセスの概要を示します。

1. タスク定義を更新する – 例えば、`requiresCompatibilities` にターゲットキャパシティプロバイダー (` MANAGED_INSTANCES` など) が含まれていることを確認します。
**注記**  
タスク定義は、ターゲットキャパシティプロバイダーの互換性検証に合格する必要があります。タスク定義バージョンの `requiresCompatibilities` チェックが失敗した場合、`UpdateService` 呼び出しは失敗します。

1. キャパシティプロバイダーを作成する – カスタム Amazon EC2 Auto Scaling グループを使用する場合は、キャパシティプロバイダーを作成します。

1. サービスを更新する – 起動タイプの代わりにキャパシティプロバイダー戦略を使用するようにサービスを変更します。

1. デプロイを検証する – タスクが正常にデプロイされたことを確認します。

1. モニタリングして最適化する — 必要に応じてキャパシティプロバイダーの設定を調整します。

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

キャパシティプロバイダーからキャパシティプロバイダーへの更新はすべてサポートされています。
+ Amazon EC2 Auto Scaling グループキャパシティプロバイダーから Amazon ECS マネージドインスタンス
+ Fargate キャパシティプロバイダーから Amazon ECS マネージドインスタンス
+ Amazon EC2 Auto Scaling グループキャパシティプロバイダーから Fargate キャパシティプロバイダー
+ Amazon ECS マネージドインスタンスから Fargate キャパシティプロバイダー
+ Fargate キャパシティプロバイダーから Amazon EC2 Auto Scaling グループキャパシティプロバイダー
+ Amazon ECS マネージドインスタンスから Amazon EC2 Auto Scaling グループキャパシティプロバイダー

### 起動タイプからキャパシティプロバイダー
<a name="launch-type-to-capacity-provider"></a>

起動タイプからキャパシティプロバイダーへの更新はすべてサポートされています。
+ EC2 起動タイプから Amazon ECS マネージドインスタンス
+ Fargate 起動タイプから Amazon ECS マネージドインスタンス
+ EC2 起動タイプから Fargate キャパシティプロバイダー
+ EC2 起動タイプから EC2 Auto Scaling グループキャパシティプロバイダー
+ Fargate 起動タイプから Amazon EC2 Auto Scaling グループキャパシティプロバイダー
+ Fargate 起動タイプから Fargate キャパシティプロバイダー
+ 外部起動タイプから Amazon ECS マネージドインスタンス
+ 外部起動タイプから Fargate キャパシティプロバイダー
+ 外部起動タイプから Amazon EC2 Auto Scaling グループキャパシティプロバイダー

### 起動タイプから起動タイプ
<a name="launch-type-to-launch-type"></a>

起動タイプから起動タイプへの更新はサポートされていません。
+ EC2 起動タイプから Fargate 起動タイプ (代わりに Fargate キャパシティプロバイダーを使用)
+ Fargate 起動タイプから EC2 起動タイプ (代わりに Amazon EC2 Auto Scaling グループキャパシティプロバイダーを使用)

起動タイプ間での移行の代わりに、機能の強化と将来の互換性の確保のために、同等のキャパシティプロバイダーに移行します。

**注記**  
タスク定義は、ターゲットキャパシティプロバイダーの互換性検証に合格する必要があります。タスク定義バージョンの `requiresCompatibilities` チェックが失敗した場合、`UpdateService` 呼び出しは失敗します。