スポットインスタンスの使用 - Amazon Elastic Container Service

スポットインスタンスの使用

スポットインスタンスは、オンデマンド価格より低価で利用できる未使用の Amazon EC2 インスタンスです。スポットインスタンス では未使用の EC2 インスタンスを静止状態割引でリクエストできるため、Amazon EC2 のコストを大幅に削減できます。 スポットインスタンスの時間料金は、スポット料金と呼ばれます。各アベイラビリティーゾーンにおける各インスタンスタイプのスポット料金は、Amazon EC2 によって設定され、スポットインスタンスの長期的な需給に基づいて徐々に調整されます。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「スポットインスタンス」を参照してください。

スポットインスタンスを Amazon ECS クラスターに登録できます。詳細については、「Amazon ECS Linux コンテナインスタンスの起動」を参照してください。

スポットインスタンスのドレイン

利用可能なキャパシティーがなくなった場合、または、スポット料金がお客様のリクエストの上限料金を超えた場合には、Amazon EC2 はスポットインスタンスを終了、停止、または休止状態にします。Amazon EC2 は、スポットインスタンスが中断される 2 分前に、そのインスタンスに対し中断を警告するための通知を送信します。インスタンスで Amazon ECS スポットインスタンスのドレインが有効になっている場合、ECS はスポットインスタンスの中断通知を受け取り、インスタンスを DRAINING ステータスにします。

重要

Amazon ECS は、terminate および stop インスタンスアクションがあるスポットインスタンスの中断通知をモニタリングします。スポットインスタンスまたはスポットフリートのリクエスト時に hibernate インスタンスの中断動作を指定した場合、Amazon ECS スポットインスタンスのドレインはこれらのインスタンスではサポートされません。

コンテナインスタンスを DRAINING に設定すると、Amazon ECS によって新規タスクがそのコンテナインスタンスに配置されなくなります。ドレインしているコンテナインスタンス上にある PENDING 状態のサービスタスクは即時停止されます。クラスター内に使用可能なコンテナインスタンスがある場合、そのインスタンスで代わりのサービスタスクが開始されます。

スポットインスタンスのドレインはデフォルトでは無効になっていて、手動で有効にする必要があります。新しいコンテナインスタンスでスポットインスタンスのドレインを有効にするには、コンテナインスタンスの起動時に次のスクリプトを User data フィールドに追加します。MyCluster は、コンテナインスタンスを登録するクラスターの名前に置き換えます。

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_ENABLE_SPOT_INSTANCE_DRAINING=true EOF

詳細については、「Amazon ECS Linux コンテナインスタンスの起動」を参照してください。

既存のコンテナインスタンスに対してスポットインスタンスのドレインを有効にするには

  1. SSH 経由でスポットインスタンスに接続します。

  2. /etc/ecs/ecs.config ファイルを編集して、以下を追加します。

    ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
  3. ecs サービスを再起動します。

    • Amazon ECS に最適化された Amazon Linux 2 AMI の場合:

      sudo systemctl restart ecs
    • Amazon ECS に最適化された Amazon Linux AMI の場合:

      sudo stop ecs && sudo start ecs
  4. (オプション) エージェント詳細分析 API オペレーションをクエリして、エージェントが実行されていることを確認し、新しいコンテナインスタンスに関する情報の一部を表示できます。詳細については、「Amazon ECS コンテナエージェントの詳細分析」を参照してください。

    curl http://localhost:51678/v1/metadata