

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

# スキップマッチングでのインスタンスの更新の使用
<a name="asg-instance-refresh-skip-matching"></a>

スキップマッチングは、既に最新の更新が適用されているインスタンスを無視するように 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 手順について説明します。コンソールを使用する手順については、「[インスタンスの更新の開始 (コンソール)](start-instance-refresh.md#start-instance-refresh-console)」を参照してください。

## スキップマッチング (基本手順)
<a name="skip-matching"></a>

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

**新しい起動テンプレートでスキップマッチングを使用するには**

1. 「[create-launch-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-launch-template.html)」コマンドを使用し、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 CLI](examples-launch-templates-aws-cli.md)」を参照してください。

1. 「[start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html)」コマンドを使用し、インスタンス置き換えワークフローを開始して 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"
   }
   ```

## スキップマッチング (混合インスタンスグループ)
<a name="skip-matching-mixed-instances-group"></a>

[混合インスタンスポリシー](ec2-auto-scaling-mixed-instances-groups.md)を持つ Auto Scaling グループがある場合は、このセクションの手順に従って、 AWS CLI を使用してスキップマッチングでインスタンスの更新を開始します。次のオプションがあります。
+ ポリシーで指定されたすべてのインスタンスタイプに適用する新しい起動テンプレートを指定します。
+ ポリシーの起動テンプレートを変更するかどうかを問わず、更新された一連のインスタンスタイプを指定します。例えば、不要なインスタンスタイプから移行できます。起動テンプレートは、置き換えるインスタンスの AMI、セキュリティグループ、その他の詳細を変更せず、そのまま使用します。

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

**新しい起動テンプレートでスキップマッチングを使用するには**

1. 「[create-launch-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-launch-template.html)」コマンドを使用し、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 CLI](examples-launch-templates-aws-cli.md)」を参照してください。

1. Auto Scaling グループの既存の混合インスタンスポリシーを表示するには、「[describe-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)」コマンドを実行します。この情報は、インスタンスの更新を開始する次のステップで必要になります。

   次のコマンドの例では、{{`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,
         ...
       }
     ]
   }
   ```

1. 「[start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html)」コマンドを使用し、インスタンス置き換えワークフローを開始して 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-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)」コマンドを実行します。この情報は、インスタンスの更新を開始する次のステップで必要になります。

   次のコマンドの例では、{{`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,
         ...
       }
     ]
   }
   ```

1. [start-instance-refresh](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/start-instance-refresh.html) コマンドを使用し、インスタンス置き換えワークフローを開始して更新を適用します。特定のインスタンスタイプを使用するインスタンスを置き換える場合、必要な設定で希望するインスタンスタイプのみを含む混合インスタンスポリシーを指定する必要があります。代わりに新しいインスタンスタイプを追加するかどうかを選択できます。

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