スキップマッチングでのインスタンスの更新の使用 - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

スキップマッチングでのインスタンスの更新の使用

スキップマッチングは、既に最新の更新が適用されているインスタンスを無視するように Amazon EC2 Auto Scaling に指示します。これにより、必要以上のインスタンスを置き換えることはありません。これは Auto Scaling グループが特定のバージョンの起動テンプレートを使用していることを確認し、異なるバージョンを使用するインスタンスのみを置き換えたいときに役立ちます。

スキップマッチングを使用する際は、以下を考慮してください。

  • スキップマッチングと必要な設定の両方でインスタンスの更新を開始する場合、Amazon EC2 Auto Scaling は必要な設定と一致するインスタンスがあるかどうかをチェックします。次に、必要な設定に一致しないインスタンスのみを置き換えます。インスタンスの更新に成功した後、Amazon EC2 Auto Scaling はグループを更新して必要な設定を反映させます。

  • スキップマッチングでインスタンスの更新を開始しても、必要な設定を指定しない場合、Amazon EC2 Auto Scaling は、Auto Scaling グループに最後に保存した設定と一致するインスタンスがあるかどうかをチェックします。次に、最後に設定した構成と一致しないインスタンスのみが置き換えられます。

  • スキップマッチングは、新しい起動テンプレート、起動テンプレートの新しいバージョン、一連のインスタンスタイプにで使用できます。スキップマッチングを有効にしますが、これらのうちどれも変更されていない場合は、インスタンスの更新はインスタンスを置き換えることなく直ちに成功します。必要な設定にその他の変更 (スポット割り当て戦略の変更など) を行った場合、Amazon EC2 Auto Scaling はインスタンスの更新が成功するまで待機します。次に、新しい必要な設定を反映するように Auto Scaling グループ設定を更新します。

  • 新しい起動設定では、スキップマッチングを使用することはできません。

  • インスタンスの更新を開始して必要な設定を指定すると、Amazon EC2 Auto Scaling はすべてのインスタンスが希望の設定を使用するようにします。したがって、$Default$Latest起動テンプレートに必要なバージョンとしてまたはを指定し、インスタンスの更新中に起動テンプレートの新しいバージョンを作成すると、すでに置き換えられたインスタンスはすべて再び置き換えられます。

  • スキップマッチングでは、起動テンプレート内のユーザーデータスクリプトが更新されたコードを取得して新しいインスタンスにインストールするかどうかはわかりません。その結果、スキップマッチングを行うと、古いコードがインストールされているインスタンスの置き換えをスキップする可能性があります。この場合、起動テンプレートのバージョンを更新しなくても、すべてのインスタンスが最新のコードを受け取れるように、スキップマッチングをオフにする必要があります。

このセクションには、 AWS CLI スキップマッチングを有効にした状態でインスタンスの更新を開始する手順が含まれています。コンソールを使用する手順については、「インスタンスの更新の開始 (コンソール)」を参照してください。

このセクションの手順に従って、 AWS CLI を使用して次の操作を行います。

  • インスタンスに適用する起動テンプレートを作成します。

  • インスタンスの更新を開始して起動テンプレートを Auto Scaling グループに適用します。スキップマッチングを有効にしない場合、すべてのインスタンスが置き換えられます。これは、インスタンスのプロビジョニングに使用した起動テンプレートが、必要な設定に指定した起動テンプレートと同じであっても当てはまります。

新しい起動テンプレートでスキップマッチングを使用するには
  1. create-launch-templateコマンドを使用して Auto Scaling グループの新しい起動テンプレートを作成します。Auto Scaling グループに作成されたインスタンスの詳細を定義する --launch-template-data オプションおよび JSON 入力を含めます。

    例えば、次のコマンドを使用して AMI ID ami-0123456789abcdef0 および t2.micro インスタンスタイプを含む基本的な起動テンプレートを作成します。

    aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-0123456789abcdef0","InstanceType":"t2.micro"}'

    成功すると、コマンドは以下のような出力を返します。

    { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-30T18:16:06.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

    詳細については、「() AWS Command Line Interface を使用して起動テンプレートを作成および管理する例AWS CLI」を参照してください。

  2. start-instance-refreshコマンドを使用してインスタンス交換ワークフローを開始し、ID lt-068f72b729exampleを含む新しい起動テンプレートを適用します。起動テンプレートは新しいため、バージョンは 1 つしかありません。つまり、起動テンプレートの 1 バージョンはこのインスタンスの更新の対象となります。インスタンスの更新中にスケールアウトイベントが発生し、かつ Amazon EC2 Auto Scaling がこの起動テンプレートのバージョン 1 を使用して新しいインスタンスをプロビジョニングする場合は置き換えられません。操作が正常に完了すると、新しい起動テンプレートが 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 } }

    成功すると、コマンドは以下のような出力を返します。

    { "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

混合インスタンスポリシーが設定されている Auto Scaling グループがある場合は、 AWS CLI このセクションの手順に従ってを使用してマッチングをスキップしてインスタンスの更新を開始します。次のオプションがあります。

  • ポリシーで指定されたすべてのインスタンスタイプに適用する新しい起動テンプレートを指定します。

  • ポリシーの起動テンプレートを変更するかどうかを問わず、更新された一連のインスタンスタイプを指定します。例えば、不要なインスタンスタイプから移行できます。起動テンプレートは、置き換えるインスタンスの AMI、セキュリティグループ、その他の詳細を変更せず、そのまま使用します。

ニーズに合ったオプションに応じて、次のいずれかのセクションにある手順に従ってください。

新しい起動テンプレートでスキップマッチングを使用するには
  1. create-launch-templateコマンドを使用して Auto Scaling グループの新しい起動テンプレートを作成します。Auto Scaling グループに作成されたインスタンスの詳細を定義する --launch-template-data オプションおよび JSON 入力を含めます。

    例えば、次のコマンドを使用して AMI ID ami-0123456789abcdef0 を含む起動テンプレートを作成します。

    aws ec2 create-launch-template --launch-template-name my-new-template --version-description version1 \ --launch-template-data '{"ImageId":"ami-0123456789abcdef0"}'

    成功すると、コマンドは以下のような出力を返します。

    { "LaunchTemplate": { "LaunchTemplateId": "lt-04d5cc9b88example", "LaunchTemplateName": "my-new-template", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-31T15:56:02.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

    詳細については、「() AWS Command Line Interface を使用して起動テンプレートを作成および管理する例AWS CLI」を参照してください。

  2. Auto Scaling グループの既存の混合インスタンスポリシーを表示するには、describe-auto-scaling-groupsコマンドを実行します。この情報は、インスタンスの更新を開始する次のステップで必要になります。

    次のコマンドの例では、my-asg という名前の Auto Scaling グループに設定された混合インスタンスポリシーを返します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    成功すると、コマンドは以下のような出力を返します。

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-old-template", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] }
  3. start-instance-refreshコマンドを使用してインスタンス交換ワークフローを開始し、ID lt-04d5cc9b88exampleを含む新しい起動テンプレートを適用します。起動テンプレートは新しいため、バージョンは 1 つしかありません。つまり、起動テンプレートの 1 バージョンはこのインスタンスの更新の対象となります。インスタンスの更新中にスケールアウトイベントが発生し、かつ Amazon EC2 Auto Scaling がこの起動テンプレートのバージョン 1 を使用して新しいインスタンスをプロビジョニングする場合は置き換えられません。操作が正常に完了すると、更新された混合インスタンスポリシーが Auto Scaling グループに正常に適用されます。

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

    config.json の内容。

    { "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-04d5cc9b88example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }

    成功すると、コマンドは以下のような出力を返します。

    { "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

次の手順では、起動テンプレートを変更せずに更新された一連のインスタンスタイプを指定します。

更新された一連のインスタンスタイプでスキップマッチングを使用するには
  1. Auto Scaling グループの既存の混合インスタンスポリシーを表示するには、describe-auto-scaling-groupsコマンドを実行します。この情報は、インスタンスの更新を開始する次のステップで必要になります。

    次のコマンドの例では、my-asg という名前の Auto Scaling グループに設定された混合インスタンスポリシーを返します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    成功すると、コマンドは以下のような出力を返します。

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-template-for-auto-scaling", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] }
  2. start-instance-refreshコマンドを使用してインスタンス交換ワークフローを開始し、更新を適用します。特定のインスタンスタイプを使用するインスタンスを置き換える場合、必要な設定で希望するインスタンスタイプのみを含む混合インスタンスポリシーを指定する必要があります。代わりに新しいインスタンスタイプを追加するかどうかを選択できます。

    次のコマンドの例では、不要なインスタンスタイプ m5a.large なしでインスタンスの更新を開始します。グループ内のインスタンスタイプが残り 3 つのインスタンスタイプのいずれかと一致しないとき、インスタンスは置き換えられます。(インスタンスの更新は、新しいインスタンスをプロビジョンするインスタンスタイプを選択しませんのでご注意ください。代わりに割り当て戦略によって選択されます) 操作が正常に完了すると、更新された混合インスタンスポリシーが Auto Scaling グループに正常に適用されます。

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

    config.json の内容

    { "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }