スポットフリートの操作
スポットフリートを使用するには、ターゲット容量、オプションでオンデマンド部分、インスタンスの 1 つ以上の起動仕様、希望上限価格を含めたスポットフリートリクエストを作成します。フリートリクエストには、フリートがインスタンスの起動に必要とする情報 (AMI、インスタンスタイプ、サブネットまたはアベイラビリティーゾーン、そして 1 つ以上のセキュリティグループ) を定義する起動仕様を含める必要があります。
フリートに スポットインスタンス が含まれている場合、Amazon EC2 はスポット料金の変更に応じてフリートのターゲット容量を維持しようと試みることができます。
送信後にワンタイムリクエストのターゲット容量を変更することはできません。ターゲット容量を変更するには、リクエストを変更し、新しいリクエストを送信します。
スポットフリートリクエストは、期限切れになるかキャンセルされるまで、アクティブな状態を維持します。フリートリクエストをキャンセルするとき、フリートのスポットインスタンスをキャンセルするか、終了するか、どちらかを指定できます。
目次
スポットフリートリクエストの状態
スポットフリートリクエストは、次の状態のいずれかになります。
-
- スポットフリートリクエストは評価中です。Amazon EC2 はターゲット数のインスタンスの起動を準備中です。
submitted
-
- スポットフリートは検証済みです。Amazon EC2 はターゲット数の実行中のスポットインスタンスを維持しようとしています。
active
リクエストは、変更またはキャンセルされるまで、この状態のままになります。 -
- スポットフリートリクエストは変更中です。
modifying
リクエストは、変更が完全に処理されるか、スポットフリートがキャンセルされるまで、この状態を維持します。ワンタイム を変更することはできません。この状態は、そのようなスポットリクエストには適用されません。request
-
— スポットフリートはキャンセルされ、追加のスポットインスタンスを起動しません。
cancelled_running
その既存の スポットインスタンス は、中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。 -
— スポットフリートはキャンセルされ、スポットインスタンスは終了します。
cancelled_terminating
リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。 -
— スポットフリートはキャンセルされ、実行中のスポットインスタンスはありません。
cancelled
スポットリクエストは、インスタンスが終了して 2 日後に削除されます。
次の図は、 リクエストの状態の遷移を示しています。スポットフリートの制限を超えた場合、リクエストはすぐにキャンセルされます。

スポットフリートのヘルスチェック
スポットフリートは、2 分ごとにフリートのスポットインスタンスのヘルスステータスをチェックします。インスタンスのヘルスステータスは healthy
または unhealthy
です。
スポットフリートは、Amazon EC2 が提供するステータスチェックを使用して、インスタンスのヘルスステータスを判断します。インスタンスステータスとシステムステータスのいずれかのチェック結果において、ステータスが 3 回連続して impaired
を示した場合、そのインスタンスは unhealthy
と判断されます。詳細については、「インスタンスのステータスチェック」を参照してください。
フリートを設定して、異常のある スポットインスタンス を置き換えることができます。ヘルスチェックによる置き換えを有効化すると、 と報告されたスポットインスタンスが置き換えられます。unhealthy
異常なスポットインスタンスの置き換え中、最大数分間フリートがターゲット容量を下回る場合があります。
要件
-
ヘルスチェックによる置き換えは、1 回限りの スポットフリート (
maintain
のフリート) ではなく、ターゲットキャパシティを維持しているスポットフリート (タイプrequest
のフリート) でのみサポートされます。 -
ヘルスチェックによる置き換えは、スポットインスタンス でのみサポートされます。この機能は オンデマンドインスタンス ではサポートされていません。
-
作成時のみ、異常なインスタンスを置き換えるようスポットフリートを設定できます。
-
IAM ユーザーは、
ec2:DescribeInstanceStatus
アクションを呼び出すアクセス許可を持っている場合のみ、ヘルスチェックの置換を使用できます。
スポットフリートアクセス許可
IAM ユーザーがスポットフリートを作成または管理する場合、必要なアクセス許可を付与する必要があります。
Amazon EC2 コンソールを使用してスポットフリートを作成した場合、 および というサービスにリンクされた 2 つのロールと、 というロールが作成されます。ユーザーの代わりに、リソースのリクエスト、起動、終了、タグ付けを行うアクセス許可をスポットフリートに与えます。AWSServiceRoleForEC2SpotFleet
AWSServiceRoleForEC2Spot
aws-ec2-spot-fleet-tagging-role
または API を使用する場合は、これらのロールが存在することを確認する必要があります。AWS CLI
次の手順に従って、必要なアクセス許可を付与し、ロールを作成します。
アクセス許可とロール
IAM ユーザーにスポットフリートのアクセス許可を付与します。
IAM ユーザーがスポットフリートを作成または管理する場合、次のように、必要なアクセス許可を必ず付与してください。
IAM ユーザーにスポットフリートのアクセス許可を付与するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[Policies]、[Create policy] の順に選択します。
-
[ポリシーの作成] ページで、 [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": "*" } ] }
前述したポリシーの例では、ほとんどのスポットフリートのユースケースで必要なアクセス許可を IAM ユーザーに付与します。特定の API アクションに制限するには、代わりにこれらの API アクションのみを指定します。
必要な EC2 および IAM の API
ポリシーには、次の API を含める必要があります。
-
— スポットフリートでインスタンスを起動するために必要
ec2:RunInstances
-
— スポットフリートのリクエスト、インスタンス、またはボリュームのタグ付けに必要
ec2:CreateTags
-
— スポットフリートロールを指定するために必要
iam:PassRole
-
- サービスにリンクされたロールの作成に必要
iam:CreateServiceLinkedRole
-
- 既存の IAM ロールを列挙するために必要
iam:ListRoles
-
- 既存のインスタンスプロファイルを列挙するために必要
iam:ListInstanceProfiles
重要 起動仕様または起動テンプレートで IAM インスタンスプロファイルのロールを指定する場合は、そのロールをサービスに渡すアクセス許可を IAM ユーザーに付与する必要があります。これを行うには、IAM ポリシーで アクションのリソースとして を含めます。
"arn:aws:iam::*:role/
IamInstanceProfile-role
"iam:PassRole
詳細については、IAM ユーザーガイドの「 サービスにロールを渡すアクセス権限をユーザーに付与する」を参照してください。AWSスポットフリートの API
必要に応じて、次のスポットフリート API アクションをポリシーに追加します。
-
ec2:RequestSpotFleet
-
ec2:ModifySpotFleetRequest
-
ec2:CancelSpotFleetRequests
-
ec2:DescribeSpotFleetRequests
-
ec2:DescribeSpotFleetInstances
-
ec2:DescribeSpotFleetRequestHistory
オプションの IAM API
(オプション) IAM ユーザーが IAM コンソールを使用してロールまたはインスタンスプロファイルを作成できるようにするには、次のアクションをポリシーに追加する必要があります。
-
iam:AddRoleToInstanceProfile
-
iam:AttachRolePolicy
-
iam:CreateInstanceProfile
-
iam:CreateRole
-
iam:GetRole
-
iam:ListPolicies
-
-
[ポリシーの確認] を選択します。
-
[ポリシーの確認] ページでポリシー名と説明を入力し、[ポリシーの作成] を選択します。
-
ナビゲーションペインで [Users] を選択し、ユーザーを選択します。
-
[Permissions]、[Add permissions] の順に選択します。
-
[Attach existing policies directly] を選択します。以前に作成したポリシーを選択し、[Next: Review] (次へ: レビュー) を選択します。
-
[Add permissions] を選択します。
スポットフリート用のサービスにリンクされたロール
Amazon EC2 は、ユーザーに代わって の他のサービスを呼び出すために必要なアクセス許可のために、サービスにリンクされたロールを使用します。AWSサービスにリンクされたロールは、AWS のサービスに直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、AWS のサービスにアクセス許可を委任するためのセキュアな方法を提供します。これは、リンクされたサービスのみが、サービスにリンクされたロールを引き受けることができるためです。詳細については、IAM ユーザーガイドの「サービスにリンクされたロールの使用」を参照してください。https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html
Amazon EC2 は、AWSServiceRoleForEC2SpotFleet という、サービスにリンクされたロールを使用して、ユーザーの代わりにインスタンスを起動して管理します。
暗号化された AMI または暗号化された Amazon EBS スナップショットをスポットフリートで指定した場合は、CMK を使用するアクセス許可を AWSServiceRoleForEC2SpotFleet ロールに付与し、Amazon EC2 がユーザーの代わりにインスタンスを起動できるようにする必要があります。EBS-backed AMI での暗号化の利用Amazon EBS 暗号化詳細については、「暗号化された AMI および EBS スナップショット用の CMK へのアクセス権の付与」を参照してください。
AWSServiceRoleForEC2SpotFleet によって付与されるアクセス許可
Amazon EC2 は、[AWSServiceRoleForEC2SpotFleet] という、サービスにリンクされたロールを使用して、次のアクションを実行します。
-
- スポットインスタンス のリクエスト
ec2:RequestSpotInstances
-
- インスタンスの起動
ec2:RunInstances
-
- インスタンスの終了
ec2:TerminateInstances
-
- インスタンスの Amazon マシンイメージ (AMI) の表示
ec2:DescribeImages
-
- インスタンスのステータスの表示
ec2:DescribeInstanceStatus
-
- インスタンスのサブネットを記述します
ec2:DescribeSubnets
-
- スポットフリートリクエスト、インスタンス、ボリュームにタグを追加
ec2:CreateTags
-
- 指定されたインスタンスを指定されたロードバランサーに追加
elasticloadbalancing:RegisterInstancesWithLoadBalancer
-
- 指定されたターゲットを指定されたターゲットグループに登録
elasticloadbalancing:RegisterTargets
サービスにリンクされたロールの作成
ほとんどの状況では、サービスにリンクされたロールを手動で作成する必要はありません。Amazon EC2 は、コンソールを使用してスポットフリートを初めて作成するときに、AWSServiceRoleForEC2SpotFleet サービスにリンクされたロールを作成します。
Amazon EC2 がこのサービスにリンクされたロールのサポートを開始した 2017 年 10 月よりも前にアクティブなスポットフリートリクエストを行った場合は、Amazon EC2は アカウントで AWSServiceRoleForEC2SpotFleet ロールを作成します。AWS 詳細については、IAM ユーザーガイドの「 アカウントに新しいロールが表示される」を参照してください。AWS
または API を使用してスポットフリートを作成する場合、最初にこのロールが存在しているか確認する必要があります。AWS CLI
コンソールを使用して AWSServiceRoleForEC2SpotFleet を作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles (ロール) ] を選択します。
-
[ロールの作成] を選択します。
-
[Select type of trusted entity (信頼されたエンティティのタイプの選択)] で、[AWS のサービス] を選択します。
-
[ユースケースの選択]、または [サービスを選択してそのユースケースを表示する] で、[EC2] を選択します。
-
[ユースケースを選択する] で [EC2 - スポットフリート] を選択します。
-
[Next: Permissions (次へ: アクセス許可)] を選択します。
-
次のページで、[次へ: タグ] を選択します。
-
次のページで、[次へ: 確認] を選択します。
-
[確認] ページで、[ロールの作成] を選択します。
を使用して AWSServiceRoleForEC2SpotFleet を作成するにはAWS CLI
次のように、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 ユーザーガイドの「サービスにリンクされたロールの削除」を参照してください。https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role
暗号化された AMI および EBS スナップショット用の CMK へのアクセス権の付与
暗号化された AMI または暗号化された Amazon EBS スナップショットをスポットフリートで指定し、カスタマーマネージド型キー (CMK) を暗号化に使用する場合は、CMK を使用するアクセス許可を AWSServiceRoleForEC2Fleet ロールに付与して、Amazon EC2 がユーザーの代わりにインスタンスを起動できるようにする必要があります。EBS-backed AMI での暗号化の利用Amazon EBS 暗号化これを行うには、次の手順で示すように、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 ロール
IAM ロールは、スポットフリートリクエスト、インスタンス、ボリュームにタグ付けするアクセス権限をスポットフリートに付与します。aws-ec2-spot-fleet-tagging-role
詳細については、「スポットフリートにタグ付けします。」を参照してください。
フリートのインスタンスにタグ付けすることを選択し、ターゲット容量を維持することを選択した場合 (スポットフリートリクエストのタイプは maintain
)、IAM ユーザーと IamFleetRole
のアクセス許可の違いにより、フリートのインスタンスのタグ付け動作に整合性がなくなる可能性があります。 に アクセス許可が含まれていない場合、フリートによって起動されたインスタンスの一部がタグ付けされていない可能性があります。IamFleetRole
CreateTags
当社はこの不整合の修正に取り組んでいますが、フリートによって起動されたすべてのインスタンスがタグ付けされるようにするために、IamFleetRole
にはaws-ec2-spot-fleet-tagging-role
ロールを使用することをお勧めします。または、既存のロールを使用するには、 管理ポリシーを既存のロールにアタッチします。AmazonEC2SpotFleetTaggingRole
AWSそれ以外の場合は、既存のポリシーに アクセス許可を手動で追加する必要があります。CreateTags
スポットフリートにタグ付けする IAM ロールを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles (ロール) ] を選択します。
-
[ロールの作成] を選択します。
-
[Select trusted entity] (信頼できるエンティティの選択) ページの [Trusted entity type] (信頼できるエンティティタイプ) で、[AWS service] ( のサービス) を選択します。
-
[Use case] (ユースケース) で、[Use cases for other AWS services] (他の サービスでのユースケース) から [EC2] を選択し、[EC2 - Spot Fleet Tagging] (EC2 - スポットフリートのタグ付け) を選択します。
-
[Next] (次へ) をクリックします。
-
[Add permissions] (アクセス許可を追加する) ページで Next (次へ) を選択します。
-
[Name, review, and create] (名前、レビュー、および作成) ページで、[Role name] (ロール名) にロールの名前 (例えば、
aws-ec2-spot-fleet-tagging-role
) を入力します。 -
ページ内の情報を確認し、[Create role] (ロールを作成) をクリックします。
サービス間の混乱した代理の防止
「混乱した代理」問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。aws-ec2-spot-fleet-tagging-role
信頼ポリシー内のグローバル条件コンテキストキー aws:SourceArn
と aws:SourceAccount
を使用して、リソースについてスポットフリートが別のサービスに付与するアクセス許可を、制限することをお勧めします。
aws:SourceArn および aws:SourceAccount 条件キーを aws-ec2-spot-fleet-tagging-role
信頼ポリシーに追加するには
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles (ロール) ] を選択します。
-
前に作成してある
aws-ec2-spot-fleet-tagging-role
を見つけ、リンク (チェックボックスではありません) をクリックします。 -
[Summary] (概要) にある [Trust relationships] (信頼関係) タブを開き、[Edit trust policy] (信頼ポリシーの編集) をクリックします。
-
「混乱した代理」問題を防止するために、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
" } } } } -
[ポリシーの更新] を選択します。
次の表に、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:*: |
RequestSpotFleet | AWS STS (AssumeRole ) |
aws-ec2-spot-fleet-tagging-role が持つ AssumeRole の機能を、指定されたアカウントおよび指定されたリージョンの spot-fleet-requests に制限します。このロールは他のリージョンでは使用できないことに注意してください。 |
arn:aws:ec2: |
RequestSpotFleet | AWS STS (AssumeRole ) |
aws-ec2-spot-fleet-tagging-role が持つ AssumeRole の機能を、フリート sfr-11111111-1111-1111-1111-111111111111 に影響を与えるアクションのみに制限します。このロールは、他のスポットフリートでは使用できない場合があることに注意してください。また、このロールを使用して request-spot-fleet により新しいスポットフリートを起動することはできません。 |
arn:aws:ec2: |
スポットフリートリクエストを作成します。
を使用して、アプリケーションまたはタスクのニーズと最低限のコンピューティング仕様のみを選択して、スポットフリートを迅速に作成します。AWS Management ConsoleAmazon EC2 は、ユーザーのニーズに最適なフリートを設定し、スポットベストプラクティスに従います。詳細については、「スポットフリートリクエストを迅速に作成します (コンソール)」を参照してください。それ以外の場合は、デフォルト設定のいれかを変更できます。詳細については、定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール) および スポットフリートを作成するにはAWS CLI を参照してください。
スポットフリートを作成するためのオプション
スポットフリートリクエストを迅速に作成します (コンソール)
以下の手順に従って、スポットフリートリクエストを迅速に作成します。
推奨設定を使用してスポットフリートリクエストを作成するには (コンソール)
-
スポットコンソール (https://console.aws.amazon.com/ec2spot
) を開きます。 -
スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [Get started] を選択します。それ以外の場合は、[Request Spot Instances] (スポットインスタンスのリクエスト) を選択します。
-
[Launch parameters] (起動パラメータ) で、[Manually configure launch parameters] (起動パラメータを手動で構成する) を選択します。
-
AMI で、AMI を選択します。
-
[Target capacity] (ターゲット容量) の下の [Total target capacity] (総ターゲット容量) で、リクエストする単位数を指定します。ユニットのタイプには、[Instances] (ユニット)、[vCPU]、または [Memory (MiB)] (メモリ (MiB)) を選択できます。
-
[Your fleet request at a glance] (フリートリクエストの概要) で、フリートの設定を確認し、[Launch] (起動) を選択します。
定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)
定義済みパラメータを使用して、スポットフリートを作成できます。
定義済みパラメータを使用してスポットフリートリクエストを作成するには (コンソール)
-
スポットコンソール (https://console.aws.amazon.com/ec2spot
) を開きます。 -
スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [Get started] を選択します。それ以外の場合は、[Request Spot Instances] (スポットインスタンスのリクエスト) を選択します。
-
[Launch parameters] (起動パラメータ) では、以下の操作を行います。
-
スポットコンソールで起動パラメータを定義するには、[Manually configure launch parameters] (起動パラメータを手動で構成する) を選択します。
-
[AMI] で、AWS が提供する基本 AMI のいずれかを選択します。あるいは、[Search for AMI] (AMI を検索) をクリックして、ユーザーコミュニティの AMI、AWS Marketplace、または独自の AMI を選択することも可能です。
-
(オプション) [Key pair name] (キーペア名) で、既存のキーペアを使用するか、新しいキーペアを作成するかを選択します。
[既存のキーペア] キーペアを選択します。
[新しいキーペア] [Create new key pair] (新しいキーペアの作成) を選択して [Key Pairs] (キーペア) ページに進みます。完了したら、[Spot Requests] (スポットリクエスト) ページに戻ってリストを更新します。
-
(オプション) [Additional launch parameters] (追加の起動パラメータ) を展開し、次の操作を実行します。
-
(オプション) Amazon EBS 最適化を有効にするには、[EBS-optimized] (EBS に最適化された) で [Launch EBS-optimized instances] (EBS に最適化されたインスタンスの起動) を選択します。
-
(オプション) インスタンス用の一時ブロックレベルストレージを追加するには、[Instance store] (インスタンスストア) で [Attach at launch] (起動時にアタッチ) を選択します。
-
(オプション) ストレージを追加するには、[Add new volume] (新しいボリュームの追加) を選択し、インスタンスタイプに応じて追加のインスタンスストアボリュームまたは Amazon EBS ボリュームを指定します。
-
(オプション) デフォルトでは、インスタンスに対して基本モニタリングが有効になります。詳細モニタリングを有効にするには、[Monitoring] (モニタリング) で [Enable CloudWatch detailed monitoring] (CloudWatch 詳細モニタリングの有効化) を選択します。
-
(オプション) 専有スポットインスタンスを実行するには、[Tenancy] (テナンシー) で [Dedicated - run a dedicated instance] (専有 - 専有インスタンスの実行) を選択します。
-
(オプション) [Security groups] で、1 つ以上のセキュリティグループを選択するか、新しいセキュリティグループを作成します。
[既存のセキュリティグループ] 1 つ以上のセキュリティグループを選択します。
[新しいセキュリティグループ] [Create new security group] (新しいセキュリティグループの作成) を選択し、[Security Groups] (セキュリティグループ) ページに移動します。完了したら、[Spot Requests] (スポットリクエスト) に戻ってリストを更新します。
-
(オプション) インスタンスにインターネットからアクセスできるようにするには、[Auto-assign IPv4 Public IP] (IPv4 パブリック IP の自動割り当て) で [Enable] (有効化) を選択します。
-
(オプション) IAM ロールを指定して スポットインスタンス を起動するには、[IAM instance profile] でロールを選択します。
-
(オプション) 起動スクリプトを実行するには、スクリプトを [User data] (ユーザーデータ) にコピーします。
-
(オプション) タグを追加するには、[Create tag] (タグの作成) を選択し、タグのキーと値を入力してから [Create] (作成) を選択します。各タグについて、これを繰り返します。
タグごとに、インスタンスとスポットフリートリクエストに同じタグを付けるには、[Instances] (インスタンス) と [Fleet] (フリート) の両方が選択されていることを確認します。フリートによって起動されたインスタンスのみにタグ付けするには、[Fleet] (フリート) をクリアします。スポットフリートリクエストのみにタグ付けするには、[Istances] (インスタンス) をクリアします。
-
-
-
[Additional request details] (追加のリクエスト詳細) で、以下を実行します。
-
追加リクエストの詳細を確認します。変更するには、[Apply defaults] をオフにします。
-
(オプション) [IAM fleet role] で、デフォルトのロールを使用するか、または別のロールを選択できます。ロールの変更後にデフォルトのロールを使用するには、[Use default role] を選択します。
-
(オプション) [Maximum price] では、デフォルトの上限料金 (オンデマンド料金) を使用するか、支払う予定の上限料金を指定することができます。上限価格が選択したインスタンスタイプのスポット料金より低い場合、スポットインスタンス は起動されません。
-
(オプション) 特定の期間中のみ有効なリクエストを作成するには、[Request valid from] (リクエスト有効期間開始日) および [Request valid until] (リクエスト有効期間終了日) を編集します。
-
(オプション) デフォルトでは、リクエストの有効期限が切れるとスポットインスタンスは終了します。リクエストの有効期限が切れた後も実行し続ける場合、[Terminate the instances when the request expires] (リクエストの期限後にインスタンスを終了) をオフにします。
-
(オプション) ロードバランサーを使用する スポットインスタンスを登録するには、[Receive traffic from one or more load balancers] (1 つ以上のロードバランサーからトラフィックを受信) を選択して、1 つ以上のクラシックロードバランサーまたはターゲットグループを選択します。
-
-
[Minimum compute unit] (最小コンピューティングユニット) で、アプリケーションまたはタスクで必要な最低限のハードウェア仕様 (vCPU、メモリ、ストレージ) を選択して、[as specs] (仕様として) または [as an instance type] (インスタンスタイプとして) を指定します。
-
[as specs] (仕様として) については、必要な vCPU 数とメモリ量を指定します。
-
[as an instance type] (インスタンスタイプとして) では、デフォルトのインスタンスタイプをそのまま使用するか、[Change instance type] (インスタンスインスタンスタイプを変更) を選択して別のインスタンスタイプを選択します。
-
-
[Target capacity] (ターゲット容量) で、以下の操作を実行します。
-
[Total target capacity] (総ターゲット容量) で、ターゲット容量にリクエストする単位数を指定します。ユニットのタイプには、[Instances] (ユニット)、[vCPU]、または [Memory (MiB)] (メモリ (MiB)) を選択できます。ターゲット容量を 0 に指定して後で容量を追加できるようにするには、[Maintain target capacity] を選択します。
-
(オプション) [Include On-Demand base capacity] (オンデマンドベースの容量を含める) で、リクエストするオンデマンド単位数を指定します。数値は [Total target capacity] (ターゲットキャパシティの合計) 未満にする必要があります。Amazon EC2 は差分を計算し、この差をリクエストするスポット単位に割り当てます。
重要 オプションのオンデマンド容量を指定する場合、最初に起動テンプレートを選択する必要があります。
-
(オプション) デフォルトでは、スポットサービスは中断されるとスポットインスタンスを削除します。ターゲット容量を維持するには、[ターゲット容量を維持する] を選択します。これで、中断時に スポットインスタンス を終了、停止、または休止するように指定できます。これを行うには、[Interruption behavior] (中断動作) から対応するオプションを選択します。
-
(オプション) フリートの既存スポットインスタンスにインスタンスの再調整の通知が発行されたときに、スポットフリートが代替スポットインスタンスを起動できるようにするには、[Capacity rebalance] (容量の再調整) を選択し、インスタンス置換戦略を選択します。[Launch before terminate] (終了前に起動する) を選択した場合、スポットフリートが古いインスタンスを終了させるまでの遅延時間 (秒単位) を指定します。詳細については、「キャパシティーの再調整」を参照してください。
-
(オプション) フリートのすべての スポットインスタンスに対して 1 時間あたりに支払う金額を制御するには、[Set maximum cost for Spot Instances] (スポットインスタンスの上限価格を設定する) を選択し、1 時間あたりに支払うことができる上限の合計金額を入力します。上限の合計金額に達すると、ターゲット容量に満たない場合でも、スポットフリートはスポットインスタンスの起動を停止します。詳細については、「使用量の管理」を参照してください。
-
-
[Network] (ネットワーク) で、以下の操作を実行します。
-
[Network] (ネットワーク) で既存の VPC を選択するか、新しい VPC を作成します。
[既存の VPC] VPC を選択します。
[新しい VPC] [新しい VPC の作成] を選択して Amazon VPC コンソールにアクセスします。完了したら、ウィザードに戻ってリストを更新します。
-
(オプション) [アベイラビリティーゾーン] では、 でスポットインスタンス のアベイラビリティーゾーンを選択するか、1 つ以上のアベイラビリティーゾーンを指定します。AWS
アベイラビリティーゾーンに複数のサブネットがある場合、[Subnet] から適切なサブネットを選択します。サブネットを追加するには、[Create new subnet] を選択して Amazon VPC にアクセスします。完了したら、ウィザードに戻ってリストを更新します。
-
-
[Instance type requirements] (インスタンスタイプの要件) では、インスタンス属性を指定して、Amazon EC2 にこれらの属性を持つ最適なインスタンスタイプを識別させるか、またはインスタンスのリストを指定することができます。詳細については、「スポットフリートの属性ベースのインスタンスタイプの選択」を参照してください。
-
[Specify instance attributes that match your compute requirements] (コンピューティング要件に一致するインスタンス属性を指定する) を選択した場合、インスタンス属性を次のように指定します。
-
[vCPUs] に、希望する vCPU の最小数と最大数を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。
-
[Memory (GiB)] (メモリ (GiB)) に、希望するメモリの最小値と最大値を入力します。制限なしを指定するには、[No minimum] (最小値なし)、[No maximum] (最大値なし)、または両方を選択します。
-
(オプション) [Additional instance attributes] (その他のインスタンス属性) では、オプションで 1 つ以上の属性を指定して、コンピューティング要件をより詳細に表現できます。追加の属性は、リクエストにさらに制約を追加します。追加の属性は省略できます。省略すると、デフォルト値が使用されます。各属性およびそのデフォルト値の説明については、「Amazon EC2 コマンドラインリファレンス」の「get-spot-placement-scores」を参照してください。
-
(オプション) 指定した属性を持つインスタンスタイプを表示するには、[Preview matching instance types] (一致するインスタンスタイプをプレビューする) を展開します。インスタンスタイプがリクエストで使用されないようにするには、インスタンスを選択し、[Exclude selected instance types] (選択したインスタンスタイプを除外する) を選択します。
-
-
[Manually select instance types] (インスタンスタイプを手動で選択する) を選択すると、スポットフリートはインスタンスタイプのデフォルトのリストを提供します。さらにインスタンスタイプを選択するには、[Add instance types] (インスタンスタイプの追加) を選択し、リクエストで使用するインスタンスタイプを選択してから [Select] (選択) を選択します。インスタンスタイプを削除するには、インスタンスタイプを選択し、[Delete] (削除) を選択します。
-
-
[Allocation strategy] (配分戦略) で、ニーズに合った戦略を選択します。詳細については、「スポットインスタンスの配分戦略」を参照してください。
-
[Your fleet request at a glance] (フリートリクエストの概要) で、フリートの設定を確認し、必要な調整を行います。
-
(オプション) AWS CLI で使用される起動設定のコピーをダウンロードするには、[JSON config] (JSON 設定) を選択します。
-
[Launch] を選択します。
スポットフリートリクエストタイプは です。
fleet
リクエストが実行されると、タイプ のリクエストが追加されます。このとき、状態は になり、ステータスは になります。instance
active
fulfilled
スポットフリートを作成するにはAWS CLI
を使用して、スポットフリートリクエストを作成するにはAWS CLI
-
スポットフリートリクエストを作成するには、request-spot-fleet コマンドを使用します。https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html
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 ユーザーに付与します。詳細については、「例: リソースのタグ付け」を参照してください。
リソースにタグ付けするアクセス許可を IAM ユーザーに付与するには
以下を含む IAM ポリシーを作成します。
-
ec2:CreateTags
アクション。これにより、タグを作成するアクセス許可が IAM ユーザーに付与されます。 -
ec2:RequestSpotFleet
アクション。これにより、スポットフリートリクエストを作成するアクセス許可が IAM ユーザーに付与されます。 -
で、 を指定する必要があります。
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/*" }
新しいスポットフリートにタグを付けます。
コンソールを使用して、新しいスポットフリートリクエストにタグ付けするには
-
「」の手順に従います。定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)
-
タグを追加するには、[追加設定] を展開し、[新規タグの追加] を選択して、タグのキーと値を入力します。各タグについて、これを繰り返します。
タグごとに、スポットフリートリクエストとインスタンスに同じタグを付けることができます。両方にタグ付けするには、[Instance tags (インスタンスタグ)] と [Fleet tags (フリートタグ)] の両方が選択されていることを確認します。スポットフリートリクエストのみにタグ付けするには、[インスタンスタグ] をクリアします。フリートによって起動されたインスタンスのみにタグ付けするには、[Fleet tags (フリートタグ)] をクリアします。
-
必須フィールドに入力してスポットフリートリクエストを作成し、[起動] を選択します。詳細については、「定義済みパラメータを使用してスポットフリートリクエストを作成する (コンソール)」を参照してください。
を使用して、新しいスポットフリートリクエストにタグ付けするには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
でのボリュームのタグ付けはサポートされていません。
既存のスポットフリートにタグを付けます。
コンソールを使用して、既存のスポットフリートリクエストにタグ付けするには
スポットフリートリクエストを作成した後、コンソールを使用してフリートリクエストにタグを追加できます。
-
スポットコンソール (https://console.aws.amazon.com/ec2spot
) を開きます。 -
スポットフリートリクエストを選択します。
-
[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
スポットフリートリクエストタグを表示する
コンソールを使用して、スポットフリートリクエストタグを表示するには
-
スポットコンソール (https://console.aws.amazon.com/ec2spot
) を開きます。 -
スポットフリートリクエストを選択し、[タグ] タブを選択します。
スポットフリートリクエストタグを記述するには
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"
}
]
}
]
}
スポットフリートを記述する
上限料金がスポット料金を超え、容量が利用可能な場合、スポットフリートはスポットインスタンスを起動します。スポットインスタンスは、中断されるか終了されるまで実行されます。
スポットフリートを記述するには (コンソール)
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[Spot Requests] を選択します。
-
スポットフリートリクエストを選択します。設定の詳細を表示するには、[Description] を選択します。
-
スポットフリートのスポットインスタンスを一覧表示するには、インスタンスを選択します。
-
スポットフリートの履歴を表示するには、[履歴] を選択します。
スポットフリートを記述するには (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
または、スポットフリートが現在のサイズを維持するようにリクエストすることもできますが、中断されたり手動で終了されたスポットインスタンスを置き換えることはできません。
ターゲット容量が減ったためにスポットフリートがインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。
スポットフリートリクエストを変更するには (コンソール)
-
スポットコンソール (https://console.aws.amazon.com/ec2spot/home/fleet
) を開きます。 -
スポットフリートリクエストを選択します。
-
[Actions]、[Modify target capacity] の順に選択します。
-
[Modify target capacity] で、以下の操作を実行します。
-
新しいターゲット容量とオンデマンド部分を入力します。
-
(オプション) ターゲット容量を小さくしてもスポット群の現在のサイズを保持する場合は、[Terminate instances] をオフにします。
-
[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-capacity20
前のコマンドを以下のように変更して、結果的にいずれのスポットインスタンスも終了せずに、指定したスポットフリートのターゲット容量を減らすことができます。
aws ec2 modify-spot-fleet-request \ --spot-fleet-request-id
sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
\ --target-capacity10
\ --excess-capacity-termination-policy NoTermination
スポットフリートリクエストをキャンセルします。
スポットフリートの使用が終了すると、スポットフリートリクエストをキャンセルできます。これにより、スポットフリートに関連付けられているすべてのスポットリクエストがキャンセルされるため、スポットフリートに新しいスポットインスタンスは起動されません。スポットフリートがスポットインスタンスを終了するか指定する必要があります。インスタンスを終了する場合、スポットフリートリクエストは 状態になります。cancelled_terminating
それ以外の場合、スポットフリートリクエストは 状態になり、インスタンスは中断または手動終了されるまで、引き続き実行されます。cancelled_running
スポットフリートリクエストをキャンセルするには (コンソール)
-
スポットコンソール (https://console.aws.amazon.com/ec2spot/home/fleet
) を開きます。 -
スポットフリートリクエストを選択します。
-
[Actions]、[Cancel spot request] の順に選択します。
-
[スポットリクエストのキャンセル] で、スポットフリートをキャンセルすることを確認します。スポット群の現在のサイズを保持するには、[Terminate instances] をオフにします。準備ができたら、[Confirm] を選択します。
を使用して、スポットフリートリクエストをキャンセルするにはAWS CLI
指定したスポットフリートリクエストをキャンセルし、インスタンスを終了するには、cancel-spot-fleet-requests コマンドを使用します。https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-spot-fleet-requests.html
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 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": []
}