EC2 フリートの操作 - Amazon Elastic Compute Cloud

EC2 フリートの操作

EC2 フリート を使用開始するには、合計ターゲットキャパシティー、オンデマンド容量、スポット容量、インスタンスの 1 つ以上の起動仕様、希望上限価格などを指定したリクエストを作成します。フリートリクエストには、フリートがインスタンスの起動に必要とする情報 (AMI、インスタンスタイプ、サブネットまたはアベイラビリティーゾーン、そして 1 つ以上のセキュリティグループ) を定義する起動テンプレートを含める必要があります。お客様は、インスタンスタイプ、サブネット、アベイラビリティーゾーン、支払い上限価格の起動条件オーバーライドを指定でき、各起動条件オーバーライドに加重容量を割り当てることができます。

EC2 フリート は、使用可能な容量があるときは オンデマンドインスタンス を起動し、上限価格がスポット料金を超えていて容量が利用可能なときは スポットインスタンス を起動します。

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

タイプ または の EC2 フリート リクエストは、期限切れになるかお客様によって削除されるまで、アクティブのままになります。maintainrequestタイプ または のフリートを削除するときは、削除によってそのフリートのインスタンスを終了するかどうかを指定できます。maintainrequestそれ以外の場合、オンデマンドインスタンスは、終了されるまで実行され、スポットインスタンス は中断されるか終了されるまで実行されます。

EC2 フリート リクエストの状態

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

submitted

EC2 フリート リクエストは評価中です。Amazon EC2 は目標数のインスタンスを起動する準備をしています。リクエストには オンデマンドインスタンス または スポットインスタンス、あるいはその両方を含めることができます。

active

EC2 フリート リクエストは検証済みです。Amazon EC2 は実行中のインスタンスをターゲット数分、確保しようとしています。リクエストは、変更または削除されるまで、この状態のままになります。

modifying

EC2 フリート リクエストは変更中です。リクエストは、変更が完全に処理されるか、 リクエストが削除されるまで、この状態のままになります。 フリートタイプのみを変更できます。maintainこの状態はその他のリクエストタイプには適用されません。

deleted_running

EC2 フリート リクエストが削除され、追加のインスタンスは起動されません。その既存のインスタンスは、手動で中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。EC2 フリート リクエストが削除された後、タイプ または の EC2 フリート のみがインスタンスを実行できます。maintainrequest実行中のインスタンスを持つ削除した フリートはサポートされていません。instantこの状態は フリートには適用されません。instant

deleted_terminating

EC2 フリート リクエストが削除され、そのインスタンスが終了します。リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。

deleted

EC2 フリート が削除され、実行中のインスタンスはありません。リクエストは、そのインスタンスが終了されてから 2 日後に削除されます。

次の図は、EC2 フリート リクエストの状態の遷移を示しています。フリートの制限を超えた場合、リクエストはすぐに削除されます。


					EC2 フリート リクエストの状態

EC2 フリート の前提条件

起動テンプレート

起動テンプレートには、インスタンスタイプ、アベイラビリティーゾーン、支払い上限価格など、起動するインスタンスの情報が含まれています。詳細については、「起動テンプレートからのインスタンスの起動」を参照してください。

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

ロールは、インスタンスのリクエスト、起動、終了、タグ付けを行う許可を EC2 フリートに付与します。AWSServiceRoleForEC2FleetAmazon EC2 は、このサービスにリンクされたロールを使用して、以下のアクションを完了します。

  • ec2:RunInstances – インスタンスを起動します。

  • ec2:RequestSpotInstances – スポットインスタンス をリクエストします。

  • ec2:TerminateInstances – インスタンスを終了します。

  • ec2:DescribeImages – スポットインスタンス の Amazon マシンイメージ (AMI) の説明

  • ec2:DescribeInstanceStatus – スポットインスタンス のステータスを表示します。

  • ec2:DescribeSubnets – スポットインスタンス のサブネットを表示します。

  • ec2:CreateTags – EC2 フリート、インスタンス、ボリュームにタグを追加します。

または API を使用して EC2 フリート を作成する前に、このロールが存在していることを確認します。AWS CLI

注記

EC2 フリート に、このロールは必要ありません。instant

ロールを作成するには、IAM コンソールを次のように使用します。

EC2 フリート の AWSServiceRoleForEC2Fleet ロールを作成するには

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

  2. ナビゲーションペインで [Roles] (ロール) を選択し、続いて [Create role] (ロールを作成) を選択します。

  3. [Select type of trusted entity (信頼されたエンティティのタイプの選択)] で、[AWS のサービス] を選択します。

  4. [Choose the service that will use this role] (このロールを使用するサービスを選択) で、[EC2 - Fleet] (EC2 フリート) を選択後、[Next: Permissions] (次へ: アクセス権)、[Next: Tags] (次へ: タグ)、[Next: Review] (次へ: レビュー) の順に選択します。

  5. [確認] ページで、[ロールの作成] を選択します。

EC2 フリートを使用する必要がなくなった場合は、[AWSServiceRoleForEC2Fleet] ロールを削除することをお勧めします。このロールがアカウントから削除された後で、別のフリートを作成した場合はロールを再度作成できます。

詳細については、IAM ユーザーガイドの「サービスにリンクされたロールの使用」を参照してください。https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html

暗号化された AMI および EBS スナップショット用のカスタマーマネージド型キーへのアクセス権限の付与

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

アクセス権限を設定するときは、付与がキーポリシーの代わりになります。詳細については、「AWS Key Management Service デベロッパーガイド」で「許可の使用」と「AWS KMS でのキーポリシーの使用」を参照してください。

AWSServiceRoleForEC2Fleet ロールにカスタマーマネージド型キーを使用する許可を付与するには

  • create-grant コマンドを使用して、カスタマーマネージド型キーに許可を付与し、オペレーションを実行する許可を追加するプリンシパル (AWSServiceRoleForEC2Fleet サービスにリンクされたロール) を指定します。カスタマーマネージド型キーは、パラメーターとカスタマーマネージド型キーの ARN を指定されます。key-idプリンシパルを指定するには、 パラメータと AWSServiceRoleForEC2Fleet サービスにリンクされたロールの 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/AWSServiceRoleForEC2Fleet \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

EC2 フリート IAM ユーザーのアクセス許可

IAM ユーザーが EC2 フリート を作成または管理する場合、必ず次のようにして必要なアクセス許可を付与してください。

IAM ユーザーに EC2 フリート のアクセス許可を付与するには

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

  2. ナビゲーションペインで、[Policies] (ポリシー) を選択します。

  3. [ポリシーの作成] を選択します。

  4. [Create policy] (ポリシーの作成) ページで、[JSON] タブを選択し、テキストを以下に置き換えて [Review policy] (ポリシーの確認) を選択します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:PassRole", "iam:ListInstanceProfiles" ], "Resource":"arn:aws:iam::123456789012:role/DevTeam*" } ] }

    は、IAM ユーザーにすべての Amazon EC2 API アクションを呼び出すアクセス許可を付与します。ec2:*特定の Amazon EC2 API アクションに制限するには、代わりにこれらのアクションを指定します。

    IAM ユーザーは、既存の IAM ロールを列挙する アクション、EC2 フリート ロールを指定する アクション、および既存のインスタンスプロファイルを列挙する アクションを呼び出すには、アクセス許可が必要です。iam:ListRolesiam:PassRoleiam:ListInstanceProfiles

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

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

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

  6. ナビゲーションペインで [Users] を選択し、ユーザーを選択します。

  7. [Permissions] (アクセス許可) タブで、[Add permissions] (アクセス許可を追加する) を選択します。

  8. [Attach existing policies directly] を選択します。以前に作成したポリシーを選択し、[Next: Review] を選択します。

  9. [Add permissions] を選択します。

EC2 フリート ヘルスチェック

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

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

フリートを設定して、異常のある スポットインスタンス を置き換えることができます。 を に設定した後、 として報告されたときにスポットインスタンスが置き換えられます。ReplaceUnhealthyInstancestrueunhealthy異常のあるスポットインスタンスを置き換えている間、最大数分間、フリートがターゲットキャパシティーを下回る場合があります。

要件

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

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

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

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

異常のある スポットインスタンス を置き換えるように EC2 フリート を設定するには

  1. 表示されるステップに従って EC2 フリート を作成します。詳細については、「EC2 フリートの作成」を参照してください。

  2. 異常のある スポットインスタンス を置き換えるようにフリートを設定するには、JSON ファイル内で に を指定します。ReplaceUnhealthyInstancestrue

EC2 フリート JSON 設定ファイルの生成

フリート設定パラメータの詳細なリストを見るには、JSON ファイルを次のように作成できます。各パラメータの説明については、AWS CLI コマンドリファレンスの「create-fleet」を参照してください。

コマンドラインを使用して使用可能なすべての EC2 フリートパラメータを含む JSON ファイルを生成するには

  • create-fleet (AWS CLI) コマンドと --generate-cli-skeleton パラメータを使用して、EC2 フリート JSON ファイルを生成し、出力のファイルへの保存を指示します。

    aws ec2 create-fleet \ --generate-cli-skeleton input > ec2createfleet.json

    出力例

    { "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "capacity-optimized", "MaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch" } }, "InstanceInterruptionBehavior": "hibernate", "InstancePoolsToUseCount": 0, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "OnDemandOptions": { "AllocationStrategy": "prioritized", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" }, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "", "LaunchTemplateName": "", "Version": "" }, "Overrides": [ { "InstanceType": "r5.metal", "MaxPrice": "", "SubnetId": "", "AvailabilityZone": "", "WeightedCapacity": 0.0, "Priority": 0.0, "Placement": { "AvailabilityZone": "", "Affinity": "", "GroupName": "", "PartitionNumber": 0, "HostId": "", "Tenancy": "dedicated", "SpreadDomain": "", "HostResourceGroupArn": "" }, "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "amd" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "previous" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "required", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "excluded", "LocalStorageTypes": [ "ssd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "inference" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "amd" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 0, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 0, "DefaultTargetCapacityType": "on-demand", "TargetCapacityUnitType": "memory-mib" }, "TerminateInstancesWithExpiration": true, "Type": "instant", "ValidFrom": "1970-01-01T00:00:00", "ValidUntil": "1970-01-01T00:00:00", "ReplaceUnhealthyInstances": true, "TagSpecifications": [ { "ResourceType": "fleet", "Tags": [ { "Key": "", "Value": "" } ] } ], "Context": "" }

EC2 フリートの作成

EC2 フリートを作成するには、次のパラメータを指定するだけです。

  • LaunchTemplateId または LaunchTemplateName — 使用する起動テンプレートを指定します (インスタンスタイプ、アベイラビリティーゾーン、支払い上限価格など、起動するインスタンスのパラメータが含まれています)。

  • TotalTargetCapacity — フリートの合計ターゲット容量を指定します。

  • DefaultTargetCapacityType — デフォルトの購入オプションをオンデマンドにするかスポットにするかを指定します。

起動テンプレートをオーバーライドする複数の起動条件を指定できます。起動条件は、インスタンスタイプ、アベイラビリティーゾーン、サブネット、上限価格によって異なり、異なる加重容量が含まれていることがあります。または、インスタンスが持つ必要がある属性を指定すると、Amazon EC2 はそれらの属性を持つすべてのインスタンスタイプを識別します。詳細については、「」を参照してくださいEC2 フリートの属性ベースのインスタンスタイプの選択

パラメータを指定しない場合、フリートはデフォルト値を使用します。

JSON ファイルのフリートパラメータを指定します。詳細については、「EC2 フリート JSON 設定ファイルの生成」を参照してください。

EC2 フリート の作成に使用できるのは、 のみです。AWS CLI

EC2 フリート () を作成するにはAWS CLI

  • create-fleet (AWS CLI) コマンドを使用して EC2 フリートを作成し、フリート設定パラメータを含む JSON ファイルを指定します。

aws ec2 create-fleet --cli-input-json file://file_name.json

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

タイプ またはタイプ のフリートの出力例を次に示します。requestmaintain

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE" }

ターゲットキャパシティーを起動したタイプ のフリートの出力例を次に示します。instant

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ], "InstanceType": "c5.large", "Platform": null }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-5678901234abcdef0", "i-5432109876abcdef9" ] ] }

ターゲットキャパシティーの一部を起動し、起動されなかったインスタンスをエラーとするタイプ のフリートの出力例を次に示します。instant

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientInstanceCapacity", "ErrorMessage": "" }, ], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ] ] }

インスタンスを起動しなかったタイプ のフリートの出力例を次に示します。instant

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, ], "Instances": [] }

EC2 フリート のタグ付け

EC2 フリート リクエストを分類および管理しやすくするため、カスタムメタデータでタグ付けすることができます。EC2 フリート タグは、作成時または作成後にリクエストに割り当てることができます。

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

注記

フリートタイプでは、 オンデマンドインスタンス および スポットインスタンス にアタッチされているボリュームにタグ付けできます。instant または フリートタイプでは、オンデマンドインスタンス にアタッチされているボリュームにのみタグ付けできます。requestmaintain

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

前提条件

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

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

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

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

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

  • [] に対しては、[] を指定することをお勧めします。Resource"*"これにより、ユーザーはすべてのリソースタイプにタグ付けできます。

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

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

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

新しい EC2 フリート リクエストにタグ付けするには

作成時に EC2 フリートリクエストをタグ付けするには、フリートを作成するために使用した JSON ファイルでキーと値のペアを指定します。 の値は にする必要があります。ResourceTypefleet別の値で指定すると、フリートリクエストは失敗します。

EC2 フリート によって起動されたインスタンスおよびボリュームにタグ付けするには

フリートが起動したインスタンスおよびボリュームにタグ付けするには、EC2 フリートリクエストで参照される起動テンプレートでタグを指定します。

注記

または フリートタイプによって起動される スポットインスタンス にアタッチされたボリュームにタグを付けることはできません。requestmaintain

既存の EC2 フリート リクエスト、インスタンス、ボリュームにタグを付けるには ()AWS CLI

create-tags コマンドを使用して、既存のリソースにタグを付けます。https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html

aws ec2 create-tags \ --resources fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE i-1234567890abcdef0 vol-1234567890EXAMPLE \ --tags Key=purpose,Value=test

EC2 フリートを記述する

EC2 フリートの設定、EC2 フリートのインスタンス、EC2 フリートのイベント履歴を記述できます。

EC2 フリートを記述するには (AWS CLI)

EC2 フリートの詳細を表示するには、describe-fleets コマンドを使用します。

aws ec2 describe-fleets
重要

フリートがタイプ instant の場合は、フリート ID を指定する必要があります。指定しない場合、レスポンスに表示されません。--fleet-ids を次のように含めます。

aws ec2 describe-fleets --fleet-ids fleet-8a22eee4-f489-ab02-06b8-832a7EXAMPLE

出力例

{ "Fleets": [ { "ActivityStatus": "fulfilled", "CreateTime": "2022-02-09T03:35:52+00:00", "FleetId": "fleet-364457cd-3a7a-4ed9-83d0-7b63e51bb1b7", "FleetState": "active", "ExcessCapacityTerminationPolicy": "termination", "FulfilledCapacity": 2.0, "FulfilledOnDemandCapacity": 0.0, "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" } } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 2, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 2, "DefaultTargetCapacityType": "spot" }, "TerminateInstancesWithExpiration": false, "Type": "maintain", "ReplaceUnhealthyInstances": false, "SpotOptions": { "AllocationStrategy": "capacity-optimized", "InstanceInterruptionBehavior": "terminate" }, "OnDemandOptions": { "AllocationStrategy": "lowestPrice" } } ] }

指定した EC2 フリートのインスタンスの詳細を表示するには、describe-fleet-instances コマンドを使用します。実行中のインスタンスの返されるリストは定期的に更新されますが、古い可能性もあります。

aws ec2 describe-fleet-instances --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE

出力例

{ "ActiveInstances": [ { "InstanceId": "i-09cd595998cb3765e", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-86k84j6p" }, { "InstanceId": "i-09cf95167ca219f17", "InstanceHealth": "healthy", "InstanceType": "m4.large", "SpotInstanceRequestId": "sir-dvxi7fsm" } ], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }

指定した EC2 フリートの指定期間の履歴を表示するには、describe-fleet-history コマンドを使用します。

aws ec2 describe-fleet-history --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --start-time 2018-04-10T00:00:00Z

出力例

{ "HistoryRecords": [ { "EventInformation": { "EventSubType": "submitted" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:05.000Z" }, { "EventInformation": { "EventSubType": "active" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:15.000Z" }, { "EventInformation": { "EventDescription": "t2.small, ami-07c8bc5c1ce9598c3, ...", "EventSubType": "progress" }, "EventType": "fleetRequestChange", "Timestamp": "2020-09-01T18:26:17.000Z" }, { "EventInformation": { "EventDescription": "{\"instanceType\":\"t2.small\", ...}", "EventSubType": "launched", "InstanceId": "i-083a1c446e66085d2" }, "EventType": "instanceChange", "Timestamp": "2020-09-01T18:26:17.000Z" }, { "EventInformation": { "EventDescription": "{\"instanceType\":\"t2.small\", ...}", "EventSubType": "launched", "InstanceId": "i-090db02406cc3c2d6" }, "EventType": "instanceChange", "Timestamp": "2020-09-01T18:26:17.000Z" } ], "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "LastEvaluatedTime": "1970-01-01T00:00:00.000Z", "StartTime": "2018-04-09T23:53:20.000Z" }

EC2 フリート の変更

状態が または の EC2 フリート を変更することができます。submittedactiveフリートを変更すると、そのフリートは 状態に移行します。modifying

変更できるのは、 タイプの EC2 フリート だけです。maintain または タイプの EC2 フリート は変更できません。requestinstant

EC2 フリート の以下のパラメータを変更できます。

  • – 、、および のターゲットキャパシティーを増やすか減らします。target-capacity-specificationTotalTargetCapacityOnDemandTargetCapacitySpotTargetCapacity

  • excess-capacity-termination-policy – EC2 フリート の合計ターゲットキャパシティーがフリートの現在のサイズより小さくなった場合、実行中のインスタンスが終了されるかどうか。有効な値は、no-termination および termination です。

ターゲットキャパシティーを増やすと、EC2 フリート は で指定されたインスタンス購入オプション (オンデマンドインスタンス または スポットインスタンス) に従って追加のインスタンスを起動します。DefaultTargetCapacityType

が の場合、EC2 フリート はその配分戦略に従って追加の スポットインスタンス を起動します。DefaultTargetCapacityTypespot配分戦略が の場合、フリートは、リクエスト内にある最低価格のスポットキャパシティープールからインスタンスを起動します。lowest-price配分戦略が の場合、フリートは、リクエストのプールにインスタンスを分散します。diversified

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

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

EC2 フリートを変更するには ()AWS CLI

modify-fleet コマンドを使用して、指定された EC2 フリートのターゲット容量を更新します。

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=20

ターゲットキャパシティーを小さくしてもフリートの現在のサイズを保持する場合は、前のコマンドを以下のように変更できます。

aws ec2 modify-fleet \ --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --target-capacity-specification TotalTargetCapacity=10 \ --excess-capacity-termination-policy no-termination

EC2 フリート の削除

EC2 フリート が不要になった場合には、それを削除することができます。フリートを削除すると、新しいインスタンスは起動されません。

EC2 フリート を削除するときは、そのインスタンスも終了させるかどうかを指定する必要があります。フリートを削除するときにインスタンスを終了する必要があることを指定した場合、 状態へ移行します。deleted_terminatingそれ以外の場合は 状態になり、インスタンスは中断または手動終了されるまで、引き続き実行されます。deleted_running

制限

  • 1 回のリクエストで最大 25 個の フリートを削除できます。instantこの数を超えると、 フリートは削除されず、エラーが返されます。instantタイプ または のフリートについては、1 回のリクエストで削除できるフリートの数に制限はありません。maintainrequest

  • フリートを削除するのに、1 回のリクエストで最大 1000 インスタンスを終了できます。instant

EC2 フリート を削除してインスタンスを終了するには ()AWS CLI

delete-fleets コマンドと --terminate-instances パラメータを使用し、指定された EC2 フリートを削除してインスタンスを終了します。

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --terminate-instances

出力例を次に示します。

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_terminating", "PreviousFleetState": "active", "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" } ] }

インスタンスを終了せずに EC2 フリート を削除するには ()AWS CLI

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

注記

は フリートではサポートされていません。--no-terminate-instancesinstant

aws ec2 delete-fleets \ --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \ --no-terminate-instances

出力例を次に示します。

{ "UnsuccessfulFleetDeletions": [], "SuccessfulFleetDeletions": [ { "CurrentFleetState": "deleted_running", "PreviousFleetState": "active", "FleetId": "fleet-4b8aaae8-dfb5-436d-a4c6-3dafa4c6b7dcEXAMPLE" } ] }

フリートの削除に失敗した場合のトラブルシューティング

EC2 フリート の削除に失敗すると、出力中の は EC2 フリート の ID、エラーコード、エラーメッセージを返します。UnsuccessfulFleetDeletions

エラーコードは次のとおりです。

  • ExceededInstantFleetNumForDeletion

  • fleetIdDoesNotExist

  • fleetIdMalformed

  • fleetNotInDeletableState

  • NoTerminateInstancesNotSupported

  • UnauthorizedOperation

  • unexpectedError

のトラブルシューティングExceededInstantFleetNumForDeletion

1 回のリクエストで 25 個 を超える フリートを削除しようとすると、 エラーが返されます。instantExceededInstantFleetNumForDeletionこのエラーの出力例を次に示します。

{ "UnsuccessfulFleetDeletions": [ { "FleetId": " fleet-5d130460-0c26-bfd9-2c32-0100a098f625", "Error": { "Message": "Can’t delete more than 25 instant fleets in a single request.", "Code": "ExceededInstantFleetNumForDeletion" } }, { "FleetId": "fleet-9a941b23-0286-5bf4-2430-03a029a07e31", "Error": { "Message": "Can’t delete more than 25 instant fleets in a single request.", "Code": "ExceededInstantFleetNumForDeletion" } } . . . ], "SuccessfulFleetDeletions": [] }

NoTerminateInstancesNotSupported のトラブルシューティング

フリートを削除するときに フリート内のインスタンスを終了しないように指定した場合、 エラーが返されます。 は フリートではサポートされていません。instantNoTerminateInstancesNotSupported--no-terminate-instancesinstantこのエラーの出力例を次に示します。

{ "UnsuccessfulFleetDeletions": [ { "FleetId": "fleet-5d130460-0c26-bfd9-2c32-0100a098f625", "Error": { "Message": "NoTerminateInstances option is not supported for instant fleet", "Code": "NoTerminateInstancesNotSupported" } } ], "SuccessfulFleetDeletions": []

UnauthorizedOperation のトラブルシューティング

インスタンスを終了するアクセス許可がない場合、インスタンスを終了する必要があるフリートを削除するときに エラーが発生します。UnauthorizedOperation以下はエラーレスポンスです。

<Response><Errors><Error><Code>UnauthorizedOperation</Code><Message>You are not authorized to perform this operation. Encoded authorization failure message: VvuncIxj7Z_CPGNYXWqnuFV-YjByeAU66Q9752NtQ-I3-qnDLWs6JLFd KnSMMiq5s6cGqjjPtEDpsnGHzzyHasFHOaRYJpaDVravoW25azn6KNkUQQlFwhJyujt2dtNCdduJfrqcFYAjlEiRMkfDHt7N63SKlweKUl BHturzDK6A560Y2nDSUiMmAB1y9UNtqaZJ9SNe5sNxKMqZaqKtjRbk02RZu5V2vn9VMk6fm2aMVHbY9JhLvGypLcMUjtJ76H9ytg2zRlje VPiU5v2s-UgZ7h0p2yth6ysUdhlONg6dBYu8_y_HtEI54invCj4CoK0qawqzMNe6rcmCQHvtCxtXsbkgyaEbcwmrm2m01-EMhekLFZeJLr DtYOpYcEl4_nWFX1wtQDCnNNCmxnJZAoJvb3VMDYpDTsxjQv1PxODZuqWHs23YXWVywzgnLtHeRf2o4lUhGBw17mXsS07k7XAfdPMP_brO PT9vrHtQiILor5VVTsjSPWg7edj__1rsnXhwPSu8gI48ZLRGrPQqFq0RmKO_QIE8N8s6NWzCK4yoX-9gDcheurOGpkprPIC9YPGMLK9tug </Message></Error></Errors><RequestID>89b1215c-7814-40ae-a8db-41761f43f2b0</RequestID></Response>

エラーを解決するには、次の例に示すように、 アクションを IAM ポリシーに追加する必要があります。ec2:TerminateInstances

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeleteFleetsAndTerminateInstances", "Effect": "Allow", "Action": [ "ec2:DeleteFleets" "ec2:TerminateInstances" ], "Resource": "*" } ] }