チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する
このチュートリアルでは実行するべきステップを段階的に解説しています。それにより、EC2 フリートがオンデマンドインスタンスをtargeted
キャパシティー予約で起動できるようにします。
オンデマンドインスタンスの起動時に、最初にtargeted
オンデマンドキャパシティー予約を使用するようにフリートを設定する方法を学習します。また、オンデマンドターゲット容量の合計が使用可能な未使用のキャパシティ予約数を超えた場合、フリートは指定された割り当て戦略を使用して、残りのターゲット容量を起動するインスタンスプールを選択するようにフリートを設定する方法についても学習します。
EC2 フリートの設定
このチュートリアルでは、フリートは次のように設定されます。
-
ターゲット容量:10 オンデマンドインスタンス
-
未使用の合計
targeted
キャパシティー予約:6 (フリートの目標オンデマンド容量である 10 オンデマンドインスタンスを下回っています) -
キャパシティ予約のプールの数:2 (
us-east-1a
およびus-east-1b
) -
プールあたりのキャパシティ予約数:3
-
オンデマンド割り当て戦略:
lowest-price
(未使用キャパシティーの予約の数が目標オンデマンド容量より少ない場合、フリートは、オンデマンド配分戦略に基づいて、残りのオンデマンド容量を起動するプールを決定します)。また、
lowest-price
割り当て戦略の代わりにprioritized
割り当て戦略を使用することもできます。
targetedキャパシティ予約にオンデマンドインスタンスを起動するには、次のように、いくつかの手順を実行する必要があります:
ステップ 1: キャパシティー予約を作成する
キャパシティー予約の作成コマンドを使用してキャパシティ予約を作成します。3 つはus-east-1a
の目的に、別の3つはus-east-1b
の目的にします。アベイラビリティーゾーンを除き、キャパシティー予約の他の属性は同じです。
us-east-1a
での 3 つのキャパシティー予約
aws ec2 create-capacity-reservation \ --availability-zone us-east-1a \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted
キャパシティー予約 ID の結果の例
cr-1234567890abcdef1
us-east-1b
での 3 つのキャパシティー予約
aws ec2 create-capacity-reservation \ --availability-zone us-east-1b \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted
キャパシティー予約 ID の結果の例
cr-54321abcdef567890
ステップ 2: キャパシティー予約のリソースグループを作成する
resource-groups
サービスを使用する、およびグループを作成するコマンドを使用して、キャパシティー予約のリソースグループを作成します。この例では、プレイスメントグループ名はmy-cr-group
です。リソースグループを作成する必要がある理由の詳細については、キャパシティ予約を使用して、EC2 フリートのオンデマンドキャパシティを予約するを参照してください。
aws resource-groups create-group \ --name
my-cr-group
\ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'
ステップ 3: キャパシティ予約リソースグループにキャパシティ予約を追加する
resource-groups
サービス、およびグループリソースコマンドを使用して、手順 1 で作成したキャパシティ予約をキャパシティ予約リソースグループに追加します。オンデマンドキャパシティ予約は、ARN ごとに参照する必要があります。
aws resource-groups group-resources \ --group
my-cr-group
\ --resource-arns \ arn:aws:ec2:us-east-1
:123456789012
:capacity-reservation/cr-1234567890abcdef1
\ arn:aws:ec2:us-east-1
:123456789012
:capacity-reservation/cr-54321abcdef567890
出力例
{
"Failed": [],
"Succeeded": [
"arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1",
"arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
]
}
(オプション) ステップ 4: リソースグループのキャパシティーの予約を表示する
resource-groups
サービス、およびグループリソースを表示するコマンドを使用して、キャパシティ予約を表示するリソースグループをオプションで記述します。
aws resource-groups list-group-resources --group
my-cr-group
出力例
{
"ResourceIdentifiers": [
{
"ResourceType": "AWS::EC2::CapacityReservation",
"ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1"
},
{
"ResourceType": "AWS::EC2::CapacityReservation",
"ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
}
]
}
ステップ 5: キャパシティ予約が特定のリソースグループをターゲットに指定する起動テンプレートを作成する
起動テンプレートを作成するコマンドを使用して、使用するキャパシティー予約を指定する起動テンプレートを作成します。この例では、フリートはtargeted
キャパシティー予約を使用して、ソースグループに追加されます。したがって、起動テンプレートデータでは、キャパシティ予約が特定のリソースグループをターゲットに指定します。次の例で、プレイスメントグループ名はmy-launch-template
です。
aws ec2 create-launch-template \ --launch-template-name
my-launch-template
\ --launch-template-data \ '{"ImageId": "ami-0123456789example
", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1
:123456789012
:group/my-cr-group
" } } }'
(オプション) ステップ 6: 起動テンプレートを説明する
describe-launch-template-versions コマンドを使用して、オプションで、その設定を表示するための起動テンプレートを説明します。
aws ec2 describe-launch-template-versions --launch-template-name
my-launch-template
出力例
{
"LaunchTemplateVersions": [
{
"LaunchTemplateId": "lt-01234567890example",
"LaunchTemplateName": "my-launch-template",
"VersionNumber": 1,
"CreateTime": "2021-01-19T20:50:19.000Z",
"CreatedBy": "arn:aws:iam::123456789012:user/Admin",
"DefaultVersion": true,
"LaunchTemplateData": {
"ImageId": "ami-0947d2ba12ee1ff75",
"CapacityReservationSpecification": {
"CapacityReservationTarget": {
"CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group"
}
}
}
}
]
}
ステップ 7: EC2 フリートを作成する
起動するインスタンスの設定情報を指定する EC2 フリートを作成します。以下の EC2 フリート設定は、この例に関連する設定のみを示しています。起動テンプレートmy-launch-template
は、ステップ 5 で作成した起動テンプレートです。2 つのインスタンスプールがあり、それぞれ同じインスタンスタイプ (c5.xlarge
)ですが、異なるアベイラビリティーゾーン (us-east-1a
およびus-east-1b
)にあります。料金は、アベイラビリティーゾーンごとではなく、リージョンに対して定義されるため、インスタンスプールの料金は同じです。合計ターゲット容量は 10 で、デフォルトのターゲット容量タイプはon-demand
です。オンデマンド配分戦略はlowest-price
です。キャパシティ予約の使用戦略はuse-capacity-reservations-first
です。
注記
フリートタイプはinstant
である必要があります。他のフリートタイプはuse-capacity-reservations-first
をサポートしていません。
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "
my-launch-template
", "Version": "1" }, "Overrides": [ { "InstanceType": "c5.xlarge
", "AvailabilityZone": "us-east-1a
" }, { "InstanceType": "c5.xlarge
", "AvailabilityZone": "us-east-1b
" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity":10
, "DefaultTargetCapacityType": "on-demand
" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price
", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }
上記の設定を使用してinstant
フリートを作成すると、目標容量を満たすために以下の 10 個のインスタンスが起動されます。
-
次のように、6 つのオンデマンドインスタンスを起動するために、キャパシティ予約が最初に使用されます。
-
3 つのオンデマンドインスタンスが、
us-east-1a
での 3 つのc5.xlarge
targeted
キャパシティー予約で起動します。 -
3 つのオンデマンドインスタンスが、
us-east-1b
での 3 つのc5.xlarge
targeted
キャパシティー予約で起動します。
-
-
ターゲット容量を満たすために、4 つの追加のオンデマンドインスタンスは、オンデマンド配分戦略 (この例では
lowest-price
) に従って通常のオンデマンド容量で起動します。ただし、プールの価格は同じであるため (価格はアベイラビリティーゾーンごとではなく、リージョンごとであるため)、フリートは残りの 4 つのオンデマンドインスタンスをいずれかのプールで起動します。
(オプション) ステップ 8: 未使用のキャパシティ予約の残りの数を表示する
フリートの起動後、describe-capacity-reservations を実行して、未使用のキャパシティー予約の残りの数を確認できます。この例では、以下のレスポンスが表示されます。これは、すべてのプール内のすべてのキャパシティ予約が使用されたことを示しています。
{ "CapacityReservationId": "cr-111",
"InstanceType": "c5.xlarge",
"AvailableInstanceCount": 0
}
{ "CapacityReservationId": "cr-222",
"InstanceType": "c5.xlarge",
"AvailableInstanceCount": 0
}