Amazon ECS タスク配置戦略 - Amazon Elastic Container Service

Amazon ECS タスク配置戦略

タスク配置戦略は、タスク配置またはタスクの終了でインスタンスを選択するためのアルゴリズムです。タスクの実行時または新しいサービスの作成時に、タスク配置戦略を指定できます。タスク配置の戦略は、既存のサービスに対しても更新できます。詳細については、「Amazon ECS タスクの配置」を参照してください。

戦略タイプ

Amazon ECS では、以下のタスク配置戦略をサポートします。

binpack

タスクはコンテナインスタンスに配置され、未使用の CPU またはメモリを最小にします。この戦略は、使用中のコンテナインスタンスの数を最小限に抑えます。

この戦略が使用され、スケールインアクションが実行されると、Amazon ECS は、タスクが終了した後にコンテナインスタンスに残されるリソース量に基づいてタスクを終了します。タスクの終了後に使用可能なリソースが最も多く残るコンテナインスタンスが、そのタスクを終了させます。

random

タスクはランダムに配置されます。

spread

タスクは指定された値に基づいて均等に配置されます。有効な値は instanceId (または同じ効果を持つ host)、または attribute:ecs.availability-zone などのコンテナインスタンスに適用される任意のプラットフォームまたはカスタム属性です。サービスタスクはそのサービスからのタスクに基づいて分散されます。スタンドアロンタスクは、同じタスクグループからのタスクに基づいて分散されます。

この戦略が使用され、スケールインアクションが実行されると、Amazon ECS は、アベイラビリティーゾーン間のバランスを維持するタスクを選択して終了します。アベイラビリティーゾーン内では、タスクはランダムに選択されます。

戦略の例

次のアクションを使用してタスク配置戦略を指定できます。CreateServiceUpdateService、および RunTask

次の戦略は、アベイラビリティーゾーン間でタスクを均等に分散します。

"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" } ]

次の戦略は、すべてのインスタンス間でタスクを均等に分散します。

"placementStrategy": [ { "field": "instanceId", "type": "spread" } ]

次の戦略はメモリに基づいてタスクをビンパックします。

"placementStrategy": [ { "field": "memory", "type": "binpack" } ]

次の戦略はタスクをランダムに配置します。

"placementStrategy": [ { "type": "random" } ]

次の戦略は、アベイラビリティーゾーン間でタスクを均等に分散し、次に各アベイラビリティーゾーン内でインスタンスを均等に分散します。

"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "instanceId", "type": "spread" } ]

次の戦略は、アベイラビリティーゾーン間でタスクを均等に分散し、次に各アベイラビリティーゾーン内でメモリに基づいてタスクをビンパックします。

"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "memory", "type": "binpack" } ]