AWS Fargate キャパシティープロバイダー - Amazon Elastic Container Service

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

AWS Fargate キャパシティープロバイダー

AWS Fargate キャパシティプロバイダーで Amazon ECS を使用すると、Amazon ECS タスクで Fargate と Fargate Spot キャパシティの両方を使用できます。

Fargate Spot を使用すると、割り込み許容のある Amazon ECS タスクを、Fargate 料金と比較して割引料金で実行できます。Fargate Spot は、予備のコンピュートキャパシティーでタスクを実行します。AWS がキャパシティを戻す必要がある場合、タスクは中断され、2 分間の警告が表示されます。

Fargate キャパシティープロバイダーに関する考慮事項

Fargate キャパシティプロバイダーを使用する場合は、次の点を考慮します。

  • Fargate Spot キャパシティプロバイダーは、Fargate の Windows コンテナではサポートされません。

  • ARM64 アーキテクチャの Linux タスクでは、Fargate Spot キャパシティプロバイダーはサポートされません。Fargate Spot では、X86_64 アーキテクチャの Linux タスクのみサポートされます。

  • Fargate と Fargate Spot キャパシティプロバイダーを作成する必要はありません。すべてのアカウントで利用できます。使用するには、クラスターに関連付けるだけで済みます。

  • クラスターに Fargate·と·Fargate·Spot キャパシティプロバイダーを関連付けるには、Amazon ECS API または AWS CLI を使用する必要があります。コンソールを使用してそれらを関連付けることはできません。

  • Fargate と Fargate Spot キャパシティプロバイダーは予約されており、削除できません。ただし、PutClusterCapacityProviders API 操作を使用してクラスターとの関連付けを解除できます。

  • PutClusterCapacityProviders API オペレーションを使用し、キャパシティープロバイダーを既存のクラスターに関連付けられます。

  • Fargate Spot を使用する場合は、タスクでプラットフォームバージョン 1.3.0 以降 (Linux 用) を使用している必要があります。詳細については、「AWS Fargate Linux プラットフォームのバージョン」を参照してください。

  • Fargate および Fargate Spot キャパシティープロバイダーを使用するタスクが停止すると、タスク状態変更イベントが Amazon に送信されます EventBridge。停止した理由は原因を説明しています。詳細については、「タスク状態変更イベント」を参照してください。

  • クラスターには、Fargate キャパシティプロバイダーと Auto Scaling グループキャパシティプロバイダーを混在させることができます。ただし、キャパシティプロバイダー戦略に含めることができるのは Fargate または Auto Scaling グループキャパシティプロバイダーのみで、両方を含めることはできません。詳細については、Amazon Elastic Container Service 開発者ガイドの「Auto Scaling グループキャパシティープロバイダー」を参照してください。

Fargate Spot 終了通知の処理

Spot キャパシティーが常に利用できるわけではないため、次のような結果が生じることを理解してください。

  • 需要が非常に多い時期は、Fargate Spot のキャパシティーが利用できない場合があります。これにより、Fargate Spot のタスクが遅れる可能性があります。このようなイベントでは、Amazon ECS サービスは必要なキャパシティーが利用可能になるまでタスクの起動を再試行します。Fargate が Spot キャパシティーをオンデマンドキャパシティに置き換えることはありません。

  • スポットの中断により Fargate Spot キャパシティーを使用するタスクが停止すると、タスクが停止する前に 2 分間の警告が送信されます。警告は、タスク状態変更イベントとして Amazon に送信 EventBridge され、実行中のタスクに SIGTERM シグナルとして送信されます。サービスの一部として Fargate Spot を使用する場合、このシナリオでは、サービススケジューラは中断信号を受信し、利用可能なキャパシティがあれば Fargate Spot で追加のタスクを起動しようとします。タスクが 1 つしかないサービスは、キャパシティが利用可能になるまで中断されます。正常なシャットダウンの詳細については、「ECS による正常なシャットダウン」を参照してください。

タスクが停止する前にコンテナが正常に終了するように、以下を設定できます。

  • タスクが使用しているコンテナ定義には、120 秒以下の stopTimeout 値を指定できます。デフォルトの stopTimeout 値は 30 秒です。stopTimeout 値を長く指定すると、タスク状態変更イベントが受信した時点から、コンテナが強制的に停止するまでの時間を長くすることができます。詳細については、「[コンテナのタイムアウト]」を参照してください。

  • クリーンアップアクションを実行するには、コンテナ内から SIGTERM シグナルを受信する必要があります。このシグナルの処理に失敗すると、stopTimeout が設定された後に SIGKILL シグナルを受信し、データが損失または破損する可能性があります。

タスク状態変更イベントのスニペットを以下に示します。このスニペットには、Fargate Spot 中断の停止理由と停止コードが表示されます。

{ "version": "0", "id": "9bcdac79-b31f-4d3d-9410-fbd727c29fab", "detail-type": "ECS Task State Change", "source": "aws.ecs", "account": "111122223333", "resources": [ "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef" ], "detail": { "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default", "createdAt": "2016-12-06T16:41:05.702Z", "desiredStatus": "STOPPED", "lastStatus": "RUNNING", "stoppedReason": "Your Spot Task was interrupted.", "stopCode": "SpotInterruption", "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6fEXAMPLE", ... } }

以下は、Amazon ECS タスク状態変更イベントの EventBridge ルールを作成するために使用されるイベントパターンです。オプションで、detail フィールドでクラスターを指定できます。そうすると、そのクラスターのタスク状態変更イベントを受信することになります。詳細については、「Amazon ユーザーガイド」の「 EventBridge ルールの作成」を参照してください。 EventBridge

{ "source": [ "aws.ecs" ], "detail-type": [ "ECS Task State Change" ], "detail": { "clusterArn": [ "arn:aws:ecs:us-west-2:111122223333:cluster/default" ] } }