

# スポットプレイスメントスコアを計算する
<a name="work-with-spot-placement-score"></a>

スポットプレイスメントスコアはターゲット容量とコンピューティング要件に基づいて計算できます。詳細については「[スポットプレイスメントスコアの仕組み](how-sps-works.md)」を参照してください。

**必要な アクセス許可**  
必要なアクセス許可を持っていることを確認してください。詳細については「[スポットプレイスメントスコアに必要なアクセス許可](sps-iam-permission.md)」を参照してください。

**Topics**
+ [インスタンス属性を使用して計算する](#sps-specify-instance-attributes-console)
+ [インスタンスタイプを使用して計算する](#sps-specify-instance-types-console)
+ [AWS CLI を使用して計算する](#calculate-sps-cli)

**自動化ソリューションが必要な場合は** このユーザーガイドの手動ステップに従うのではなく、スポットプレースメントスコアトラッカーダッシュボードを構築します。スコアを自動的にキャプチャして Amazon CloudWatch に保存できます。詳細については「[Guidance for Building a Spot Placement Score Tracker Dashboard on AWS](https://aws.amazon.com/solutions/guidance/building-a-spot-placement-score-tracker-dashboard-on-aws/)」を参照してください。

## インスタンス属性を使用して計算する
<a name="sps-specify-instance-attributes-console"></a>

**インスタンス属性を指定してスポットプレイスメントスコアを計算するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. **[スポットインスタンスのリクエスト]** の横にある下矢印を選択してから、**[スポットプレイスメントスコアの計算]** を選択してください。

1. **[Enter requirements]** (要件の入力) を選択してください。

1. [**Target capacity**] (ターゲット容量) には希望する容量を**インスタンス**数や **vCPU **数、または**メモリ量 (MiB) **で入力してください。

1. [**Instance type requirements**] (インスタンスタイプの要件) ではコンピューティング要件を指定し、Amazon EC2 にこれらの要件に最適なインスタンスタイプを識別させるために、[**Specify instance attributes that match your compute requirements**] (コンピューティング要件に一致するインスタンス属性を指定) を選択してください。

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

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

1. **[CPU architecture]** (CPU アーキテクチャ) では必要なインスタンスアーキテクチャを選択してください。

1. (オプション) **[Additional instance attributes]** (その他のインスタンス属性) ではオプションで 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. **[Load placement scores]** (プレイスメントスコアのロード) を選択し、結果を確認します。

1. (オプション) 特定のリージョンのスポットプレイスメントスコアを表示するには**[Regions to evaluate]** (評価するリージョン) で、評価するリージョンを選択し、**[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

1. (オプション) 表示されたリージョンにアベイラビリティーゾーンのスポット配置スコアを表示するには**[アベイラビリティーゾーンごとの配置スコアを表示]** のチェックボックスをオンにします。スコアリングされたアベイラビリティーゾーンのリストはすべてのスポット容量を 1 つのアベイラビリティーゾーンで起動する場合に便利です。

1. (オプション) コンピューティング要件を編集して新しいプレイスメントスコアを取得するには**[Edit]** (編集) を選択し、必要な調整を行った後、**[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

## インスタンスタイプを使用して計算する
<a name="sps-specify-instance-types-console"></a>

**インスタンスタイプを指定してスポットプレイスメントスコアを計算するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. **[スポットインスタンスのリクエスト]** の横にある下矢印を選択してから、**[スポットプレイスメントスコアの計算]** を選択してください。

1. **[Enter requirements]** (要件の入力) を選択してください。

1. **[Target capacity]** (ターゲット容量) には希望する容量を**インスタンス**数や **vCPU **数、または**メモリ量 (MiB) **で入力してください。

1. **[Instance type requirements]** (インスタンスタイプの要件) では使用するインスタンスタイプを指定するため、**[Manually select instance types]** (手動でインスタンスタイプを選択する) を選択してください。

1. **[Select instance types]** (インスタンスタイプを選択) を選択し、使用するインスタンスタイプを選択してから**[Select]** (選択) を選択してください。インスタンスタイプをすばやく検索するにはフィルターバーを使用して、異なるプロパティでインスタンスタイプをフィルタリングできます。

1. **[Load placement scores]** (プレイスメントスコアのロード) を選択し、結果を確認します。

1. (オプション) 特定のリージョンのスポットプレイスメントスコアを表示するには**[Regions to evaluate]** (評価するリージョン) で、評価するリージョンを選択し、**[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

1. (オプション) 表示されたリージョンにアベイラビリティーゾーンのスポット配置スコアを表示するには**[アベイラビリティーゾーンごとの配置スコアを表示]** のチェックボックスをオンにします。スコアリングされたアベイラビリティーゾーンのリストはすべてのスポット容量を 1 つのアベイラビリティーゾーンで起動する場合に便利です。

1. (オプション）インスタンスタイプのリストを編集して新しいプレイスメントスコアを取得するには**[Edit]** (編集) を選択し、必要な調整を行ってから **[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

## AWS CLI を使用して計算する
<a name="calculate-sps-cli"></a>

**スポットプレイスメントスコアを計算するには**

1. (オプション) スポットプレイスメントスコアの設定で指定可能なすべてのパラメータを生成するには[get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) コマンドと `--generate-cli-skeleton` パラメータを使用します。

   ```
   aws ec2 get-spot-placement-scores \
       --region us-east-1 \
       --generate-cli-skeleton
   ```

   以下は出力の例です。

   ```
   {
       "InstanceTypes": [
           ""
       ],
       "TargetCapacity": 0,
       "TargetCapacityUnitType": "vcpu",
       "SingleAvailabilityZone": true,
       "RegionNames": [
           ""
       ],
       "InstanceRequirementsWithMetadata": {
           "ArchitectureTypes": [
               "x86_64_mac"
           ],
           "VirtualizationTypes": [
               "hvm"
           ],
           "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": "excluded",
               "BurstablePerformance": "excluded",
               "RequireHibernateSupport": true,
               "NetworkInterfaceCount": {
                   "Min": 0,
                   "Max": 0
               },
               "LocalStorage": "included",
               "LocalStorageTypes": [
                   "hdd"
               ],
               "TotalLocalStorageGB": {
                   "Min": 0.0,
                   "Max": 0.0
               },
               "BaselineEbsBandwidthMbps": {
                   "Min": 0,
                   "Max": 0
               },
               "AcceleratorTypes": [
                   "fpga"
               ],
               "AcceleratorCount": {
                   "Min": 0,
                   "Max": 0
               },
               "AcceleratorManufacturers": [
                   "amd"
               ],
               "AcceleratorNames": [
                   "vu9p"
               ],
               "AcceleratorTotalMemoryMiB": {
                   "Min": 0,
                   "Max": 0
               }
           }
       },
       "DryRun": true,
       "MaxResults": 0,
       "NextToken": ""
   }
   ```

1. 前のステップの出力を使用して JSON 設定ファイルを作成し、次のように設定します。

   1. `TargetCapacity` には希望するスポット容量をインスタンス数や vCPU 数、またはメモリ量 (MiB) で入力してください。

   1. `TargetCapacityUnitType` に、ターゲット容量の単位を入力してください。このパラメータを省略すると、デフォルトで `units` になります。

      有効な値:`units` (インスタンス数に変換されます) \$1 `vcpu` \$1 `memory-mib`

   1. スコアリングされたアベイラビリティーゾーンのリストを返すレスポンスのため、`SingleAvailabilityZone` に `true` を指定します。スコアリングされたアベイラビリティーゾーンのリストはすべてのスポット容量を 1 つのアベイラビリティーゾーンで起動する場合に便利です。このパラメータを省略すると、デフォルトで `false` となり、レスポンスはスコアリングされたリージョンのリストを返します。

   1. (オプション) `RegionNames` で、フィルターとして使用するリージョンを指定します。リージョンコードを指定する必要があります (例: `us-east-1`)。

      リージョンフィルターを使用すると、レスポンスは指定したリージョンのみを返します。`true` で `SingleAvailabilityZone` を指定した場合は指定したリージョンのアベイラビリティーゾーンのみを返します。

   1. 同じ設定に `InstanceTypes` または `InstanceRequirements` を含めることができますが、両方を含めることはできません。

      JSON 設定で、次のいずれかを指定します。
      + インスタンスタイプのリストを指定するには`InstanceTypes` パラメータでインスタンスタイプを指定します。少なくとも 3 つの異なるインスタンスタイプを指定します。1 つまたは 2 つのインスタンスタイプのみを指定した場合、スポットプレイスメントスコアは低スコアを返します。インスタンスタイプのリストについては[Amazon EC2 インスタンスタイプ](https://aws.amazon.com/ec2/instance-types/) を参照してください。
      + Amazon EC2 がこれらの属性に一致するインスタンスタイプを識別するように、インスタンスの属性を指定するには`InstanceRequirements` 構造内にある属性を指定します。

        `VCpuCount`、`MemoryMiB` および `CpuManufacturers` の値を指定する必要があります。その他の属性は省略できます。省略すると、デフォルト値が使用されます。各属性およびそのデフォルト値の説明についてはAmazon EC2 コマンドラインリファレンスの [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) を参照してください。

      設定例については[設定例](#sps-example-configs)を参照してください。

1. JSON ファイルで指定した条件のスポットプレイスメントスコアを取得するには[get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) コマンドを使用し、`--cli-input-json` パラメータで JSON ファイルの名前とパスを指定します。

   ```
   aws ec2 get-spot-placement-scores \
       --region us-east-1 \
       --cli-input-json file://file_name.json
   ```

   `SingleAvailabilityZone` が `false` に設定されているか、省略されている場合の出力例 (省略されている場合のデフォルトは `false`) – リージョンのスコアリングされたリストが返されます。

   ```
   "SpotPlacementScores": [
       {
           "Region": "us-east-1",
           "Score": 7
       },
       {
           "Region": "us-west-1",
           "Score": 5
       },  
      ...
   ```

   `SingleAvailabilityZone` が `true` に設定されている場合の出力例 – アベイラビリティーゾーンのスコアリストが返されます。

   ```
   "SpotPlacementScores": [
       {
           "Region": "us-east-1",
           "AvailabilityZoneId": "use1-az1",
           "Score": 8
       },
       {
           "Region": "us-east-1",
           "AvailabilityZoneId": "usw2-az3",
           "Score": 6
       },
      ...
   ```

### 設定例
<a name="sps-example-configs"></a>

AWS CLI を使用する場合、次の設定例を使用できます。

**Topics**
+ [例: インスタンスタイプとターゲット容量の指定](#example-config-instance-type-override)
+ [例: メモリの観点からインスタンスタイプとターゲット容量を指定する](#example-config-instance-type-memory-unit-override)
+ [例: 属性ベースのインスタンスタイプ選択の属性を指定する](#example-config-attribute-based-instance-type-selection)
+ [例: 属性ベースのインスタンスタイプ選択の属性を指定し、アベイラビリティーゾーンのスコアリストを返す](#example-config-sps-singleAZ)

#### 例: インスタンスタイプとターゲット容量の指定
<a name="example-config-instance-type-override"></a>

次の設定例では3 つの異なるインスタンスタイプと 500 スポットインスタンスのターゲットスポット容量を指定します。

```
{
    "InstanceTypes": [
        "m5.4xlarge",
        "r5.2xlarge",
        "m4.4xlarge"
    ], 
    "TargetCapacity": 500
}
```

#### 例: メモリの観点からインスタンスタイプとターゲット容量を指定する
<a name="example-config-instance-type-memory-unit-override"></a>

次の設定例では3 つの異なるインスタンスタイプとターゲットスポット容量 500,000 MiB のメモリを指定します。この場合、起動するスポットインスタンスの数は合計 500,000 MiB のメモリを提供する必要があります。

```
{
    "InstanceTypes": [
        "m5.4xlarge",
        "r5.2xlarge",
        "m4.4xlarge"
    ], 
    "TargetCapacity": 500000,
    "TargetCapacityUnitType": "memory-mib"
}
```

#### 例: 属性ベースのインスタンスタイプ選択の属性を指定する
<a name="example-config-attribute-based-instance-type-selection"></a>

次の設定例は属性ベースのインスタンスタイプ選択用に設定され、その後に設定例の説明が記載されています。

```
{
    "TargetCapacity": 5000,
    "TargetCapacityUnitType": "vcpu",
    "InstanceRequirementsWithMetadata": {
        "ArchitectureTypes": ["arm64"],
        "VirtualizationTypes": ["hvm"],
        "InstanceRequirements": {
            "VCpuCount": {
                "Min": 1,
                "Max": 12
            },
            "MemoryMiB": {
                "Min": 512
            }
        }
    }
}
```

****`InstanceRequirementsWithMetadata`****  
属性ベースのインスタンスタイプの選択を使用するには設定に `InstanceRequirementsWithMetadata` 構造を含め、スポットインスタンスに必要な属性を指定します。

前の例で、次の必須インスタンス属性を指定しています。
+ `ArchitectureTypes` – インスタンスタイプのアーキテクチャタイプは `arm64` である必要があります。
+ `VirtualizationTypes` – インスタンスタイプの仮想化タイプは `hvm` である必要があります。
+ `VCpuCount` – インスタンスタイプには1 個以上、最大 12 個の vCPU が必要です。
+ `MemoryMiB` – インスタンスタイプには最低 512 MiB のメモリが必要です。`Max` パラメータを省略した場合、上限がないことを示します。

指定できるオプションの属性は他にもいくつかあります。属性のリストについては「 コマンドラインリファレンス」の [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) を参照してください。

**`TargetCapacityUnitType`**  
`TargetCapacityUnitType` パラメータはターゲット容量の単位を指定します。この例ではターゲット容量が`5000`、ターゲット容量単位のタイプが `vcpu` となっており、合わせて 5000 vCPUの希望ターゲット容量が指定されており、起動するスポットインスタンスの数で合計 5000 vCPU を提供する必要があります。

#### 例: 属性ベースのインスタンスタイプ選択の属性を指定し、アベイラビリティーゾーンのスコアリストを返す
<a name="example-config-sps-singleAZ"></a>

次の設定例は属性ベースのインスタンスタイプ選択用に設定されています。`"SingleAvailabilityZone": true` を指定した場合、レスポンスはスコアリングされたアベイラビリティーゾーンのリストを返します。

```
{
    "TargetCapacity": 1000,
    "TargetCapacityUnitType": "vcpu",
    "SingleAvailabilityZone": true,
    "InstanceRequirementsWithMetadata": {
        "ArchitectureTypes": ["arm64"],
        "VirtualizationTypes": ["hvm"],
        "InstanceRequirements": {
            "VCpuCount": {
                "Min": 1,
                "Max": 12
            },
            "MemoryMiB": {
                "Min": 512
            }
        }
    }
}
```