

# クラスタープレイスメントグループでのキャパシティ予約の操作
<a name="cr-cpg"></a>

クラスタープレイスメントグループでキャパシティ予約を作成して、ワークロードの Amazon EC2 コンピューティング性能を予約できます。クラスタープレイスメントグループは、ネットワークレイテンシーが低く、ネットワークスループットが高いという利点があります。

クラスタープレイスメントグループでキャパシティ予約を作成すると、必要なときに、必要な期間中、クラスタープレイスメントグループのコンピューティング性能に確実にアクセスできるようになります。これは、コンピューティングのスケーリングを必要とする高パフォーマンス (HPC) ワークロードのキャパシティを予約するのに最適です。これにより、キャパシティを使用できる状態を維持しながらクラスターをスケールダウンできるため、必要に応じて再びスケールアップすることができます。

クラスタープレイスメントグループでキャパシティ予約を作成したら、他の AWS アカウントと共有できます。詳細については、「[クラスタープレイスメントグループでのキャパシティ予約の共有](#cpg-cr-sharing)」を参照してください。

**Topics**
+ [制限事項](#cr-cpg-limitations)
+ [クラスタープレイスメントグループでのキャパシティ予約の操作](#work-with-crs-cpgs)
+ [クラスタープレイスメントグループでのキャパシティ予約の共有](#cpg-cr-sharing)

## 制限事項
<a name="cr-cpg-limitations"></a>

クラスタープレイスメントグループでキャパシティ予約を作成する場合は、以下の点を常に考慮します。
+ 既存のキャパシティ予約がプレイスメントグループにない場合は、キャパシティ予約を変更してプレイスメントグループ内でキャパシティを予約することはできません。プレイスメントグループでキャパシティを予約するには、プレイスメントグループでキャパシティ予約を作成する必要があります。
+ プレイスメントグループでキャパシティ予約を作成した後、プレイスメントグループ外のキャパシティを予約するように変更することはできません。
+ プレイスメントグループの既存のキャパシティ予約を変更するか、プレイスメントグループに追加のキャパシティ予約を作成して、プレイスメントグループのリザーブドキャパシティを増やすことができます。ただし、容量不足エラーが発生する可能性が高くなります。
+ キャパシティ予約は所有しているクラスタープレイスメントグループからのみ共有できます。キャパシティ予約は所有していないクラスタープレイスメントグループから共有することはできません。
+ `active` 容量予約を持つクラスタープレイスメントグループは削除できません。クラスタープレイスメントグループ内のすべての容量予約を削除する前に、それらをキャンセルする必要があります。

## クラスタープレイスメントグループでのキャパシティ予約の操作
<a name="work-with-crs-cpgs"></a>

クラスタープレイスメントグループでキャパシティ予約の使用を開始するには、次のステップを実行します。

**注記**  
既存のクラスタープレイスメントグループでキャパシティ予約を作成する場合は、ステップ 1 をスキップします。次に、ステップ 2 と 3 で、既存のクラスタープレイスメントグループの ARN を指定します。

**Topics**
+ [ステップ 1: (*条件付き*) キャパシティ予約で使用するクラスタープレイスメントグループを作成する](#create-cpg)
+ [ステップ 2: クラスタープレイスメントグループでキャパシティ予約を作成する](#create-cr-in-cpg)
+ [ステップ 3: クラスタープレイスメントグループ内のキャパシティ予約にインスタンスを起動する](#launch-instance-into-cpg)

### ステップ 1: (*条件付き*) キャパシティ予約で使用するクラスタープレイスメントグループを作成する
<a name="create-cpg"></a>

このステップは、新しいクラスタープレイスメントグループを作成する必要がある場合にのみ実行します。既存のクラスタープレイスメントグループを使用する場合は、このステップをスキップし、ステップ 2 と 3 で、そのクラスタープレイスメントグループの ARN を使用します。

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

**クラスタープレイスメントグループを作成するには**

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

1. ナビゲーションペインで、**[Placement Groups]** (プレイスメントグループ)、**[Create placement group]** (プレイスメントグループの作成) の順に選択してください。

1. **[Name]** (名前) で、プレイスメントグループのわかりやすい名前を指定します。

1. **[Placement strategy]** (プレイスメント戦略) で、**[Cluster]** (クラスター) を選択してください。

1. **[グループの作成]** を選択してください。

1. **[プレイスメントグループ]** テーブルの **[グループ ARN]** 列で、作成したクラスタープレイスメントグループの ARN を書き留めます。これは次のステップで必要になります。

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

**クラスタープレイスメントグループを作成するには**  
[create-placement-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-placement-group.html) コマンドを使用します。

```
aws ec2 create-placement-group \
    --group-name MyPG \
    --strategy cluster
```

出力で返されるプレイスメントグループ ARN は次のステップで必要となるので、メモしておいてください。

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

**クラスタープレイスメントグループを作成するには**  
[New-EC2PlacementGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2PlacementGroup.html) コマンドレットを使用します。

```
New-EC2PlacementGroup `
    -GroupName my-placement-group `
    -Strategy "cluster"
```

出力で返されるプレイスメントグループ ARN は次のステップで必要となるので、メモしておいてください。

------

### ステップ 2: クラスタープレイスメントグループでキャパシティ予約を作成する
<a name="create-cr-in-cpg"></a>

キャパシティ予約を作成するのと同じ方法で、クラスタープレイスメントグループでキャパシティ予約を作成します。ただし、キャパシティ予約を作成するクラスタープレイスメントグループの ARN も指定する必要があります。

**考慮事項**
+ 指定したクラスタープレイスメントグループは `available` 状態になっている必要があります。クラスタープレイスメントグループが `pending`、`deleting`、または `deleted` 状態になっていると、リクエストは失敗します。
+ キャパシティ予約とクラスタープレイスメントグループが同じアベイラビリティーゾーンに存在している必要があります。キャパシティ予約を作成するリクエストで、クラスタープレイスメントグループのアベイラビリティーゾーンとは異なるアベイラビリティーゾーンが指定されている場合、リクエストは失敗します。
+ キャパシティ予約は、クラスタープレイスメントグループでサポートされているインスタンスタイプに対してのみ作成できます。サポートされていないインスタンスタイプを指定すると、リクエストは失敗します。
+ クラスタープレイスメントグループで `open` キャパシティ予約を作成し、一致する属性 (プレイスメントグループ ARN、インスタンスタイプ、アベイラビリティーゾーン、プラットフォーム、テナンシー) を持つ既存の実行中のインスタンスがある場合、それらのインスタンスはキャパシティ予約で自動的に実行されます。
+ 次のいずれかが当てはまる場合、キャパシティ予約を作成するリクエストは失敗する可能性があります。
  + Amazon EC2 には、リクエストに対応する十分なキャパシティ－がありません。時間をおいてからもう一度試すか、別のアベイラビリティーゾーンを試すか、キャパシティ－を小さくしてみてください。インスタンスタイプとサイズに応じてワークロードに柔軟性がある場合は、別のインスタンス属性を試してみてください。
  + リクエストされた数量は、選択したインスタンスファミリーに対するオンデマンドインスタンスの上限を超えています。インスタンスファミリーに対するオンデマンドインスタンスの上限を上げて、もう一度試してください。詳細については、「[オンデマンドインスタンスクォータ](ec2-on-demand-instances.md#ec2-on-demand-instances-limits)」を参照してください。

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

**キャパシティ予約を作成するには**

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

1. [**キャパシティ予約**]、[**作成キャパシティ予約**] の順に選択してください。

1. **[キャパシティ予約を作成]** ページで、必要に応じてインスタンスタイプ、プラットフォーム、アベイラビリティーゾーン、テナンシー、数量、および終了日を指定します。

1. **[プレイスメントグループ]** で、キャパシティ予約が作成されるクラスタープレイスメントグループの ARN を選択してください。

1. [**Create**] (作成) を選択してください。

詳細については、「[キャパシティ予約の作成](capacity-reservations-create.md)」を参照してください。

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

**キャパシティ予約を作成するには**  
[create-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html) コマンドを使用します。`--placement-group-arn` で、キャパシティ予約が作成されるクラスタープレイスメントグループの ARN を指定します。

```
aws ec2 create-capacity-reservation \
    --instance-type instance_type \
    --instance-platform platform \
    --availability-zone-id az_id \
    --instance-count quantity \
    --placement-group-arn "placement_group_arn"
```

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

**キャパシティ予約を作成するには**  
[Add-EC2CapacityReservation](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2CapacityReservation.html) コマンドレットを使用します。`-PlacementGroupArn` で、キャパシティ予約が作成されるクラスタープレイスメントグループの ARN を指定します。

```
Add-EC2CapacityReservation `
    -InstanceType instance_type `
    -InstancePlatform platform `
    -AvailabilityZoneId az_id `
    -InstanceCount quantity `
    -PlacementGroupArn "placement_group_arn"
```

------

### ステップ 3: クラスタープレイスメントグループ内のキャパシティ予約にインスタンスを起動する
<a name="launch-instance-into-cpg"></a>

次のいずれかの方法により、クラスタープレイスメントグループにあるキャパシティ予約にインスタンスを起動できます。
+ *インスタンスを起動するクラスタープレイスメントグループの ARN の指定* – クラスタープレイスメントグループの ARN を指定すると、Amazon EC2 はそのクラスタープレイスメントグループにインスタンスを起動します。次のいずれかの方法を使用します。
  + *`open` の指定* — インスタンスの起動リクエストでキャパシティ予約を指定する必要はありません。インスタンスに、指定したプレイスメントグループのキャパシティ予約に一致する属性 (プレイスメントグループ ARN、インスタンスタイプ、アベイラビリティーゾーン、プラットフォーム、テナンシー) がある場合、インスタンスはキャパシティ予約で自動的に実行されます。
  + *キャパシティ予約の指定* – キャパシティ予約によってターゲットされたインスタンスの起動のみが受け入れられた場合、リクエストでクラスタープレイスメントグループに加えてターゲットのキャパシティ予約を指定する必要があります。
  + *キャパシティ予約グループの指定* – 詳細については、「[Using Capacity Reservation in cluster placement groups with a Capacity Reservation group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cpg-odcr-crg.html)」を参照してください。
+ *キャパシティ予約グループのみの指定* – 詳細については、「[Using Capacity Reservation in cluster placement groups with a Capacity Reservation group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cpg-odcr-crg.html)」を参照してください。
+ *キャパシティ予約のみの指定* – クラスタープレイスメントグループ内のキャパシティ予約にインスタンスを起動できます。
**注記**  
キャパシティ予約のみまたはキャパシティ予約グループのみを指定してインスタンスを起動すると、インスタンスはクラスタープレイスメントグループで作成されたキャパシティ予約に起動されますが、インスタンスはクラスタープレイスメントグループには直接アタッチされません。

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

**既存のキャパシティ予約でインスタンスを起動するには**

1. 手順に従って[インスタンスを起動](ec2-launch-instance-wizard.md)しますが、次のステップを完了してプレイスメントグループとキャパシティ予約の設定を指定するまでインスタンスを起動しないでください。

1. **[高度な詳細]** を展開し、以下の操作を行います。

   1. **[プレイスメントグループ]** で、インスタンスを起動するクラスタープレイスメントグループを選択してください。

   1. **[Capacity Reservation]** (キャパシティ予約) で、キャパシティ予約の設定に応じて、次のいずれかのオプションを選択してください。
      + **[開く]** — 一致する属性と十分なキャパシティを持つ、クラスタープレイスメントグループの `open` キャパシティ予約でインスタンスを起動します。
      + **[ID 別のターゲット]** — ターゲットインスタンスの起動のみを受け入れるキャパシティ予約でインスタンスを起動します。
      + **[グループ別のターゲット]** — 選択したキャパシティ予約グループ内で一致する属性と使用可能なキャパシティを持つ任意のキャパシティ予約にインスタンスを起動します。

1. **[Summary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については、「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

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

**既存のキャパシティ予約でインスタンスを起動するには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。特定のキャパシティ予約またはキャパシティ予約グループをターゲットにする必要がある場合は、`--capacity-reservation-specification` パラメータを指定します。`--placement` で、`GroupName` パラメータを指定し、前のステップで作成したプレイスメントグループの名前を指定します。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count quantity \
    --instance-type instance_type \
    --key-name key_pair_name \
    --subnet-id subnet-0abcdef1234567890 \
    --capacity-reservation-specification CapacityReservationTarget={CapacityReservationId=capacity_reservation_id} \
    --placement "GroupName=cluster_placement_group_name"
```

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

**既存のキャパシティ予約でインスタンスを起動するには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用します。`-Placement` で、`GroupName` パラメータを指定し、前のステップで作成したプレイスメントグループの名前を指定します。

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType instance_type `
    -KeyName key_pair_name `
    -SubnetId subnet-0abcdef1234567890 `
    -CapacityReservationTarget_CapacityReservationId capacity_reservation_id `
    -Placement_GroupName cluster_placement_group_name
```

------

## クラスタープレイスメントグループでのキャパシティ予約の共有
<a name="cpg-cr-sharing"></a>

キャパシティ予約のみを共有するか、キャパシティ予約とそれらが作成されたクラスタープレイスメントグループの両方を共有することで、クラスタープレイスメントグループでキャパシティ予約を共有できます。

キャパシティ予約のみを共有することで、そのキャパシティ予約に対してのみコンシューマーアカウントにアクセスを許可します。コンシューマーアカウントは、キャパシティ予約が作成されたクラスタープレイスメントグループの表示またはアクセスすることはできません。コンシューマーアカウントによるアクセスをきめ細かく制御できます。コンシューマーアカウントには、ARN を含むクラスタープレイスメントグループに関する情報が表示されません。

クラスタープレイスメントグループおよびキャパシティ予約を共有すると、クラスタープレイスメントグループはコンシューマーアカウントに表示およびアクセスできるようになります。インスタンスを起動したり、独自のキャパシティ予約を作成したりすることができます。

詳細については、以下のリソースを参照してください。
+ [クラスタープレイスメントグループ内のキャパシティ予約にインスタンスを起動する](#launch-instance-into-cpg)
+ [共有キャパシティ予約](capacity-reservation-sharing.md)
+ [共有プレイスメントグループ](share-placement-group.md)