

# スポットフリートを作成する
<a name="create-spot-fleet"></a>

AWS マネジメントコンソールを使用すると、AMI と、必要な合計のターゲットキャパシティのみを選択して、スポットフリートリクエストをすばやく作成することができます。Amazon EC2 は、ユーザーのニーズに最も適したフリートを設定し、スポットのベストプラクティスに従います。あるいは、デフォルト設定のいずれかを変更することができます。

フリートにオンデマンドインスタンスを含める場合は、リクエストで起動テンプレートを指定し、希望するオンデマンドキャパシティを指定する必要があります。

フリートは、キャパシティが使用可能であるときはオンデマンドインスタンスを起動し、最大料金がスポット料金を超えていてキャパシティが使用可能であるときはスポットインスタンスを起動します。

フリートにスポットインスタンスが含まれ、タイプが `maintain` である場合、Amazon EC2 はスポットインスタンスが中断したときにフリートのターゲットキャパシティを維持しようとします。

**必要なアクセス許可**  
詳細については、「[スポットフリートアクセス許可](spot-fleet-prerequisites.md)」を参照してください。

**Topics**
+ [スポットフリートリクエストをすばやく作成する](#create-spot-fleet-quick)
+ [定義済みパラメータを使用してスポットフリートリクエストを作成する](#create-spot-fleet-advanced)
+ [異常なスポットインスタンスを置き換えるスポットフリートを作成する](#spot-fleet-health-checks)

## スポットフリートリクエストをすばやく作成する
<a name="create-spot-fleet-quick"></a>

Amazon EC2 でスポットフリートリクエストをすばやく作成するには、次の手順に従います。

**推奨設定を使用してスポットフリートリクエストを作成するには**

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [**Get started**] を選択してください。それ以外の場合は、**[スポットフリートリクエストの作成]** を選択します。

1. **[Launch parameters]** (起動パラメータ) で、**[Manually configure launch parameters]** (起動パラメータを手動で構成する) を選択してください。

1. **AMI** で、AMI を選択してください。

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

1. **[フリートリクエストの概要]** で、フリートの設定を確認し、**[起動]** を選択してください。

## 定義済みパラメータを使用してスポットフリートリクエストを作成する
<a name="create-spot-fleet-advanced"></a>

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

------
#### [ Console ]

**定義済みパラメータを使用してスポットフリートリクエストを作成するには**

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [**Get started**] を選択してください。それ以外の場合は、**[スポットフリートリクエストの作成]** を選択します。

1. **[起動パラメータ]** では、以下のように、起動パラメータを手動で設定することも、起動テンプレートを使用することもできます。

   1. [手動設定] Amazon EC2 コンソールで起動パラメータを定義するには、**[起動パラメータを手動で構成する]** を選択し、以下の手順を実行します。

      1. **[AMI]** で、AWS が提供する基本 AMI のいずれかを選択してください。あるいは、**[Search for AMI]** (AMI を検索) をクリックして、ユーザーコミュニティの AMI、AWS Marketplace、または独自の AMI を選択することも可能です。
**注記**  
起動パラメータで指定された AMI が登録解除または無効になっている場合、AMI から新しいインスタンスを起動することはできません。ターゲット容量を維持するように設定されたフリートの場合、ターゲット容量は維持されません。

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

         [既存のキーペア] キーペアを選択してください。

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

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

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

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

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

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

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

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

            [既存のセキュリティグループ] 1 つ以上のセキュリティグループを選択してください。

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

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

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

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

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

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

   1. [起動テンプレート] 起動テンプレートで作成した設定を使用するには、**[起動テンプレートの使用]** を選択し、**[起動テンプレート]** で起動テンプレートを選択してください。
**注記**  
スポットフリートでオンデマンドキャパシティが必要な場合は、起動テンプレートを指定する必要があります。

1. [Additional request details] で、以下を実行します｡****

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

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

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

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

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

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

   1. **[Total target capacity]** (総ターゲット容量) で、ターゲット容量にリクエストする単位数を指定します。ユニットのタイプには、**[Instances]** (ユニット)、**[vCPU]**、または **[Memory (MiB)]** (メモリ (MiB)) を選択できます。ターゲットキャパシティを 0 に指定して後でキャパシティを追加できるようにするには、**[ターゲット容量を維持する]** を選択する必要があります。

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

   1. (オプション) デフォルトでは、Amazon EC2 は中断されるとスポットインスタンスを削除します。ターゲット容量を維持するには、[ターゲット容量を維持する] を選択してください。****これで、中断時に Amazon EC2 がスポットインスタンスを終了、停止、または休止するように指定できます。これを行うには、[Interruption behavior] から対応するオプションを選択してください。****
**注記**  
起動パラメータで指定された AMI が登録解除または無効になっている場合、AMI から新しいインスタンスを起動することはできません。この場合、ターゲットキャパシティを維持するようにフリートが設定されていても、ターゲットキャパシティは維持されません。

   1. (オプション) フリートの既存スポットインスタンスにインスタンスの再調整の通知が発行されたときに、スポットフリートが代替スポットインスタンスを起動できるようにするには、**[Capacity rebalance]** (容量の再調整) を選択し、インスタンス置換戦略を選択してください。**[終了前に起動]** を選択した場合、Amazon EC2 が古いインスタンスを終了させるまでの遅延時間 (秒単位) を指定します。詳細については、「[EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md)」を参照してください。

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

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

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

      [既存の VPC] VPC を選択してください。

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

   1. (オプション) **[アベイラビリティーゾーン]** では、自分のアベイラビリティーゾーンに適したスポットインスタンスを Amazon EC2 に選択させるか、自分で 1 つ以上のアベイラビリティーゾーンを指定します。

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

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

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

      1. **[vCPUs]** に、希望する vCPU の最小数と最大数を入力してください。制限なしを指定するには、**[最小値なし]**、**[最大値なし]**、またはその両方を選択してください。

      1. **[Memory (GiB)]** (メモリ (GiB)) に、希望する最小値と最大値を入力してください。制限なしを指定するには、**[最小値なし]**、**[最大値なし]**、またはその両方を選択してください。

      1. (オプション) **[追加のインスタンス属性]** では、必要に応じて 1 つ以上の属性を指定して、コンピューティング要件を詳細に表現できます。追加の属性はリクエストにさらに制約を追加します。追加の属性は省略できます。省略すると、デフォルト値が使用されます。各属性およびそのデフォルト値の説明については、Amazon EC2 コマンドラインリファレンスの [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html).を参照してください。

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

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

1. **[配分戦略]** では、ニーズを満たすスポット配分戦略とオンデマンド配分戦略を選択してください。詳細については、「[配分戦略を使用して、EC2 フリートまたはスポットフリートがどのようにスポットキャパシティとオンデマンドキャパシティを満たすかを決定します。](ec2-fleet-allocation-strategy.md)」を参照してください。

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

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

1. スポットフリートを起動する準備が整ったら、**[起動]** を選択してください。

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

------
#### [ 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
```

設定ファイルの例については、「[スポットフリートの CLI 設定の例](spot-fleet-examples.md)」を参照してください。

------
#### [ PowerShell ]

**スポットフリートリクエストを作成するには**  
[Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) コマンドレットを使用します。次の例では、キャパシティ最適化フリートでスポットインスタンスを起動します。

```
Request-EC2SpotFleet `
    -SpotFleetRequestConfig_TargetCapacity 50 `
    -SpotFleetRequestConfig_AllocationStrategy "CapacityOptimized" `
    -SpotFleetRequestConfig_IamFleetRole "arn:aws:iam::123456789012:role/my-spot-fleet-role" `
    -SpotFleetRequestConfig_LaunchTemplateConfig @($launchConfig)
```

起動設定を次のように定義し、起動テンプレートを設定し、必要なプロパティを上書きします。設定例については[スポットフリートの CLI 設定の例](spot-fleet-examples.md)を参照してください。

```
$lcSpec = Amazon.EC2.Model.FleetLaunchTemplateSpecification
# To do - Set FleetLaunchTemplateSpecification properties
$lcOverrides = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
# To do - Set LaunchTemplateOverrides properties
$launchConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchConfig.LaunchTemplateSpecification $lcSpec
$launchConfig.Overrides @($lcOverrides)
```

------

## 異常なスポットインスタンスを置き換えるスポットフリートを作成する
<a name="spot-fleet-health-checks"></a>

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

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

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

**要件**
+ ヘルスチェックによる置き換えは、1 回限りの スポットフリート (`maintain` のフリート) ではなく、ターゲットキャパシティを維持しているスポットフリート (タイプ `request` のフリート) でのみサポートされます。
+ ヘルスチェックによる置き換えは、スポットインスタンス でのみサポートされます。この機能は オンデマンドインスタンス ではサポートされていません。
+ 作成時のみ、異常なインスタンスを置き換えるようスポットフリートを設定できます。
+ ユーザーは、`ec2:DescribeInstanceStatus` アクションを呼び出す許可を持っている場合のみ、ヘルスチェックの置き換えを使用できます。

------
#### [ Console ]

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

1. [定義済みパラメータを使用してスポットフリートリクエストを作成する](#create-spot-fleet-advanced) の手順に従ってスポットフリートを作成します。

1. 異常なスポットインスタンスを置き換えるようにフリートを設定するには、**[追加の起動パラメータ]** を展開し、**[ヘルスチェック]** で、**[異常なインスタンスを置き換える]** を選択してください。このオプションを有効にするには、まず **[Maintain target capacity]**(ターゲット容量の維持) を選択する必要があります。

------
#### [ AWS CLI ]

**異常なスポットインスタンスは置き換えるようにスポットフリートを設定するには**  
[request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) コマンドを `SpotFleetRequestConfig` の `ReplaceUnhealthyInstances` プロパティと共に使用します。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "lowestPrice",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "TargetCapacity": 10,
        "ReplaceUnhealthyInstances": true
    }
}
```

------
#### [ PowerShell ]

**異常なスポットインスタンスは置き換えるようにスポットフリートリクエストを設定するには**  
[Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) コマンドレットを `-SpotFleetRequestConfig_ReplaceUnhealthyInstance` パラメータと共に使用します。

```
-SpotFleetRequestConfig_ReplaceUnhealthyInstance $true
```

------