EC2 インスタンスの再調整に関する推奨事項 - Amazon Elastic Compute Cloud

EC2 インスタンスの再調整に関する推奨事項

EC2 インスタンスの再調整に関するレコメンデーションは、スポットインスタンスで中断のリスクが高まった場合に通知するためのシグナルです。シグナルは、スポットインスタンス中断 2 分前の通知よりも早く到着するので、スポットインスタンスを事前に管理するタイミングを知ることができます。ワークロードを、中断のリスクが高くない新規または既存の スポットインスタンス に再調整することができます。

2 分間のスポットインスタンス中断通知の前に、Amazon EC2 が再調整に関する推奨事項シグナルを送信することは必ずしも可能ではありません。したがって、再調整に関する推奨事項シグナルは、2 分間の中断通知とともに到着する可能性があります。

再調整に関する推奨事項は、EventBridge イベントとして、およびスポットインスタンス上のインスタンスメタデータの項目として使用できます。イベントは、ベストエフォートベースで発生します。

注記

再調整に関する推奨事項は、2020 年 11 月 5 日 00:00 UTC 以降に起動される スポットインスタンス のみをサポートしています。

実行できるアクションの再調整

以下に、実行可能な再調整アクションをいくつか挙げます。

適切なシャットダウン

スポットインスタンスの再調整に関する推奨事項シグナルを受信すると、インスタンスのシャットダウン手順を開始できます。この際、インスタンスを停止する前に各プロセスの完了を確認する必要が生じることがあります。例えば、システムログまたはアプリケーションログを Amazon Simple Storage Service (Amazon S3) にアップロードしたり、Amazon SQS ワーカーをシャットダウンしたり、ドメインネームシステム (DNS) からの登録解除を完了したりできます。また、作業内容を外部ストレージに保存し、後で再開することもできます。

新しい作業がスケジュールされるのを防止

スポットインスタンスの再調整に関する推奨事項シグナルを受信すると、スケジュールされた作業が完了するまでインスタンスの使用を継続しながら、新しい作業がインスタンス上でスケジュールされることを回避できます。

新しい代替インスタンスを積極的に起動

Auto Scaling グループ、EC2 フリート、または スポットフリート を設定しておくと、再調整に関する推奨事項シグナルが送信された場合に、代替のスポットインスタンスを自動的に起動させることができます。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「キャパシティーの再調整を使用して Amazon EC2 スポットの中断に対処する」、およびこのユーザーガイドの「EC2 フリートの 容量の再調整」、「スポットフリートの 容量の再調整」を参照してください。

再調整に関する推奨事項シグナルのモニタリング

再調整に関する推奨事項シグナルをモニタリングして、それが発されたときに、前のセクションで指定したアクションを実行できるようにすることができます。再調整に関する推奨事項シグナルは、Amazon EventBridge (旧称 Amazon CloudWatch Events) に送信されるイベントとして、およびスポットインスタンス上のインスタンスメタデータとしての使用が可能です。

再調整に関する推奨事項シグナルをモニタリングする:

Amazon EventBridge の使用

再調整に関する推奨事項シグナルがスポットインスタンスに対して発信されると、そのシグナルのイベントが Amazon EventBridge に送信されます。EventBridge がルールで定義されているパターンに一致するイベントパターンを検出すると、EventBridge はルールで指定されているターゲットを呼び出します。

次に、再調整に関する推奨事項シグナルのイベント例を示します。

{ "version": "0", "id": "12345678-1234-1234-1234-123456789012", "detail-type": "EC2 Instance Rebalance Recommendation", "source": "aws.ec2", "account": "123456789012", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-2", "resources": ["arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890abcdef0"], "detail": { "instance-id": "i-1234567890abcdef0" } }

次のフィールドは、ルールで定義されているイベントパターンになります。

"detail-type": "EC2 Instance Rebalance Recommendation"

イベントが再調整に関する推奨事項イベントであることを特定します

"source": "aws.ec2"

イベントが Amazon EC2 からのものであることを特定します

EventBridge ルールを作成します

EventBridge ルールを作成し、イベントパターンがルールに一致したときに実行するアクションを自動化できます。

次の例では、Amazon EC2 が再調整に関する推奨事項シグナルを発するたびに、E メール、テキストメッセージ、またはモバイルプッシュ通知を送信する EventBridge ルールを作成します。シグナルは EC2 Instance Rebalance Recommendation イベントとして発され、ルールによって定義されたアクションがトリガーされます。

EventBridge ルールを作成する前に、E メール、テキストメッセージ、またはモバイルプッシュ通知用の Amazon SNS トピックを作成する必要があります。

再調整に関する推奨事項イベントの EventBridge ルールを作成するには
  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. [Create rule] を選択します。

  3. [Define rule detail] (詳細の定義) で、次の操作を行います。

    1. ルールの [Name (名前)] を入力し、必要に応じて説明を入力します。

      ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

    2. [イベントバス] として、[デフォルト] を選択します。アカウント内の AWS のサービスで生成されたイベントは、常に、そのアカウントのデフォルトのイベントバスに送られます。

    3. ルールタイプ では、イベントパターンを持つルール] を選択します。

    4. [Next] を選択します。

  4. [Build event pattern] (イベントパターンの作成) で、次の操作を行います。

    1. [Event source] (イベントソース) で、[AWS events or EventBridge partner events] ( イベントまたは EventBridge パートナーイベント) を選択します。

    2. この例では [Event pattern] (イベントパターン) で、EC2 Instance Rebalance Recommendation イベントと一致するように次のイベントパターンを指定してから、[Save] (保存) を選択します。

      { "source": ["aws.ec2"], "detail-type": ["EC2 Instance Rebalance Recommendation"] }

      イベントパターンを追加するには、以下のように [Event pattern form] (イベントパターンフォーム) を選択してテンプレートを使用するか、[Custom pattern (JSON editor)] (カスタムパターン (JSON エディター)) を選択して独自のパターンを指定します。

      1. テンプレートを使用してイベントパターンを作成するには、以下の操作を行います。

        1. [Event pattern form] (イベントパターンフォーム) を選択します。

        2. [イベントパターンフォーム] では、AWS[サービス] を選択します。

        3. [AWS Service] ( サービス) で、[EC2 Spot Fleet] (EC2 スポットフリート) を選択します。

        4. [Event type] (イベントタイプ) で、[EC2 Instance Rebalance Recommendation] (EC2 インスタンスのリバランスに関するレコメンデーション) を選択します。

        5. テンプレートをカスタマイズするには、[Edit pattern] (パターンを編集) を選択した上で、この例のイベントパターンに合わせた変更を行います。

      2. (代替案) 以下の操作を行って、カスタムイベントパターンを指定します。

        1. [Custom pattern (JSON editor)] (カスタムパターン (JSON エディター)) を選択します。

        2. [Event pattern] (イベントパターン) ボックスに、この例のイベントパターンを追加します。

    3. [Next] を選択します。

  5. [Select target(s)] (ターゲットを選択) で、以下の操作を行います。

    1. ターゲットタイプ] では、AWSサービス] を選択します。

    2. イベントの発生時に E メール、テキストメッセージ、またはモバイルプッシュ通知を送信するために、[Select a target] (ターゲットを選択) で、[SNS topic] (SNS トピック) を選択します。

    3. [Topic (トピック)] で、既存のトピックを選択します。先ず、Amazon SNS コンソールを使用して Amazon SNS トピックを作成する必要があります。詳細については、Amazon Simple Notification Service デベロッパーガイドAmazon SNS を使用した Application-to-Person (A2P) メッセージングを参照してください。

    4. (オプション) [Additional settings] (追加設定) で、その他の設定を行うこともできます。詳細については、「Amazon EventBridge ユーザーガイド」の「イベントに反応する Amazon EventBridge ルールの作成」(ステップ 16) を参照してください。

    5. [Next] を選択します。

  6. (オプション) 必要な場合は、[Tags] (タグ) で 1 つ以上のタグを作成したルールに割り当て、[Next] (次へ) を選択します。

  7. [Review and create] (確認して作成) で、以下の操作を行いす。

    1. ルールの詳細を確認し、必要な場合は変更を行います。

    2. [‬ルールを作成]‭ を選択します。

詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge ルール」と「Amazon EventBridge イベントパターン」を参照してください。

インスタンスメタデータの使用

インスタンスメタデータカテゴリ events/recommendations/rebalance は、スポットインスタンスに対して再調整に関する推奨事項シグナルが発されたおおよその時間 (UTC) を示します。

再調整に関する推奨事項シグナルを 5 秒ごとに確認し、再調整に関する推奨事項に基づいて行動する機会を見逃さないようにすることをお勧めします。

スポットインスタンスが受信した、再調整に関する推奨事項では、そのシグナルが発行された時刻がインスタンスメタデータに含まれています。信号が発された時間は以下のように取得できます。

IMDSv2
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
IMDSv1
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/events/recommendations/rebalance

次に、再調整に関する推奨事項シグナルがスポットインスタンスに対して送信された時刻を、UTC で表示する出力例を示します。

{"noticeTime": "2020-10-27T08:22:00Z"}

インスタンスに対してシグナルが送信されていない場合、events/recommendations/rebalance は存在せず、取得しようとすると HTTP 404 エラーが表示されます。

再調整に関する推奨事項シグナルを使用するサービス

Amazon EC2 Auto Scaling、EC2 フリート、およびスポットフリートにおいて再調整に関する推奨事項シグナルを使用することで、ワークロードの可用性を維持しやすくなります。実行中のインスタンスがスポットインスタンス中断 2 分前の通知を受信していない段階から、事前にフリートを新しいスポットインスタンスで強化することができます。このようなサービスでは、スポットインスタンス の可用性に影響する変更を事前にモニタリングし、対応させることができます。詳細については、次を参照してください: