AWS Command Line Interface (AWS CLI) によりスキップマッチングを有効にするインスタンス更新の例 - Amazon EC2 Auto Scaling

AWS Command Line Interface (AWS CLI) によりスキップマッチングを有効にするインスタンス更新の例

デフォルトでは、Amazon EC2 Auto Scaling は、インスタンスの更新時に Auto Scaling グループのインスタンスを置き換えることができます。スキップマッチングを有効にすることで、希望の設定が既にあるインスタンスを置き換えを防ぐことができます。

スキップマッチングによって、より効率的に

  • 1 つ以上のテストインスタンスを起動した後、起動設定からデフォルトまたは最新バージョンの起動テンプレートに移行します。

  • 不要なインスタンスタイプから、アプリケーションに適したインスタンスタイプに移行します。

  • 失敗またはキャンセルしたインスタンスの更新のパートとして、1 つ以上のインスタンスが置き換えられた後、変更をロールバックします。

注記

希望する設定に起動テンプレートが指定されていない限り、起動設定を使用する Auto Scaling グループの更新にスキップマッチング機能を使用することはできません。

以下のAWS CLIの例は、スキップ・マッチングの使用に関するいくつかのシナリオを示しています。これらのコマンドの実行中にエラーが発生する場合は、AWS CLI がローカルで最新バージョンに更新されていることを確認してください。

起動テンプレートのデフォルトバージョンへの移行

次の例は、Auto Scaling グループを起動テンプレートのデフォルトバージョンに更新するスタートインスタンスの更新コマンドを示しています。指定された起動テンプレートのデフォルトバージョンを既に使用しているインスタンスがある場合、それらは置き換えられません。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json の内容。

{ "AutoScalingGroupName": "my-asg", "DesiredConfiguration": { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "Version": "$Default" } }, "Preferences": { "SkipMatching": true } }

成功した場合、このコマンドはインスタンスの更新 ID を含む JSON レスポンスを返します。

起動テンプレートの最新バージョンへの移行

次の例は、Auto Scaling グループを起動テンプレートの最新バージョンに更新するスタートインスタンスの更新コマンドを示しています。指定された起動テンプレートの最新バージョンを既に使用しているインスタンスがある場合、それらは置き換えられません。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json の内容。

{ "AutoScalingGroupName": "my-asg", "DesiredConfiguration": { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "Version": "$Latest" } }, "Preferences": { "SkipMatching": true } }

成功した場合、このコマンドはインスタンスの更新 ID を含む JSON レスポンスを返します。

スキップマッチングと混合インスタンスグループ

混合インスタンスグループを更新するには、希望の設定で混合インスタンスポリシーの設定を指定する必要があります。希望の設定で指定されていない混合インスタンスポリシー パラメータの場合、Amazon EC2 Auto Scaling はパラメータ値をデフォルト値にリセットします。

起動テンプレートのデフォルトバージョンへの移行

次の例は、混合インスタンスグループを起動テンプレートのデフォルトバージョンに更新するスタートインスタンスの更新コマンドを示しています。指定された起動テンプレートのデフォルトバージョンを既に使用しているインスタンスがある場合、それらは置き換えられません。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json の内容。

{ "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-068f72b729example", "Version":"$Default" }, "Overrides":[ ... existing instance types ... ] }, "InstancesDistribution":{ "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"capacity-optimized" } } }, "Preferences":{ "SkipMatching":true } }

成功した場合、このコマンドはインスタンスの更新 ID を含む JSON レスポンスを返します。

起動テンプレートの最新バージョンへの移行

次の例は、混合インスタンスグループを起動テンプレートの最新バージョンに更新するスタートインスタンスの更新コマンドを示しています。指定された起動テンプレートの最新バージョンを既に使用しているインスタンスがある場合、それらは置き換えられません。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json の内容。

{ "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-068f72b729example", "Version":"$Latest" }, "Overrides":[ ... existing instance types ... ] }, "InstancesDistribution":{ "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"capacity-optimized" } } }, "Preferences":{ "SkipMatching":true } }

成功した場合、このコマンドはインスタンスの更新 ID を含む JSON レスポンスを返します。

不要なインスタンスタイプからの移行

混合インスタンスグループがある場合、通常、インスタンスのプロビジョンに使用される一連の起動テンプレート オーバーライド(インスタンスタイプ)があります。インスタンスタイプはOverridesセクションに含まれています。特定のインスタンスタイプを使用するインスタンスを置き換えることを Amazon EC2 Auto Scaling に指示するには、希望の設定でOverridesセクションに不要なインスタンスタイプを追加する必要はありません。グループ内のインスタンスタイプがOverridesセクションのインスタンスタイプと一致しない場合は、インスタンスの更新のパートとして置き換えられます。インスタンスの更新では、新しいインスタンスをプロビジョンするインスタンスプールは選択されず、代わりに、割り当て戦略によって選択されます。

次の例は、希望の設定で指定されたインスタンスタイプと一致しないインスタンスを置き換えることで、混合インスタンスグループを更新するスタートインスタンスの更新コマンドを示しています。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json の内容。

{ "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ ... existing launch template and version ... }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"capacity-optimized" } } }, "Preferences":{ "SkipMatching":true } }

成功した場合、このコマンドはインスタンスの更新 ID を含む JSON レスポンスを返します。