Amazon ECS でコンテナをスケジュールする
Amazon Elastic Container Service (Amazon ECS) は、コンテナ化されたワークロードに柔軟なスケジューリング機能を提供する共有状態のオプティミスティックな並列システムです。Amazon ECSスケジューラはAmazon ECS API と同じクラスターの状態情報を利用して、適切な配置を決定します。
Amazon ECS は、長時間実行されるタスクおよびアプリケーションにサービススケジューラを提供します。バッチジョブまたは単一実行タスクに対してスタンドアロンタスクまたはスケジュールされたタスクを手動で実行することもできます。ニーズに最適なタスクを実行するためのタスク配置戦略や制約を指定できます。例えば、タスクを複数のアベイラビリティーゾーンにまたがって実行するか、単一のアベイラビリティーゾーン内で実行するかを指定できます。さらに、オプションとして、独自のカスタムまたはサードパーティーのスケジューラでタスクを統合することもできます。
オプション | どのようなときに使うか | 詳細情報 |
---|---|---|
サービス | サービススケジューラは、長期実行するステートレスサービスやアプリケーションに適しています。サービススケジューラはオプションで、タスクがElastic Load Balancingロードバランサーに登録されていることも確認します。サービススケジューラで維持されているサービスを更新できます。これには、新しいタスク定義のデプロイや、実行中のタスクの必要数の変更が含まれる場合があります。デフォルトでは、サービススケジューラによってタスクは複数のアベイラビリティーゾーン間で分散されます。ただし、タスク配置戦略と制約を使用すると、タスク配置の決定をカスタマイズできます。 | Amazon ECS サービス |
スタンドアロンのタスク | スタンドアロンタスクは、作業を実行してから停止するバッチジョブなどのプロセスに適しています。例えば、キューに作業が入ったときに RunTask を呼び出す処理を入れることができます。タスクはキューから作業を引き出し、作業を実行して、その後終了します。RunTask を使用すると、デフォルトのタスク配置戦略でクラスター全体にタスクをランダムに分散させることができます。これにより、単一のインスタンスが不均衡な数のタスクを取得する可能性を最小限に抑えることができます。 |
Amazon ECS スタンドアロンタスク |
スケジュールされたタスク | スケジュールされたタスクは、クラスター内で設定された間隔で実行するタスクがある場合に適しており、EventBridge Scheduler を使用してスケジュールを作成できます。バックアップ操作またはログスキャンのタスクを実行できます。作成する EventBridge Scheduler のスケジュールは、指定した時間にクラスター内の 1 つ以上のタスクを実行できます。スケジュールされたイベントは、特定の間隔 (N 分、時間または日ごとに実行されます) に設定できます。それ以外の場合、より複雑なスケジューリングには、cron 表現を使用できます。 |
Amazon EventBridge スケジューラを使用して Amazon ECS タスクをスケジュールする |
コンピューティングオプション
Amazon ECS では、タスクまたはサービスを実行するインフラストラクチャを指定できます。キャパシティープロバイダー戦略または起動タイプを使用できます。
Fargate の場合、キャパシティープロバイダーは Fargate と Fargate Spot です。EC2 の場合、キャパシティープロバイダーは登録されたコンテナインスタンスを持つ Auto Scaling グループです。
キャパシティープロバイダー戦略は、クラスターに関連付けられたキャパシティープロバイダー全体にタスクを分散します。
キャパシティプロバイダー戦略では、クラスターに既に関連付けられており、ACTIVE
または UPDATING
ステータスを持つキャパシティプロバイダーのみを使用できます。クラスターの作成時に、キャパシティプロバイダーをクラスターに関連付けることができます。
キャパシティプロバイダー戦略では、オプションのベース値は、指定されたキャパシティプロバイダーで実行されるタスクの最小限の数を指定します。キャパシティープロバイダー戦略では、ベースを定義できるキャパシティープロバイダーは 1 つだけです。
ウェイト値は、指定したキャパシティプロバイダーを使用する起動済みタスクの総数に対する相対的な割合を決定します。次の例を考えます。2 つのキャパシティプロバイダーを含む戦略があり、両方の重みが 1
であるとします。ベースの割合が達すると、タスクは 2 つのキャパシティプロバイダー間で均等に分割されます。同じロジックを使用して、capacityProviderA に 1
の重みを指定し、capacityProviderB に 4
の重みを指定するとします。そして、capacityProviderA を使うタスクが 1 つ実行されるごとに、capacityProviderB を使うタスクが 4 つ実行されることになります。
起動タイプでは、Fargate またはクラスターに手動で登録した Amazon EC2 インスタンスでタスクを直接起動します。