戦略を使用して Amazon ECS タスク配置を定義する - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

戦略を使用して Amazon ECS タスク配置を定義する

EC2 起動タイプを使用するタスクの場合、Amazon ECS は CPU やメモリなど、タスク定義で指定された要件に基づいてタスクを配置する場所を決定する必要があります。同様に、タスク数を減らすときも、Amazon ECS でどのタスクを終了させるか決定する必要があります。タスク配置の戦略と制約を適用することで、Amazon ECS がタスクを配置および終了する方法をカスタマイズできます。

デフォルトのタスク配置戦略は、タスクを手動で (スタンドアロンタスク) 実行するか、サービス内で実行するかによって異なります。Amazon ECS サービスの一部として実行されるタスクの場合、タスク配置戦略は attribute:ecs.availability-zone を使用した spread です。サービス内のタスクには、デフォルトのタスク配置の制約はありません。詳細については、「Amazon ECS でのコンテナのスケジュール」を参照してください。

注記

タスク配置戦略はベストエフォートです。Amazon ECSは、最適な配置オプションが利用できない場合でも、タスクの配置を試みます。ただし、タスク配置の制約が有効な場合、タスクを配置できないことがあります。

タスク配置戦略と制約は併用できます。例えば、タスク配置戦略とタスク配置制約を使用して、アベイラビリティーゾーン間でタスクを分散し、各アベイラビリティーゾーン内のメモリに基づいてビンパックタスクを分散できます。ただし、G2 インスタンスのみです。

Amazon ECSがタスクを配置する際は、以下のプロセスでコンテナインスタンスを選択します。

  1. タスク定義の CPU、GPU、メモリ、およびポートの要件を満たすコンテナインスタンスを特定します。

  2. タスク配置の制約を満たすコンテナインスタンスを特定します。

  3. タスク配置戦略を満たすコンテナインスタンスを特定します。

  4. タスクを配置するコンテナインスタンスを選択します。

タスク配置戦略は、サービス定義、または placementStrategyパラメータを使用してタスク定義で指定します。

"placementStrategy": [ { "field": "The field to apply the placement strategy against", "type": "The placement strategy to use" } ]

タスクの実行 ()、新しいサービスの作成 (RunTask)、または既存のサービスの更新 (CreateService) 時に戦略を指定できますUpdateService

次の表では、使用可能なタイプとフィールドについて説明します。

type 有効なフィールド値
binpack

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

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

  • cpu

  • メモリ

random

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

使用されていない
spread

タスクは指定された値に基づいて均等に配置されます。

サービスタスクはそのサービスからのタスクに基づいて分散されます。スタンドアロンタスクは、同じタスクグループからのタスクに基づいて分散されます。タスクグループの詳細については、「グループ関連の Amazon ECS タスク 」を参照してください。

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

  • instanceId (またはhost同じ効果を持つ )

  • など、コンテナインスタンスに適用されるプラットフォームまたはカスタム属性 attribute:ecs.availability-zone

タスク配置の戦略は、既存のサービスに対しても更新できます。詳細については、「Amazon ECS がコンテナインスタンスにタスクを配置する方法」を参照してください。

実行する順序で戦略の配列を作成することで、複数の戦略を使用するタスク配置戦略を作成できます。例えば、複数のアベイラビリティーゾーンにタスクを分散し、各アベイラビリティーゾーン内のメモリに基づいてタスクをビンパックする場合、アベイラビリティーゾーン戦略を指定し、その後にメモリ戦略を指定します。戦略の例については、「Amazon ECS タスク配置戦略の例」を参照してください。