EC2 フリートの操作
EC2 フリート を使用開始するには、合計ターゲット容量、オンデマンド容量、スポット容量、インスタンスの 1 つ以上の起動仕様、希望上限価格などを指定したリクエストを作成します。フリートリクエストには、フリートがインスタンスの起動に必要とする情報 (AMI、インスタンスタイプ、サブネットまたはアベイラビリティーゾーン、そして 1 つ以上のセキュリティグループ) を定義する起動テンプレートを含める必要があります。お客様は、インスタンスタイプ、サブネット、アベイラビリティーゾーン、支払い上限価格の起動条件オーバーライドを指定でき、各起動条件オーバーライドに加重容量を割り当てることができます。
EC2 フリート は、使用可能な容量があるときは オンデマンドインスタンス を起動し、上限価格がスポット料金を超えていて容量が利用可能なときは スポットインスタンス を起動します。
フリートに スポットインスタンス が含まれている場合、Amazon EC2 はスポット料金の変更に応じてフリートのターゲット容量を維持しようと試みることができます。
タイプ maintain
または request
の EC2 フリート リクエストは、期限切れになるかお客様によって削除されるまで、アクティブのままになります。タイプ maintain
または request
のフリートを削除するときは、削除によってそのフリートのインスタンスを終了するかどうかを指定できます。それ以外の場合、オンデマンドインスタンスは、終了されるまで実行され、スポットインスタンス は中断されるか終了されるまで実行されます。
内容
EC2 フリート リクエストの状態
EC2 フリート リクエストは、次に示す状態のいずれかになります。
submitted
-
EC2 フリート リクエストは評価中です。Amazon EC2 は目標数のインスタンスを起動する準備をしています。リクエストには オンデマンドインスタンス または スポットインスタンス、あるいはその両方を含めることができます。
active
-
EC2 フリート リクエストは検証済みです。Amazon EC2 は実行中のインスタンスをターゲット数分、確保しようとしています。リクエストは、変更または削除されるまで、この状態のままになります。
modifying
-
EC2 フリート リクエストは変更中です。リクエストは、変更が完全に処理されるか、 リクエストが削除されるまで、この状態のままになります。
maintain
フリートタイプのみを変更できます。この状態はその他のリクエストタイプには適用されません。 deleted_running
-
EC2 フリート リクエストが削除され、追加のインスタンスは起動されません。その既存のインスタンスは、手動で中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。EC2 フリートリクエストが削除された後、タイプ
maintain
またはrequest
の EC2 フリート のみがインスタンスを実行できます。実行中のインスタンスを持つ削除したinstant
フリートはサポートされていません。この状態はinstant
フリートには適用されません。 deleted_terminating
-
EC2 フリートリクエストが削除され、そのインスタンスが終了します。リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。
deleted
-
EC2 フリートが削除され、実行中のインスタンスはありません。リクエストは、そのインスタンスが終了されてから 2 日後に削除されます。
次の図は、EC2 フリート リクエストの状態の遷移を示しています。フリートの制限を超えた場合、リクエストはすぐに削除されます。

EC2 フリートの前提条件
EC2 フリートを作成するには、以下の前提条件を設定する必要があります。
起動テンプレート
起動テンプレートには、インスタンスタイプ、アベイラビリティーゾーン、支払い上限価格など、起動するインスタンスの情報が含まれています。詳細については、「起動テンプレートからのインスタンスの起動」を参照してください。
EC2 フリート用のサービスにリンクされたロール
ロールは、インスタンスのリクエスト、起動、終了、タグ付けを行う許可を EC2 フリートに付与します。AWSServiceRoleForEC2Fleet
Amazon EC2 は、このサービスにリンクされたロールを使用して、以下のアクションを完了します。
-
ec2:RunInstances
– インスタンスを起動します。 -
ec2:RequestSpotInstances
– スポットインスタンス をリクエストします。 -
ec2:TerminateInstances
– インスタンスを終了します。 -
ec2:DescribeImages
– スポットインスタンス の Amazon マシンイメージ (AMI) の説明 -
ec2:DescribeInstanceStatus
– スポットインスタンス のステータスを表示します。 -
ec2:DescribeSubnets
– スポットインスタンス のサブネットを表示します。 -
ec2:CreateTags
– EC2 フリート、インスタンス、ボリュームにタグを追加します。
AWS CLI または API を使用して EC2 フリート を作成する前に、このロールが存在していることを確認します。
注記
instant
EC2 フリート に、このロールは必要ありません。
ロールを作成するには、IAM コンソールを次のように使用します。
EC2 フリート の AWSServiceRoleForEC2Fleet ロールを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles] (ロール) を選択してから、[Create role] (ロールを作成する) を選択します。
-
信頼できるエンティティの種類の選択 で、AWS サービス を選択します。
-
このロールを使用するサービスを選択 で、EC2 -フリート を選択後、[Next: Permissions] (次へ:アクセス許可)、[Next: Tags] (次へ: タグ)、[Next: Review] (次へ: 確認) の順に選択します。
-
[Review] (確認) ページで、[Create role] (ロールの作成) を選択します。
EC2 フリート を使用する必要がなくなった場合は、AWSServiceRoleForEC2Fleet ロールを削除することをお勧めします。このロールがアカウントから削除された後で、別のフリートを作成した場合はロールを再度作成できます。
詳細については、IAM ユーザーガイド の「サービスにリンクされたロールの使用」を参照してください。
暗号化された AMI および EBS スナップショット用のカスタマーマネージド型キーへのアクセス権限の付与
暗号化された AMI または 暗号化された Amazon EBS スナップショット を EC2 フリートで指定し、暗号化の AWS KMS キーを使用する場合は、カスタマーマネージドキーを使用して、Amazon EC2 がユーザーの代わりにインスタンスを起動する許可を、[AWSServiceRoleForEC2Fleet] ロールに付与する必要があります。これを行うには、次の手順で示すように、カスタマーマネージド型キーに許可を追加する必要があります。
アクセス権限を設定するときは、付与がキーポリシーの代わりになります。詳細については、「AWS Key Management Service デベロッパーガイド」で「許可の使用」と「AWS KMS でのキーポリシーの使用」を参照してください。
AWSServiceRoleForEC2Fleet ロールにカスタマーマネージド型キーを使用する許可を付与するには
-
許可の作成 コマンドを使用して、カスタマーマネージド型キーに許可を付与し、オペレーションを実行する許可を追加するプリンシパル (AWSServiceRoleForEC2Fleet サービスにリンクされたロール) を指定します。カスタマーマネージド型キーは、
key-id
パラメーターとカスタマーマネージド型キーの ARN を指定されます。プリンシパルを指定するには、grantee-principal
パラメータと AWSServiceRoleForEC2Fleet サービスにリンクされたロールの ARN を使用します。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 フリートユーザーのアクセス許可
ユーザーが EC2 フリートを作成または管理する場合、必ず必要な許可を付与してください。
EC2 フリートのポリシーを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
-
[Create policy] (ポリシーの作成) を選択します。
-
[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*" } ] }
ec2:*
は、ユーザーにすべての Amazon EC2 API アクションを呼び出す許可を付与します。特定の Amazon EC2 API アクションに制限するには、代わりにこれらのアクションを指定します。IAM ユーザーは、既存の IAM ロールを列挙する
iam:ListInstanceProfiles
アクション、EC2 フリートロールを指定するiam:PassRole
アクション、および既存のインスタンスプロファイルを列挙するiam:ListRoles
アクションを呼び出すには、許可が必要です。(オプション) ユーザーが IAM コンソールを使用してロールまたはインスタンスプロファイルを作成できるようにするには、次のアクションをポリシーに追加する必要もあります。
-
iam:AddRoleToInstanceProfile
-
iam:AttachRolePolicy
-
iam:CreateInstanceProfile
-
iam:CreateRole
-
iam:GetRole
-
iam:ListPolicies
-
-
[Review policy] (ポリシーの確認) ページでポリシー名と説明を入力し、[Create policy] (ポリシーの作成) を選択します。
-
アクセスを提供するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
AWS IAM Identity Center (successor to AWS Single Sign-On) のユーザーとグループ:
アクセス許可セットを作成します。「AWS IAM Identity Center (successor to AWS Single Sign-On) ユーザーガイド」の「シークレットの作成と管理」の手順に従ってください。
-
ID プロバイダーを通じて IAM で管理されているユーザー:
ID フェデレーションのロールを作成する。詳細については、「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成」を参照してください。
-
IAM ユーザー:
-
ユーザーが設定できるロールを作成します。手順については、「IAM ユーザーガイド」の「IAM ユーザー用ロールの作成」を参照してください。
-
(非推奨) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス許可の追加」の指示に従います。
-
-
EC2 フリート ヘルスチェック
EC2 フリート は、2 分ごとにフリートのインスタンスのヘルスステータスをチェックします。インスタンスのヘルスステータスは healthy
または unhealthy
です。
EC2 フリート は Amazon EC2 によって提供されるステータスチェックを使用して、インスタンスのヘルスステータスを判断します。インスタンスステータスチェックまたはシステムステータスチェックのいずれかのステータスが 3 回の連続したヘルスステータスチェックで impaired
の場合、インスタンスは unhealthy
と判断されます。詳細については、「インスタンスのステータスチェック」を参照してください。
フリートを設定して、異常のある スポットインスタンス を置き換えることができます。ReplaceUnhealthyInstances
を true
に設定した後、unhealthy
として報告されたときにスポットインスタンスが置き換えられます。異常のあるスポットインスタンスを置き換えている間、最大数分間、フリートがターゲット容量を下回る場合があります。
要件
-
ヘルスチェックによる置き換えは、タイプ
request
またはinstant
のフリートではなく、ターゲットキャパシティを維持している EC2 フリート (タイプmaintain
のフリート) でのみサポートされます。 -
ヘルスチェックによる置き換えは、スポットインスタンス でのみサポートされます。この機能は オンデマンドインスタンス ではサポートされていません。
-
作成時のみ異常なインスタンスを置き換えるよう EC2 フリート を設定できます。
-
ユーザーは、
ec2:DescribeInstanceStatus
アクションを呼び出す許可を持っている場合のみ、ヘルスチェックの置き換えを使用できます。
異常のある スポットインスタンス を置き換えるように EC2 フリート を設定するには
-
表示されるステップに従って EC2 フリート を作成します。詳細については、「EC2 フリートの作成」を参照してください。
-
異常なスポットインスタンスを置き換えるようにフリートを設定するには、JSON ファイルの
ReplaceUnhealthyInstances
にtrue
と入力します。
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 フリートの設定例」を参照してください。
タイプ request
またはタイプ maintain
のフリートの出力例を次に示します。
{
"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
フリートタイプでは、 オンデマンドインスタンス および スポットインスタンス にアタッチされているボリュームにタグ付けできます。request
または maintain
フリートタイプでは、オンデマンドインスタンス にアタッチされているボリュームにのみタグ付けできます。
タグの仕組みの詳細については、Amazon EC2 リソースのタグ付けを参照してください。
前提条件
リソースにタグ付けする許可をユーザーに付与します。詳細については、「例: リソースのタグ付け」を参照してください。
リソースにタグ付けする許可をユーザーに付与するには
以下を含む IAM ポリシーを作成します。
-
ec2:CreateTags
アクション。これにより、タグを作成する許可がユーザーに付与されます。 -
ec2:CreateFleet
アクション。これにより、EC2 フリートリクエストを作成する許可がユーザーに付与されます。 -
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/*" }
アクセスを提供するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
AWS IAM Identity Center (successor to AWS Single Sign-On) のユーザーとグループ:
アクセス許可セットを作成します。「AWS IAM Identity Center (successor to AWS Single Sign-On) ユーザーガイド」の「シークレットの作成と管理」の手順に従ってください。
-
ID プロバイダーを通じて IAM で管理されているユーザー:
ID フェデレーションのロールを作成する。詳細については、「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成」を参照してください。
-
IAM ユーザー:
-
ユーザーが設定できるロールを作成します。手順については、「IAM ユーザーガイド」の「IAM ユーザー用ロールの作成」を参照してください。
-
(非推奨) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス許可の追加」の指示に従います。
-
新しい EC2 フリート リクエストにタグ付けするには
作成時に EC2 フリート リクエストをタグ付けするには、フリートを作成するために使用した JSON ファイル でキーと値のペアを指定します。ResourceType
の値は fleet
にする必要があります。別の値で指定すると、フリートリクエストは失敗します。
EC2 フリート によって起動されたインスタンスおよびボリュームにタグ付けするには
フリートが起動したインスタンスおよびボリュームにタグ付けするには、EC2 フリート リクエストで参照される 起動テンプレート でタグを指定します。
注記
request
または maintain
フリートタイプによって起動される スポットインスタンス にアタッチされたボリュームにタグを付けることはできません。
既存の EC2 フリート リクエスト、インスタンス、ボリュームにタグを付けるには (AWS CLI)
create-tags コマンドを使用して、既存のリソースにタグを付けます。
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 フリート の変更
状態が submitted
または active
の EC2 フリート を変更することができます。フリートを変更すると、そのフリートは modifying
状態に移行します。
変更できるのは、maintain
タイプの EC2 フリート だけです。request
または instant
タイプの EC2 フリート は変更できません。
EC2 フリート の以下のパラメータを変更できます。
-
target-capacity-specification
–TotalTargetCapacity
、OnDemandTargetCapacity
、およびSpotTargetCapacity
のターゲット容量を増やすか減らします。 -
excess-capacity-termination-policy
– EC2 フリート の合計ターゲット容量がフリートの現在のサイズより小さくなった場合、実行中のインスタンスが終了されるかどうか。有効な値は、no-termination
およびtermination
です。
ターゲット容量を増やすと、EC2 フリート は DefaultTargetCapacityType
で指定されたインスタンス購入オプション (オンデマンドインスタンス または スポットインスタンス) に従って追加のインスタンスを起動します。
DefaultTargetCapacityType
が spot
の場合、EC2 フリート はその配分戦略に従って追加の スポットインスタンス を起動します。配分戦略が 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
フリートは削除されず、エラーが返されます。タイプmaintain
またはrequest
のフリートについては、1 回のリクエストで削除できるフリートの数に制限はありません。 -
instant
フリートを削除するのに、1 回のリクエストで最大 1000 インスタンスを終了できます。
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)
--no-terminate-instances
パラメータを使用して前のコマンドを変更することで、関連するインスタンスを終了せずに、指定された EC2 フリートを削除できます。
注記
--no-terminate-instances
は instant
フリートではサポートされていません。
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 フリート の削除に失敗すると、出力中の UnsuccessfulFleetDeletions
は EC2 フリート の ID、エラーコード、エラーメッセージを返します。
エラーコードは次のとおりです。
-
ExceededInstantFleetNumForDeletion
-
fleetIdDoesNotExist
-
fleetIdMalformed
-
fleetNotInDeletableState
-
NoTerminateInstancesNotSupported
-
UnauthorizedOperation
-
unexpectedError
ExceededInstantFleetNumForDeletion
のトラブルシューティング
1 回のリクエストで 25 個 を超える instant
フリートを削除しようとすると、ExceededInstantFleetNumForDeletion
エラーが返されます。このエラーの出力例を次に示します。
{ "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
のトラブルシューティング
フリートを削除するときに instant
フリート内のインスタンスを終了しないように指定した場合、NoTerminateInstancesNotSupported
エラーが返されます。--no-terminate-instances
は instant
フリートではサポートされていません。このエラーの出力例を次に示します。
{ "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>
エラーを解決するには、次の例に示すように、ec2:TerminateInstances
アクションを IAM ポリシーに追加する必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeleteFleetsAndTerminateInstances", "Effect": "Allow", "Action": [ "ec2:DeleteFleets" "ec2:TerminateInstances" ], "Resource": "*" } ] }