スポットフリートの操作 - Amazon Elastic Compute Cloud

スポットフリートの操作

スポットフリートを使用するには、ターゲット容量、オプションでオンデマンド部分、インスタンスの 1 つ以上の起動仕様、希望上限価格を含めたスポットフリートリクエストを作成します。フリートリクエストには、フリートがインスタンスの起動に必要とする情報 (AMI、インスタンスタイプ、サブネットまたはアベイラビリティーゾーン、そして 1 つ以上のセキュリティグループ) を定義する起動仕様を含める必要があります。

フリートに スポットインスタンス が含まれている場合、Amazon EC2 はスポット料金の変更に応じてフリートのターゲット容量を維持しようと試みることができます。

送信後にワンタイムリクエストのターゲット容量を変更することはできません。ターゲット容量を変更するには、リクエストを変更し、新しいリクエストを送信します。

スポットフリートリクエストは、期限切れになるかキャンセルされるまで、アクティブな状態を維持します。フリートリクエストをキャンセルするとき、フリートのスポットインスタンスをキャンセルするか、終了するか、どちらかを指定できます。

スポットフリートリクエストの状態

スポットフリートリクエストは、次の状態のいずれかになります。

  • submitted - スポットフリートリクエストは評価中です。Amazon EC2 はターゲット数のインスタンスの起動を準備中です。スポットフリートの上限を超えたリクエストは、即時キャンセルされます。

  • active - スポットフリートは検証済みです。Amazon EC2 はターゲット数の実行中のスポットインスタンスを維持しようとしています。リクエストは、変更またはキャンセルされるまで、この状態のままになります。

  • modifying - スポットフリートリクエストは変更中です。リクエストは、変更が完全に処理されるか、スポットフリートがキャンセルされるまで、この状態を維持します。ワンタイム request を変更することはできません。この状態は、そのようなスポットリクエストには適用されません。

  • cancelled_running - スポットフリートはキャンセルされ、追加のスポットインスタンスを起動しません。その既存の スポットインスタンス は、中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。

  • cancelled_terminating - スポットフリートはキャンセルされ、スポットインスタンスは終了します。リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。

  • cancelled - スポットフリートはキャンセルされ、実行中のスポットインスタンスはありません。スポットリクエストは、インスタンスが終了して 2 日後に削除されます。

スポットフリートのヘルスチェック

スポットフリートは、2 分ごとにフリートのスポットインスタンスのヘルスステータスをチェックします。インスタンスのヘルスステータスは healthy または unhealthy です。

スポットフリートは、Amazon EC2 が提供するステータスチェックを使用して、インスタンスのヘルスステータスを判断します。インスタンスステータスとシステムステータスのいずれかのチェック結果において、ステータスが 3 回連続して impaired を示した場合、そのインスタンスは unhealthy と判断されます。詳細については、「インスタンスのステータスチェック」を参照してください。

フリートを設定して、異常のある スポットインスタンス を置き換えることができます。ヘルスチェックによる置き換えを有効化すると、 と報告されたスポットインスタンスが置き換えられます。unhealthy異常なスポットインスタンスの置き換え中、最大数分間フリートがターゲット容量を下回る場合があります。

要件
  • ヘルスチェックによる置き換えは、1 回限りの スポットフリート (maintain のフリート) ではなく、ターゲットキャパシティを維持しているスポットフリート (タイプ request のフリート) でのみサポートされます。

  • ヘルスチェックによる置き換えは、スポットインスタンス でのみサポートされます。この機能は オンデマンドインスタンス ではサポートされていません。

  • 作成時のみ、異常なインスタンスを置き換えるようスポットフリートを設定できます。

  • ユーザーは、ec2:DescribeInstanceStatus アクションを呼び出す許可を持っている場合のみ、ヘルスチェックの置き換えを使用できます。

Console
コンソールを使用して、異常なスポットインスタンスを置き換えるようにスポットフリートを設定するには
  1. 手順に従ってスポットフリートを作成します。詳細については、「定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)」を参照してください。

  2. 異常のある スポットインスタンス を置き換えるようにフリートを設定するには、[ヘルスチェック][異常のあるインスタンスの置き換え] を選択します。このオプションを有効にするには、まず [Maintain target capacity](ターゲット容量の維持) を選択する必要があります。

AWS CLI
AWS CLI を使用して、異常なスポットインスタンスを置き換えるようにスポットフリートを設定するには
  1. 手順に従ってスポットフリートを作成します。詳細については、「スポットフリートを作成するにはAWS CLI」を参照してください。

  2. 異常のあるスポットインスタンスを置き換えるようにフリートを設定するには、ReplaceUnhealthyInstancestrue と入力します。

スポットフリートアクセス許可

ユーザーがスポットフリートを作成または管理する場合、必要な許可を付与する必要があります。

Amazon EC2 コンソールを使用してスポットフリートを作成した場合、AWSServiceRoleForEC2SpotFleet および AWSServiceRoleForEC2Spot というサービスにリンクされた 2 つのロールと、aws-ec2-spot-fleet-tagging-role というロールが作成されます。ユーザーの代わりに、リソースのリクエスト、起動、終了、タグ付けを行うアクセス許可をスポットフリートに与えます。AWS CLI または API を使用する場合は、これらのロールが存在することを確認する必要があります。

次の手順に従って、必要なアクセス許可を付与し、ロールを作成します。

ユーザーにスポットフリートの許可を付与する

ユーザーがスポットフリートを作成または管理する場合、必ず必要な許可を付与してください。

スポットフリートのポリシーを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[Policies]、[Create policy] の順に選択します。

  3. [ポリシーの作成] ページで、 [JSON] を選択し、テキストを以下に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:CreateTags", "ec2:RequestSpotFleet", "ec2:ModifySpotFleetRequest", "ec2:CancelSpotFleetRequests", "ec2:DescribeSpotFleetRequests", "ec2:DescribeSpotFleetInstances", "ec2:DescribeSpotFleetRequestHistory" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/aws-ec2-spot-fleet-tagging-role" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:ListRoles", "iam:ListInstanceProfiles" ], "Resource": "*" } ] }

    前述したポリシーの例では、ほとんどのスポットフリートのユースケースで必要な許可をユーザーに付与します。特定の API アクションに制限するには、代わりにこれらの API アクションのみを指定します。

    必要な EC2 および IAM の API

    ポリシーには、次の API を含める必要があります。

    • ec2:RunInstances - スポットフリートでインスタンスを起動するために必要

    • ec2:CreateTags - スポットフリートのリクエスト、インスタンス、またはボリュームのタグ付けに必要

    • iam:PassRole - スポットフリートロールを指定するために必要

    • iam:CreateServiceLinkedRole - サービスにリンクされたロールの作成に必要

    • iam:ListRoles - 既存の IAM ロールを列挙するために必要

    • iam:ListInstanceProfiles - 既存のインスタンスプロファイルを列挙するために必要

    重要

    起動仕様または起動テンプレートで IAM インスタンスプロファイルのロールを指定する場合は、そのロールをサービスに渡す許可をユーザーに付与する必要があります。これを行うには、IAM ポリシーで iam:PassRole アクションのリソースとして "arn:aws:iam::*:role/IamInstanceProfile-role" を含めます。詳細については、「IAM ユーザーガイド」の「AWS サービスにロールを渡すアクセス権限をユーザーに付与する」を参照してください。

    スポットフリートの API

    必要に応じて、次のスポットフリート API アクションをポリシーに追加します。

    • ec2:RequestSpotFleet

    • ec2:ModifySpotFleetRequest

    • ec2:CancelSpotFleetRequests

    • ec2:DescribeSpotFleetRequests

    • ec2:DescribeSpotFleetInstances

    • ec2:DescribeSpotFleetRequestHistory

    オプションの IAM API

    (オプション) ユーザーが IAM コンソールを使用してロールまたはインスタンスプロファイルを作成できるようにするには、次のアクションをポリシーに追加する必要があります。

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  4. [ポリシーの確認] を選択します。

  5. [ポリシーの確認] ページでポリシー名と説明を入力し、[ポリシーの作成] を選択します。

  6. アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

スポットフリート用のサービスにリンクされたロール

Amazon EC2 は、ユーザーに代わって AWS の他のサービスを呼び出すために必要なアクセス許可のために、サービスにリンクされたロールを使用します。サービスにリンクされたロールは、AWS のサービスに直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、AWS のサービスにアクセス許可を委任するためのセキュアな方法を提供します。これは、リンクされたサービスのみが、サービスにリンクされたロールを引き受けることができるためです。詳細については、「 IAM ユーザーガイド」の「サービスにリンクされたロールの使用」を参照してください。

Amazon EC2 は、AWSServiceRoleForEC2SpotFleet という、サービスにリンクされたロールを使用して、ユーザーの代わりにインスタンスを起動して管理します。

重要

暗号化された AMI または暗号化された Amazon EBS スナップショットをスポットフリートで指定した場合は、CMK を使用して Amazon EC2 がユーザーの代わりにインスタンスを起動する許可を AWSServiceRoleForEC2SpotFleet ロールに付与する必要があります。詳細については、「暗号化された AMI および EBS スナップショット用の CMK へのアクセス権の付与」を参照してください。

AWSServiceRoleForEC2SpotFleet によって付与されるアクセス許可

Amazon EC2 は、AWSServiceRoleForEC2SpotFleet という、サービスにリンクされたロールを使用して、次のアクションを実行します。

  • ec2:RequestSpotInstances - スポットインスタンスをリクエスト

  • ec2:RunInstances - インスタンスを起動

  • ec2:TerminateInstances - インスタンスを終了

  • ec2:DescribeImages - インスタンスの Amazon マシンイメージ (AMI) を表示

  • ec2:DescribeInstanceStatus - インスタンスのステータスを表示

  • ec2:DescribeSubnets - インスタンスのサブネットを記述

  • ec2:CreateTags - スポットフリートリクエスト、インスタンス、ボリュームにタグを追加

  • elasticloadbalancing:RegisterInstancesWithLoadBalancer - 指定されたインスタンスを指定されたロードバランサーに追加

  • elasticloadbalancing:RegisterTargets - 指定されたターゲットを指定されたターゲットグループに登録

サービスにリンクされたロールの作成

ほとんどの状況では、サービスにリンクされたロールを手動で作成する必要はありません。Amazon EC2 は、コンソールを使用してスポットフリートを初めて作成するときに、AWSServiceRoleForEC2SpotFleet サービスにリンクされたロールを作成します。

Amazon EC2 がこのサービスにリンクされたロールのサポートを開始した 2017 年 10 月よりも前にアクティブなスポットフリートリクエストを行った場合、Amazon EC2は AWS アカウントで AWSServiceRoleForEC2SpotFleet ロールを作成します。 詳細については、IAM ユーザーガイドの「 アカウントに新しいロールが表示される」を参照してください。AWS

AWS CLI または API を使用してスポットフリートを作成する場合、最初にこのロールが存在しているか確認する必要があります。

コンソールを使用して AWSServiceRoleForEC2SpotFleet を作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで Roles (ロール) を選択します。

  3. [Create role] を選択します。

  4. [信頼されたエンティティを選択] ページで、以下の操作を実行します。

    1. [信頼できるエンティティタイプ] で、[AWS サービス] を選択します。

    2. [ユースケース][サービスまたはユースケース] で、[EC2] を選択します。

    3. [ユースケース] で、[EC2 - スポットフリート] を選択します。

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

  5. [アクセス許可を追加] ページで [次へ] を選択します。

  6. [名前、確認、および作成] ページで、[ロールの作成] をクリックします。

AWS CLI を使用して AWSServiceRoleForEC2SpotFleet を作成するには

次のように、create-service-linked-role コマンドを使用します。https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html

aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com

スポットフリートを使用する必要がなくなった場合は、[AWSServiceRoleForEC2Fleet] ロールを削除することをお勧めします。このロールがアカウントから削除された後、コンソールを使用してスポットフリートをリクエストすると、 Amazon EC2 はロールを再作成します。詳細については、 IAM ユーザーガイド の「サービスにリンクされたロールの削除」を参照してください。

暗号化された AMI および EBS スナップショット用の CMK へのアクセス権の付与

暗号化された AMI または暗号化された Amazon EBS スナップショットをスポットフリートリクエストで指定し、カスタマーマネージド型キーを暗号化に使用する場合は、CMK を使用して、Amazon EC2 がユーザーの代わりにインスタンスを起動する許可を、AWSServiceRoleForEC2SpotFleet ロールに付与する必要があります。これを行うには、次の手順で示すように、CMK に付与を追加する必要があります。

アクセス権限を設定するときは、付与がキーポリシーの代わりになります。詳細については、 デベロッパーガイドの「許可の使用」と「 でのキーポリシーの使用」を参照してください。https://docs.aws.amazon.com/kms/latest/developerguide/grants.htmlAWS KMSAWS Key Management Service

CMK を使用するアクセス許可を AWSServiceRoleForEC2SpotFleet ロールに付与するには
  • create-grant コマンドを使用して CMK に付与を追加し、プリンシパル (サービスにリンクされたロール AWSServiceRoleForEC2SpotFleet) を指定します。このプリンシパルには、付与が許可するオペレーションを実行するためのアクセス許可が提供されます。https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.htmlCMK を指定するには、 パラメータと CMK の ARN を使用します。key-idプリンシパルを指定するには、 パラメータとサービスにリンクされたロール AWSServiceRoleForEC2SpotFleet の ARN を使用します。grantee-principal

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2SpotFleet \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

スポットインスタンス用のサービスにリンクされたロール

Amazon EC2 は、AWSServiceRoleForEC2Spot という、サービスにリンクされたロールを使用して、ユーザーの代わりに スポットインスタンス を起動して管理します。詳細については、「スポットインスタンスリクエスト向けのサービスにリンクされたロール」を参照してください。

スポットフリートにタグ付けするための IAM ロール

aws-ec2-spot-fleet-tagging-role IAM ロールは、スポットフリートリクエスト、インスタンス、ボリュームにタグ付けするアクセス権限をスポットフリートに付与します。詳細については、「スポットフリートにタグ付けします。」を参照してください。

重要

フリートのインスタンスにタグ付けすることを選択し、ターゲット容量を維持することを選択した場合 (スポットフリートリクエストのタイプは maintain)、ユーザーと IamFleetRole の許可の違いにより、フリートのインスタンスのタグ付け動作に整合性がなくなる可能性があります。IamFleetRoleCreateTags アクセス許可が含まれていない場合、フリートによって起動されたインスタンスの一部がタグ付けされていない可能性があります。当社はこの不整合の修正に取り組んでいますが、フリートによって起動されたすべてのインスタンスがタグ付けされるようにするために、IamFleetRoleにはaws-ec2-spot-fleet-tagging-roleロールを使用することをお勧めします。または、既存のロールを使用するには、AmazonEC2SpotFleetTaggingRole の AWS 管理ポリシーを既存のロールにアタッチします。それ以外の場合は、既存のポリシーに CreateTags アクセス許可を手動で追加する必要があります。

スポットフリートにタグ付けする IAM ロールを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで Roles (ロール) を選択します。

  3. [Create role] を選択します。

  4. [Select trusted entity] (信頼できるエンティティの選択) ページの [Trusted entity type] (信頼できるエンティティタイプ) で、[AWS service] ( のサービス) を選択します。

  5. [Use case] (ユースケース) で、[Use cases for other AWS services] (他の サービスでのユースケース) から [EC2] を選択し、[EC2 - Spot Fleet Tagging] (EC2 - スポットフリートのタグ付け) を選択します。

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

  7. [アクセス許可を追加] ページで [次へ] を選択します。

  8. [Name, review, and create] (名前、レビュー、および作成) ページで、[Role name] (ロール名) にロールの名前 (例えば、aws-ec2-spot-fleet-tagging-role) を入力します。

  9. ページ内の情報を確認し、[Create role] (ロールを作成) をクリックします。

サービス間の混乱した代理の防止

「混乱した代理」問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。aws-ec2-spot-fleet-tagging-role 信頼ポリシー内のグローバル条件コンテキストキー aws:SourceArnaws:SourceAccount を使用して、リソースについてスポットフリートが別のサービスに付与するアクセス許可を、制限することをお勧めします。

aws:SourceArn および aws:SourceAccount 条件キーを aws-ec2-spot-fleet-tagging-role 信頼ポリシーに追加するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで Roles (ロール) を選択します。

  3. 前に作成してある aws-ec2-spot-fleet-tagging-role を見つけ、リンク (チェックボックスではありません) をクリックします。

  4. [Summary] (概要) にある [Trust relationships] (信頼関係) タブを開き、[Edit trust policy] (信頼ポリシーの編集) をクリックします。

  5. 「混乱した代理」問題を防止するために、JSON ステートメント内で、以下のようにグローバル条件コンテキストキー aws:SourceAccount および aws:SourceArn を含む Condition 要素を追加ます。

    "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:account_id:spot-fleet-request/sfr-*" }, "StringEquals": { "aws:SourceAccount": "account_id" }
    注記

    aws:SourceArn の値にアカウント ID が含まれており、上記のグローバル条件コンテキストキーの両方を同じポリシーステートメント内で使用する場合、aws:SourceAccount 値と aws:SourceArn 値の中のアカウントには、同じアカウント ID を使用する必要があります。

    最終的な信頼ポリシーは次のようになります。

    { "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "spotfleet.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:account_id:spot-fleet-request/sfr-*" }, "StringEquals": { "aws:SourceAccount": "account_id" } } } }
  6. [ポリシーの更新] を選択します。

次の表に、aws-ec2-spot-fleet-tagging-role の範囲を制限するために想定される aws:SourceArn の値を、その特異性の様々なレベルについてまとめました。

API オペレーション 呼び出されたサービス スコープ aws:SourceArn
RequestSpotFleet AWS STS (AssumeRole) aws-ec2-spot-fleet-tagging-role が持つ AssumeRole の機能を、指定されたアカウントの spot-fleet-requests に制限します。 arn:aws:ec2:*:123456789012:spot-fleet-request/sfr-*
RequestSpotFleet AWS STS (AssumeRole) aws-ec2-spot-fleet-tagging-roleが持つ AssumeRole の機能を、指定されたアカウントおよび指定されたリージョンの spot-fleet-requests に制限します。このロールは他のリージョンでは使用できないことに注意してください。 arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-*
RequestSpotFleet AWS STS (AssumeRole) aws-ec2-spot-fleet-tagging-role が持つ AssumeRoleの機能を、フリート sfr-11111111-1111-1111-1111-111111111111 に影響を与えるアクションのみに制限します。このロールは、他のスポットフリートでは使用できない場合があることに注意してください。また、このロールを使用して request-spot-fleet により新しいスポットフリートを起動することはできません。 arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-11111111-1111-1111-1111-111111111111

スポットフリートリクエストを作成します。

AWS Management Console を使用して、アプリケーションまたはタスクのニーズと最低限のコンピューティング仕様のみを選択して、スポットフリートを迅速に作成します。Amazon EC2 は、ユーザーのニーズに最適なフリートを設定し、スポットベストプラクティスに従います。詳細については、「スポットフリートリクエストを迅速に作成します (コンソール)」を参照してください。それ以外の場合は、デフォルト設定のいれかを変更できます。詳細については、定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)およびスポットフリートを作成するにはAWS CLIを参照してください。

スポットフリートリクエストを迅速に作成します (コンソール)

以下の手順に従って、スポットフリートリクエストを迅速に作成します。

推奨設定を使用してスポットフリートリクエストを作成するには (コンソール)
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [Get started] を選択します。それ以外の場合は、[Request Spot Instances] (スポットインスタンスのリクエスト) を選択します。

  4. [Launch parameters] (起動パラメータ) で、[Manually configure launch parameters] (起動パラメータを手動で構成する) を選択します。

  5. AMI で、AMI を選択します。

  6. [Target capacity] (ターゲット容量) の下の [Total target capacity] (総ターゲット容量) で、リクエストする単位数を指定します。ユニットのタイプには、[Instances] (ユニット)、[vCPU]、または [Memory (MiB)] (メモリ (MiB)) を選択できます。

  7. [Your fleet request at a glance] (フリートリクエストの概要) で、フリートの設定を確認し、[Launch] (起動) を選択します。

定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)

定義済みパラメータを使用して、スポットフリートを作成できます。

定義済みパラメータを使用してスポットフリートリクエストを作成するには (コンソール)
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [Get started] を選択します。それ以外の場合は、[Request Spot Instances] (スポットインスタンスのリクエスト) を選択します。

  4. [Launch parameters] (起動パラメータ) では、以下の操作を行います。

    1. スポットコンソールで起動パラメータを定義するには、[Manually configure launch parameters] (起動パラメータを手動で構成する) を選択します。

    2. [AMI] で、AWS が提供する基本 AMI のいずれかを選択します。あるいは、[Search for AMI] (AMI を検索) をクリックして、ユーザーコミュニティの AMI、AWS Marketplace、または独自の AMI を選択することも可能です。

      注記

      起動パラメータで指定された AMI が登録解除または無効になっている場合、AMI から新しいインスタンスを起動することはできません。ターゲット容量を維持するように設定されたフリートの場合、ターゲット容量は維持されません。

    3. (オプション) [Key pair name] で、既存のキーペアを使用するか、新しいキーペアを作成するかを選択します。

      [既存のキーペア] キーペアを選択します。

      [新しいキーペア] [Create new key pair] (新しいキーペアの作成) を選択して [Key Pairs] (キーペア) ページに進みます。完了したら、[Spot Requests] (スポットリクエスト) ページに戻ってリストを更新します。

    4. (オプション) [Additional launch parameters] (追加の起動パラメータ) を展開し、次の操作を実行します。

      1. (オプション) Amazon EBS 最適化を有効にするには、[EBS-optimized] (EBS に最適化された) で [Launch EBS-optimized instances] (EBS に最適化されたインスタンスの起動) を選択します。

      2. (オプション) インスタンス用の一時ブロックレベルストレージを追加するには、[Instance store] (インスタンスストア) で [Attach at launch] (起動時にアタッチ) を選択します。

      3. (オプション) ストレージを追加するには、[Add new volume] (新しいボリュームの追加) を選択し、インスタンスタイプに応じて追加のインスタンスストアボリュームまたは Amazon EBS ボリュームを指定します。

      4. (オプション) デフォルトでは、インスタンスに対して基本モニタリングが有効になります。詳細モニタリングを有効にするには、[Monitoring] (モニタリング) で [Enable CloudWatch detailed monitoring] (CloudWatch 詳細モニタリングの有効化) を選択します。

      5. (オプション) 専有スポットインスタンスを実行するには、[Tenancy] (テナンシー) で [Dedicated - run a dedicated instance] (専有 - 専有インスタンスの実行) を選択します。

      6. (オプション) [Security groups] で、1 つ以上のセキュリティグループを選択するか、新しいセキュリティグループを作成します。

        [既存のセキュリティグループ] 1 つ以上のセキュリティグループを選択します。

        [新しいセキュリティグループ] [Create new security group] (新しいセキュリティグループの作成) を選択し、[Security Groups] (セキュリティグループ) ページに移動します。完了したら、[Spot Requests] (スポットリクエスト) に戻ってリストを更新します。

      7. (オプション) インスタンスにインターネットからアクセスできるようにするには、[Auto-assign IPv4 Public IP] (IPv4 パブリック IP の自動割り当て) で [Enable] (有効化) を選択します。

      8. (オプション) IAM ロールを指定して スポットインスタンス を起動するには、[IAM instance profile] でロールを選択します。

      9. (オプション) 起動スクリプトを実行するには、スクリプトを [User data] (ユーザーデータ) にコピーします。

      10. (オプション) タグを追加するには、[Create tag] (タグの作成) を選択し、タグのキーと値を入力してから [Create] (作成) を選択します。各タグについて、これを繰り返します。

        タグごとに、インスタンスとスポットフリートリクエストに同じタグを付けるには、[Instances] (インスタンス) と [Fleet] (フリート) の両方が選択されていることを確認します。フリートによって起動されたインスタンスのみにタグ付けするには、[Fleet] (フリート) をクリアします。スポットフリートリクエストのみにタグ付けするには、[Istances] (インスタンス) をクリアします。

  5. [Additional request details] (追加のリクエスト詳細) で、以下を実行します。

    1. 追加リクエストの詳細を確認します。変更するには、[Apply defaults] をオフにします。

    2. (オプション) [IAM fleet role] で、デフォルトのロールを使用するか、または別のロールを選択できます。ロールの変更後にデフォルトのロールを使用するには、[Use default role] を選択します。

    3. (オプション) [Maximum price] では、デフォルトの上限料金 (オンデマンド料金) を使用するか、支払う予定の上限料金を指定することができます。上限価格が選択したインスタンスタイプのスポット料金より低い場合、スポットインスタンス は起動されません。

    4. (オプション) 特定の期間中のみ有効なリクエストを作成するには、[Request valid from] (リクエスト有効期間開始日) および [Request valid until] (リクエスト有効期間終了日) を編集します。

    5. (オプション) デフォルトでは、リクエストの有効期限が切れるとスポットインスタンスは終了します。リクエストの有効期限が切れた後も実行し続ける場合、[Terminate the instances when the request expires] (リクエストの期限後にインスタンスを終了) をオフにします。

    6. (オプション) ロードバランサーを使用する スポットインスタンスを登録するには、[Receive traffic from one or more load balancers] (1 つ以上のロードバランサーからトラフィックを受信) を選択して、1 つ以上のクラシックロードバランサーまたはターゲットグループを選択します。

  6. [Minimum compute unit] (最小コンピューティングユニット) で、アプリケーションまたはタスクで必要な最低限のハードウェア仕様 (vCPU、メモリ、ストレージ) を選択して、[as specs] (仕様として) または [as an instance type] (インスタンスタイプとして) を指定します。

    • [as specs] (仕様として) については、必要な vCPU 数とメモリ量を指定します。

    • [as an instance type] (インスタンスタイプとして) では、デフォルトのインスタンスタイプをそのまま使用するか、[Change instance type] (インスタンスインスタンスタイプを変更) を選択して別のインスタンスタイプを選択します。

  7. [Target capacity] (ターゲット容量) で、以下の操作を実行します。

    1. [Total target capacity] (総ターゲット容量) で、ターゲット容量にリクエストする単位数を指定します。ユニットのタイプには、[Instances] (ユニット)、[vCPU]、または [Memory (MiB)] (メモリ (MiB)) を選択できます。ターゲット容量を 0 に指定して後で容量を追加できるようにするには、[Maintain target capacity] を選択します。

    2. (オプション) [Include On-Demand base capacity] (オンデマンドベースの容量を含める) で、リクエストするオンデマンド単位数を指定します。数値は [Total target capacity] (ターゲットキャパシティの合計) 未満にする必要があります。Amazon EC2 は差分を計算し、この差をリクエストするスポット単位に割り当てます。

      重要

      オプションのオンデマンド容量を指定する場合、最初に起動テンプレートを選択する必要があります。

    3. (オプション) デフォルトでは、Amazon EC2 は中断されるとスポットインスタンスを削除します。ターゲット容量を維持するには、[ターゲット容量を維持する] を選択します。これで、中断時に Amazon EC2 がスポットインスタンスを終了、停止、または休止するように指定できます。これを行うには、[Interruption behavior] から対応するオプションを選択します。

      注記

      起動パラメータで指定された AMI が登録解除または無効になっている場合、AMI から新しいインスタンスを起動することはできません。ターゲット容量を維持するように設定されたフリートの場合、ターゲット容量は維持されません。

    4. (オプション) フリートの既存スポットインスタンスにインスタンスの再調整の通知が発行されたときに、スポットフリートが代替スポットインスタンスを起動できるようにするには、[Capacity rebalance] (容量の再調整) を選択し、インスタンス置換戦略を選択します。[Launch before terminate] (終了前に起動する) を選択した場合、スポットフリートが古いインスタンスを終了させるまでの遅延時間 (秒単位) を指定します。詳細については、「容量の再調整」を参照してください。

    5. (オプション) フリートのすべての スポットインスタンスに対して 1 時間あたりに支払う金額を制御するには、[Set maximum cost for Spot Instances] (スポットインスタンスの上限価格を設定する) を選択し、1 時間あたりに支払うことができる上限の合計金額を入力します。上限の合計金額に達すると、ターゲット容量に満たない場合でも、スポットフリートはスポットインスタンスの起動を停止します。詳細については、「使用量の管理」を参照してください。

  8. [Network] (ネットワーク) で、以下の操作を実行します。

    1. [Network] (ネットワーク) で既存の VPC を選択するか、新しい VPC を作成します。

      [既存の VPC] VPC を選択します。

      [新しい VPC] [新しい VPC の作成] を選択して Amazon VPC コンソールにアクセスします。完了したら、ウィザードに戻ってリストを更新します。

    2. (オプション) [アベイラビリティーゾーン] では、 でスポットインスタンス のアベイラビリティーゾーンを選択するか、1 つ以上のアベイラビリティーゾーンを指定します。AWS

      アベイラビリティーゾーンに複数のサブネットがある場合、[Subnet] から適切なサブネットを選択します。サブネットを追加するには、[Create new subnet] を選択して Amazon VPC にアクセスします。完了したら、ウィザードに戻ってリストを更新します。

  9. [Instance type requirements] (インスタンスタイプの要件) では、インスタンス属性を指定して、Amazon EC2 にこれらの属性を持つ最適なインスタンスタイプを識別させるか、またはインスタンスのリストを指定することができます。詳細については、「スポットフリートの属性ベースのインスタンスタイプの選択」を参照してください。

    1. [Specify instance attributes that match your compute requirements] (コンピューティング要件に一致するインスタンス属性を指定する) を選択した場合、インスタンス属性を次のように指定します。

      1. [vCPUs] に、希望する vCPU の最小数と最大数を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。

      2. [Memory (GiB)] (メモリ (GiB)) に、希望するメモリの最小値と最大値を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。

      3. (オプション) [Additional instance attributes] (その他のインスタンス属性) では、オプションで 1 つ以上の属性を指定して、コンピューティング要件をより詳細に表現できます。追加の属性は、リクエストにさらに制約を追加します。追加の属性は省略できます。省略すると、デフォルト値が使用されます。各属性およびそのデフォルト値の説明については、「Amazon EC2 コマンドラインリファレンス」の「get-spot-placement-scores」を参照してください。

      4. (オプション) 指定した属性を持つインスタンスタイプを表示するには、[Preview matching instance types] (一致するインスタンスタイプをプレビューする) を展開します。インスタンスタイプがリクエストで使用されないようにするには、インスタンスを選択し、[Exclude selected instance types] (選択したインスタンスタイプを除外する) を選択します。

    2. [Manually select instance types] (インスタンスタイプを手動で選択する) を選択すると、スポットフリートはインスタンスタイプのデフォルトのリストを提供します。さらにインスタンスタイプを選択するには、[Add instance types] (インスタンスタイプの追加) を選択し、リクエストで使用するインスタンスタイプを選択してから [Select] (選択) を選択します。インスタンスタイプを削除するには、インスタンスタイプを選択し、[Delete] (削除) を選択します。

  10. [Allocation strategy] (配分戦略) で、ニーズに合った戦略を選択します。詳細については、「スポットインスタンスの配分戦略」を参照してください。

  11. [Your fleet request at a glance] (フリートリクエストの概要) で、フリートの設定を確認し、必要な調整を行います。

  12. (オプション) AWS CLI で使用される起動設定のコピーをダウンロードするには、[JSON config] (JSON 設定) を選択します。

  13. [Launch] を選択します。

    スポットフリートリクエストタイプは fleet です。リクエストが実行されると、タイプ instance のリクエストが追加されます。このとき、状態は active になり、ステータスは fulfilled になります。

スポットフリートを作成するにはAWS CLI

AWS CLI を使用して、スポットフリートリクエストを作成するには
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

設定ファイルの例については、「スポットフリートの設定例」を参照してください。

出力例を次に示します。

{ "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }

スポットフリートにタグ付けします。

スポットフリートリクエストを分類および管理しやすくするため、カスタムメタデータでタグ付けできます。スポットフリートリクエストへのタグの割り当ては、リクエストの作成時または作成後に行うことができます。Amazon EC2 コンソールまたはコマンドラインツールを使用してタグを割り当てることができます。

フリートリクエストにタグを付けると、スポットフリートが起動するインスタンスとボリュームには自動的にタグ付けされません。スポットフリートが起動するインスタンスとボリュームには、明示的にタグを付ける必要があります。タグは、フリートリクエストのみに割り当てるか、スポットフリートが起動したインスタンスのみに割り当てるか、フリートが起動したインスタンスにアタッチされたボリュームのみに割り当てるか、または 3 つすべてに割り当てるかを選択できます。

注記

ボリュームタグは、オンデマンドインスタンス にアタッチされたボリュームでのみサポートされます。スポットインスタンス にアタッチされているボリュームにタグを付けることはできません。

タグの仕組みの詳細については、「Amazon EC2 リソースのタグ付け」を参照してください。

前提条件

リソースにタグ付けする許可をユーザーに付与します。詳細については、「例: リソースのタグ付け」を参照してください。

リソースにタグ付けする許可をユーザーに付与するには

以下を含む IAM ポリシーを作成します。

  • ec2:CreateTags アクション。これにより、タグを作成する許可がユーザーに付与されます。

  • ec2:RequestSpotFleet アクション。これにより、スポットフリートリクエストを作成する許可がユーザーに付与されます。

  • Resource で、"*" を指定する必要があります。これにより、ユーザーはすべてのリソースタイプにタグ付けできます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotFleetRequest", "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:RequestSpotFleet" ], "Resource": "*" } ] }
重要

現在、spot-fleet-request リソースに対するリソースレベルのアクセス許可はサポートされていません。リソースとして spot-fleet-request を指定した場合、フリートにタグ付けしようとすると、不正な例外が発生します。以下の例は、ポリシーを設定 しない 方法を示しています。

{ "Effect": "Allow", "Action": [ "ec2:CreateTags", "ec2:RequestSpotFleet" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/*" }

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

新しいスポットフリートにタグを付けます。

コンソールを使用して、新しいスポットフリートリクエストにタグ付けするには
  1. 「」の手順に従います。定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)

  2. タグを追加するには、[追加設定] を展開し、[新規タグの追加] を選択して、タグのキーと値を入力します。各タグについて、これを繰り返します。

    タグごとに、スポットフリートリクエストとインスタンスに同じタグを付けることができます。両方にタグ付けするには、[Instance tags (インスタンスタグ)] と [Fleet tags (フリートタグ)] の両方が選択されていることを確認します。スポットフリートリクエストのみにタグ付けするには、[インスタンスタグ] をクリアします。フリートによって起動されたインスタンスのみにタグ付けするには、[Fleet tags (フリートタグ)] をクリアします。

  3. 必須フィールドに入力してスポットフリートリクエストを作成し、[起動] を選択します。詳細については、「定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)」を参照してください。

AWS CLI を使用して、新しいスポットフリートリクエストにタグ付けするには

作成時にスポットフリートリクエストにタグ付けするには、スポットフリートリクエスト設定を以下のようにします。

  • スポットフリートリクエストのタグを SpotFleetRequestConfig で指定します。

  • ResourceType の場合、spot-fleet-request を指定します。別の値を指定すると、フリートリクエストは失敗します。

  • Tags で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

以下の例では、スポットフリートリクエストに 2 つのタグ (Key=Environment、Value=Production、および Key=Cost-Center、Value=123) が付けられています。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-0123456789EXAMPLE", "InstanceType": "c4.large" } ], "SpotPrice": "5", "TargetCapacity": 2, "TerminateInstancesWithExpiration": true, "Type": "maintain", "ReplaceUnhealthyInstances": true, "InstanceInterruptionBehavior": "terminate", "InstancePoolsToUseCount": 1, "TagSpecifications": [ { "ResourceType": "spot-fleet-request", "Tags": [ { "Key": "Environment", "Value":"Production" }, { "Key": "Cost-Center", "Value":"123" } ] } ] } }

新しいスポットフリート、およびそれが起動するインスタンスおよびボリュームにタグ付けします。

新しいスポットフリートリクエストと、 を使用して起動するインスタンスおよびボリュームにタグ付けするにはAWS CLI

作成時にスポットフリートリクエストにタグ付けし、フリートがインスタンスを起動するときにインスタンスおよびボリュームにタグ付けするには、スポットフリートリクエスト設定を次のようにします。

スポットフリートリクエストのタグ
  • スポットフリートリクエストのタグを SpotFleetRequestConfig で指定します。

  • ResourceType の場合、spot-fleet-request を指定します。別の値を指定すると、フリートリクエストは失敗します。

  • Tags で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

インスタンスタグ:
  • LaunchSpecifications で、インスタンスのタグを指定します。

  • ResourceType の場合、instance を指定します。別の値を指定すると、フリートリクエストは失敗します。

  • Tags で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

    または、スポットフリートリクエストで参照される起動テンプレートで、インスタンスのタグを指定できます。起動テンプレートの作成

ボリュームタグ:
  • スポットフリートリクエストで参照される起動テンプレートのボリュームのタグを指定します。起動テンプレートの作成LaunchSpecifications でのボリュームのタグ付けはサポートされていません。

以下の例では、スポットフリートリクエストに 2 つのタグ (Key=Environment、Value=Production、および Key=Cost-Center、Value=123) が付けられています。フリートが起動するインスタンスには、1 つのタグ (スポットフリートリクエストのタグの 1 つと同じ) Key=Cost-Center and Value=123 が付けられます。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-0123456789EXAMPLE", "InstanceType": "c4.large", "TagSpecifications": [ { "ResourceType": "instance", "Tags": [ { "Key": "Cost-Center", "Value": "123" } ] } ] } ], "SpotPrice": "5", "TargetCapacity": 2, "TerminateInstancesWithExpiration": true, "Type": "maintain", "ReplaceUnhealthyInstances": true, "InstanceInterruptionBehavior": "terminate", "InstancePoolsToUseCount": 1, "TagSpecifications": [ { "ResourceType": "spot-fleet-request", "Tags": [ { "Key": "Environment", "Value":"Production" }, { "Key": "Cost-Center", "Value":"123" } ] } ] } }
AWS CLI を使用して、スポットフリートが起動したインスタンスにタグ付けするには

フリートがインスタンスを起動するときにインスタンスにタグ付けするには、スポットフリートリクエストで参照される起動テンプレートでタグを指定するか、以下のようにスポットフリートリクエスト設定でタグを指定できます。起動テンプレートの作成

  • LaunchSpecifications で、インスタンスのタグを指定します。

  • ResourceType の場合、instance を指定します。別の値を指定すると、フリートリクエストは失敗します。

  • Tags で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

以下の例では、フリートによって起動されるインスタンスに 1 つのタグ (Key=Cost-Center and Value=123) が付けられています。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-0123456789EXAMPLE", "InstanceType": "c4.large", "TagSpecifications": [ { "ResourceType": "instance", "Tags": [ { "Key": "Cost-Center", "Value": "123" } ] } ] } ], "SpotPrice": "5", "TargetCapacity": 2, "TerminateInstancesWithExpiration": true, "Type": "maintain", "ReplaceUnhealthyInstances": true, "InstanceInterruptionBehavior": "terminate", "InstancePoolsToUseCount": 1 } }
AWS CLI を使用して、スポットフリートが起動するオンデマンドインスタンスにアタッチされたボリュームにタグ付けするには

フリートが作成したときにボリュームにタグ付けするには、スポットフリートリクエストで参照される起動テンプレートでタグを指定する必要があります。起動テンプレートの作成

注記

ボリュームタグは、オンデマンドインスタンス にアタッチされたボリュームでのみサポートされます。スポットインスタンス にアタッチされているボリュームにタグを付けることはできません。

LaunchSpecifications でのボリュームのタグ付けはサポートされていません。

既存のスポットフリートにタグを付けます。

コンソールを使用して、既存のスポットフリートリクエストにタグ付けするには

スポットフリートリクエストを作成した後、コンソールを使用してフリートリクエストにタグを追加できます。

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットフリートリクエストを選択します。

  4. [Tags (タグ)] タブを選択してから、[タグの作成] を選択します。

AWS CLI を使用して、既存のスポットフリートリクエストにタグ付けするには

create-tags コマンドを使用して、既存のリソースにタグ付けできます。https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html以下の例では、既存のスポットフリートリクエストにタグ Key=purpose and Value=test が付けられています。

aws ec2 create-tags \ --resources sfr-11112222-3333-4444-5555-66666EXAMPLE \ --tags Key=purpose,Value=test

スポットフリートリクエストタグを表示する

コンソールを使用して、スポットフリートリクエストタグを表示するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットフリートリクエストを選択し、[タグ] タブを選択します。

スポットフリートリクエストタグを記述するには

describe-tags コマンドを使用して、指定したリソースのタグを表示します。https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html以下の例では、指定したスポットフリートリクエストのタグを記述します。

aws ec2 describe-tags \ --filters "Name=resource-id,Values=sfr-11112222-3333-4444-5555-66666EXAMPLE"
{ "Tags": [ { "Key": "Environment", "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-fleet-request", "Value": "Production" }, { "Key": "Another key", "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-fleet-request", "Value": "Another value" } ] }

スポットフリートリクエストを記述することで、スポットフリートリクエストのタグを表示することもできます。

describe-spot-fleet-requests コマンドを使用して、指定したスポットフリートリクエストの設定を表示します。これには、フリートリクエストに指定されたタグが含まれます。https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html

aws ec2 describe-spot-fleet-requests \ --spot-fleet-request-ids sfr-11112222-3333-4444-5555-66666EXAMPLE
{ "SpotFleetRequestConfigs": [ { "ActivityStatus": "fulfilled", "CreateTime": "2020-02-13T02:49:19.709Z", "SpotFleetRequestConfig": { "AllocationStrategy": "capacityOptimized", "OnDemandAllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "Default", "FulfilledCapacity": 2.0, "OnDemandFulfilledCapacity": 0.0, "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-0123456789EXAMPLE", "InstanceType": "c4.large" } ], "TargetCapacity": 2, "OnDemandTargetCapacity": 0, "Type": "maintain", "ReplaceUnhealthyInstances": false, "InstanceInterruptionBehavior": "terminate" }, "SpotFleetRequestId": "sfr-11112222-3333-4444-5555-66666EXAMPLE", "SpotFleetRequestState": "active", "Tags": [ { "Key": "Environment", "Value": "Production" }, { "Key": "Another key", "Value": "Another value" } ] } ] }

スポットフリートを記述する

上限料金がスポット料金を超え、容量が利用可能な場合、スポットフリートはスポットインスタンスを起動します。スポットインスタンスは、中断されるか終了されるまで実行されます。

スポットフリートを記述するには (コンソール)
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットフリートリクエストを選択します。設定の詳細を表示するには、[Description] を選択します。

  4. スポットフリートのスポットインスタンスを一覧表示するには、インスタンスを選択します。

  5. スポットフリートの履歴を表示するには、[履歴] を選択します。

スポットフリートを記述するには (AWS CLI)

スポットフリートリクエストの詳細を表示するには、describe-spot-fleet-requests コマンドを使用します。https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html

aws ec2 describe-spot-fleet-requests

指定したスポットフリートのスポットインスタンスの詳細を表示するには、describe-spot-fleet-instances コマンドを使用します。https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-instances.html

aws ec2 describe-spot-fleet-instances \ --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE

指定したスポットフリートリクエストの履歴を表示するには、describe-spot-fleet-request-history コマンドを使用します。https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-request-history.html

aws ec2 describe-spot-fleet-request-history \ --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --start-time 2015-05-18T00:00:00Z

スポットフリートリクエストを変更します。

以下のタスクを完了するように、アクティブスポットフリートリクエストを変更できます。

  • ターゲット容量とオンデマンド部分を増やす

  • ターゲット容量とオンデマンド部分を減らす

注記

ワンタイムスポットフリートリクエストは変更できません。スポットフリートリクエストの作成時に [ターゲット容量の維持] を選択した場合にのみ、スポットフリートリクエストを変更することができます。

ターゲット容量を増やすと、スポットフリートは追加のスポットインスタンスを起動します。オンデマンド部分を増やすと、スポットフリートは追加のオンデマンドインスタンスを起動します。

ターゲット容量を増やすと、スポットフリートは、スポットフリートリクエストの配分戦略に従って、追加のスポットインスタンスを起動します。配分戦略が lowestPrice の場合、スポットフリートは、スポットフリートリクエストの最低価格のスポットキャパシティープールからインスタンスを起動します。配分戦略が diversified の場合、スポットフリートは、スポットフリートリクエストのプール全体にインスタンスを分散します。

ターゲット容量を減らすと、スポットフリートは新しいターゲット容量を超えるすべてのオープンリクエストをキャンセルします。フリートのサイズが新しいターゲット容量に達するまで、スポットフリートがスポットインスタンスを終了させるようにリクエストできます。配分戦略が lowestPrice の場合、スポットフリートは最高単価のインスタンスを終了させます。配分戦略が diversified の場合、スポットフリートはプール全体でインスタンスを終了させます。または、スポットフリートが現在のサイズを維持するようにリクエストすることもできますが、中断されたり手動で終了されたスポットインスタンスを置き換えることはできません。

ターゲット容量が減ったためにスポットフリートがインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。

スポットフリートリクエストを変更するには (コンソール)
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットフリートリクエストを選択します。

  4. [Actions]、[Modify target capacity] の順に選択します。

  5. [Modify target capacity] で、以下の操作を実行します。

    1. 新しいターゲット容量とオンデマンド部分を入力します。

    2. (オプション) ターゲット容量を小さくしてもスポット群の現在のサイズを保持する場合は、[Terminate instances] をオフにします。

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

AWS CLI を使用して、スポットフリートリクエストを変更するには

modify-spot-fleet-requestコマンドを使用して、指定するスポットフリートリクエストのターゲット容量を更新します。https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-spot-fleet-request.html

aws ec2 modify-spot-fleet-request \ --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity 20

前のコマンドを以下のように変更して、結果的にいずれのスポットインスタンスも終了せずに、指定したスポットフリートのターゲット容量を減らすことができます。

aws ec2 modify-spot-fleet-request \ --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity 10 \ --excess-capacity-termination-policy NoTermination

スポットフリートリクエストをキャンセルします。

スポットフリートが不要になった場合は、スポットフリートリクエストをキャンセルできます。フリートリクエストをキャンセルすると、フリートに関連付けられているすべてのスポットリクエストがキャンセルされるため、新しいスポットインスタンスは起動されません。

スポットフリートをキャンセルするときは、そのインスタンスをすべて終了させるかどうかも指定する必要があります。これには、オンデマンドインスタンスとスポットインスタンスの両方が含まれます。

フリートリクエストをキャンセルするときにインスタンスを終了する必要があることを指定した場合、フリートリクエストは cancelled_terminating 状態へ移行します。それ以外の場合、フリートリクエストは cancelled_running 状態になり、インスタンスは中断または手動終了されるまで、引き続き実行されます。

制限事項
  • 1 回のリクエストで最大 100 個のフリートを削除できます。指定した数を超えると、フリートは削除されません。

スポットフリートリクエストをキャンセルするには (コンソール)
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットフリートリクエストを選択します。

  4. [アクション]、[リクエストのキャンセル] の順にクリックします。

  5. [スポットリクエストのキャンセル] ダイアログボックスで、次の操作を行います。

    1. スポットフリートリクエストのキャンセルと同時に関連インスタンスを終了するには、[インスタンスの終了] チェックボックスをオンのままにします。関連インスタンスを終了せずにスポットフリートリクエストをキャンセルするには、[インスタンスの終了] チェックボックスを選択解除します。

    2. [確認] を選択します。

AWS CLI を使用して、スポットフリートリクエストをキャンセルし、そのインスタンスをキャンセルするには

cancel-spot-fleet-requests コマンドを使用し、指定したスポットフリートリクエストをキャンセルし、オンデマンドインスタンスとスポットインスタンスを終了します。

aws ec2 cancel-spot-fleet-requests \ --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --terminate-instances

出力例

{ "SuccessfulFleetRequests": [ { "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "CurrentSpotFleetRequestState": "cancelled_terminating", "PreviousSpotFleetRequestState": "active" } ], "UnsuccessfulFleetRequests": [] }
AWS CLI を使用して、そのインスタンスを終了せずにスポットフリートリクエストをキャンセルするには

--no-terminate-instances パラメータを使用して前のコマンドを変更することで、オンデマンドインスタンスとスポットインスタンスを終了せずに、指定されたスポットフリートをキャンセルできます。

aws ec2 cancel-spot-fleet-requests \ --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --no-terminate-instances

出力例

{ "SuccessfulFleetRequests": [ { "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "CurrentSpotFleetRequestState": "cancelled_running", "PreviousSpotFleetRequestState": "active" } ], "UnsuccessfulFleetRequests": [] }