

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

# Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する
<a name="ec2-auto-scaling-default-instance-warmup"></a>

CloudWatch は、Auto Scaling インスタンス全体で CPU やネットワーク I/O などの使用状況データを収集し、集計します。これらのメトリクスを使用して、選択したメトリクスの値の増減に応じて Auto Scaling グループ内にあるインスタンスの数を調整するスケーリングポリシーを作成します。

インスタンスが `InService` 状態になってから、集約されたメトリクスに使用状況データが反映されるまでの待機時間を指定できます。この指定された時間は、*デフォルトのインスタンスウォームアップ*と呼ばれます。これは、アプリケーショントラフィックの処理をまだ行っておらず、コンピューティングリソースの使用率が一時的に高くなっている可能性がある個々のインスタンスのメトリクスが、動的スケーリングに影響を与えないようにします。

ターゲット追跡ポリシーとステップスケーリングポリシーのパフォーマンスを最適化するには、デフォルトのインスタンスウォームアップを有効にして設定することを強くお勧めします。デフォルトでは有効ではなく設定されてもいません。

デフォルトのインスタンスウォームアップを有効にするときは、Auto Scaling グループがインスタンスメンテナンスポリシーを使用するように設定されている場合、またはインスタンスの更新を使用してインスタンスを置き換える場合、インスタンスが初期化を完了する前に最小の正常な割合にカウントされないようにできることに注意してください。

**Topics**
+ [

## パフォーマンスのスケーリングに関する考慮事項
](#scaling-performance-considerations)
+ [

## デフォルトのインスタンスウォームアップ時間を選択する
](#choose-the-default-instance-warmup)
+ [

# グループに対するインスタンスのデフォルトウォームアップを有効にする
](enable-default-instance-warmup.md)
+ [

# グループに対するデフォルトのインスタンスウォームアップ時間を検証する
](verify-default-instance-warmup.md)
+ [

# 事前に設定されたインスタンスのウォームアップ時間を含むスケーリングポリシーを検索する
](find-policies-with-a-previously-set-instance-warmup.md)
+ [

# 以前に設定したスケーリングポリシーのインスタンスウォームアップをクリアする
](clearing-the-previously-set-instance-warmup.md)

## パフォーマンスのスケーリングに関する考慮事項
<a name="scaling-performance-considerations"></a>

ほとんどのアプリケーションでは、機能ごとに異なるウォームアップ時間を設けるよりも、1 つのデフォルトのインスタンスウォームアップ時間をすべての機能に適用するほうが便利です。例えば、デフォルトのインスタンスウォームアップを設定しない場合、インスタンスの更新機能はデフォルトのウォームアップ時間としてヘルスチェックの猶予期間を使用します。ターゲット追跡ポリシーとステップスケーリングポリシーがある場合は、デフォルトのクールダウンに設定された値をデフォルトのウォームアップ時間として使用します。予測スケーリングポリシーがある場合、デフォルトのウォームアップ時間はありません。

インスタンスがウォームアップしている間、動的スケーリングポリシーは、ウォームアップしていないインスタンスのメトリクス値がポリシーのアラーム上限しきい値 (またはターゲット追跡スケーリングポリシーのターゲット利用率) より大きい場合にのみスケールアウトします。需要が減少すると、動的スケーリングは控えめになり、アプリケーションの可用性を保護します。これにより、新しいインスタンスがウォームアップを完了するまで、動的スケーリングのスケールインアクティブティがブロックされます。

スケールアウト時には、Amazon EC2 Auto Scaling は、グループに追加するインスタンス数を決定するにあたって、ウォームアップ中のインスタンスをグループのキャパシティの一部と見なします。したがって、同程度の量のキャパシティの追加を必要とする複数のアラーム違反は、単一のスケーリングアクティビティになります。その目的は、スケールアウトを継続的に (ただし過剰になることなく) 行うことです。

デフォルトのインスタンスウォームアップが有効になっていない場合、メトリクスを  CloudWatch に送信して現在のキャパシティーにカウントするまでのインスタンスの待機時間は、インスタンスごとに異なります。そのため、実際に発生しているワークロードと比較して、予期せずスケーリングポリシーが実行される可能性があります。

例えば、オンとオフのワークロードパターンが繰り返されるアプリケーションを考えてみましょう。予測スケーリングポリシーを使用して、インスタンス数を増やすかどうかを繰り返し決定します。予測スケーリングポリシーにはデフォルトのウォームアップ時間がないため、インスタンスは集約されたメトリクスにすぐに反映されます。これらのインスタンスの起動時のリソース使用量が多い場合、インスタンスを追加すると、集約されたメトリックスが急増する可能性があります。使用量が安定するまでにかかる時間によっては、これらの指標を使用する動的スケーリングポリシーに影響する可能性があります。動的スケーリングポリシーのアラーム上限しきい値を超えると、グループのサイズは再び大きくなります。新しいインスタンスがウォームアップしている間、スケールインアクティビティはブロックされます。

## デフォルトのインスタンスウォームアップ時間を選択する
<a name="choose-the-default-instance-warmup"></a>

デフォルトのインスタンスのウォームアップを設定する上で重要なのは、インスタンスが `InService` の状態に達した後、初期化を終了し、リソースの消費が安定するまでに必要な時間を決定することです。インスタンスのウォームアップ時間を選択するときは、正当なトラフィックの使用状況データを収集しつつ、スタートアップ時の一時的な使用量の急増に関連するデータ収集を最小限に抑えるという最適なバランスを保つようにします。

Auto Scaling グループが Elastic Load Balancing ロードバランサーにアタッチされているとします。新しいインスタンスが起動を完了すると、`InService` 状態に入る前にロードバランサーに登録されます。インスタンスが `InService` 状態になった後も、リソースの消費は引き続き一時的に急増する場合があり、安定化する時間が必要です。例えば、大量のアセットをダウンロードしてキャッシュする必要があるアプリケーションサーバーのリソース消費が安定するまでにかかる時間は、ダウンロードする大量のアセットがない軽量のウェブサーバーよりも長くなります。インスタンスのウォームアップは、リソース消費の安定化に必要な遅延時間を提供します。

**重要**  
ウォームアップ時間に必要な時間がわからない場合は、300 秒から開始できます。次に、アプリケーションに最適なスケーリングパフォーマンスが得られるまで、徐々に減らすか、増やします。最適にするには、これを数回実行する必要がある場合があります。あるいは、独自のウォームアップ時間 (`EstimatedInstanceWarmup`) が設定されているスケーリングポリシーがある場合は、この値を使用して開始することもできます。詳細については、「[事前に設定されたインスタンスのウォームアップ時間を含むスケーリングポリシーを検索する](find-policies-with-a-previously-set-instance-warmup.md)」を参照してください。

スタートアップ時に実行される設定タスクやスクリプトを伴うユースケースにライフサイクルフックの使用を検討してください。ライフサイクルフックは、インスタンスが初期化を終了するまで、新しいインスタンスがサービスに使用されるのを遅らせることができます。ライフサイクルフックは特に、完了に時間がかかるブートストラップスクリプトがある場合に便利です。ライフサイクルフックを追加すると、デフォルトのインスタンスウォームアップの値を減らすことができます。ライフサイクルフック使用の詳細については、「[Amazon EC2 Auto Scaling のライフサイクルフック](lifecycle-hooks.md)」を参照してください。

# グループに対するインスタンスのデフォルトウォームアップを有効にする
<a name="enable-default-instance-warmup"></a>

インスタンスのデフォルトウォームアップは、Auto Scaling グループの作成時に有効化できます。既存のグループに対して有効化することも可能です。

デフォルトのインスタンスウォームアップ機能を有効にすると、以下の機能のウォームアップパラメータに値を指定する必要がなくなります
+ [インスタンスの更新](instance-refresh-overview.md#instance-refresh-core-concepts)
+ [ターゲットトラッキングスケーリング](as-scaling-target-tracking.md#as-target-tracking-scaling-warmup)
+ [ステップスケーリング](as-scaling-simple-step.md#as-step-scaling-warmup)

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

**新しいグループに対してインスタンスのデフォルトウォームアップを有効にする (コンソール)**  
Auto Scaling グループを作成するときに、**[Configure advanced options]** (詳細オプションを設定) ページの **[Additional settings]** (追加設定)で、**[Enable default instance warmup]** (インスタンスのデフォルトウォームアップを有効にする) オプションを選択します。アプリケーションに必要なウォームアップ時間を選択します。

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

**新しいグループに対してインスタンスのデフォルトウォームアップを有効にする (AWS CLI)**  
Auto Scaling グループに対してインスタンスのデフォルトウォームアップを有効にするには、`--default-instance-warmup` オプションを追加して、0 から 3600 までの値 (秒単位) を指定します。`-1` の値は、有効化後にこの設定をオフにします。

以下の [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) コマンドは、*my-asg* という名前の Auto Scaling グループを作成し、*120* 秒の値でインスタンスのデフォルトウォームアップを有効にします。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120 ...
```

**ヒント**  
このコマンドがエラーをスローする場合は、 を AWS CLI ローカルで最新バージョンに更新していることを確認してください。

------

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

**既存のグループに対してインスタンスのデフォルトウォームアップを有効にする (コンソール)**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) でAmazon EC2 コンソールを開き、ナビゲーションペインで **[Auto Scaling グループ]** を選択します。

1. 画面の上部のナビゲーションバーで、Auto Scaling グループを作した AWS リージョン を選択します。

1. Auto Scaling グループの横にあるチェックボックスを選択します。

   ページの下部にスプリットペインが開きます。

1. [**詳細**] タブで、[**高度な設定**]、[**編集**] の順に選択します。

1. **[デフォルトのインスタンスのウォームアップ]** で、アプリケーションに必要なウォームアップ時間を選択します。

1. **[更新]** を選択します。

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

**既存のグループに対してインスタンスのデフォルトウォームアップを有効にする (AWS CLI)**  
以下の例は、[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html) コマンドを使用して、*my-asg* という名前の既存の Auto Scaling グループに対し、*120* 秒の値でインスタンスのデフォルトウォームアップを有効にします。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120
```

**ヒント**  
このコマンドがエラーをスローする場合は、 を AWS CLI ローカルで最新バージョンに更新していることを確認してください。

------

# グループに対するデフォルトのインスタンスウォームアップ時間を検証する
<a name="verify-default-instance-warmup"></a>

 AWS CLIを使用して Auto Scaling グループのデフォルトのインスタンスウォームアップ時間を検証するには、次の手順に従います。

**Auto Scaling グループに対するインスタンスのデフォルトウォームアップ時間を検証するには**  
次の [describe-auto-scaling-groups](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",
            ...
            "DefaultInstanceWarmup": 120
        }
    ]
}
```

# 事前に設定されたインスタンスのウォームアップ時間を含むスケーリングポリシーを検索する
<a name="find-policies-with-a-previously-set-instance-warmup"></a>

`EstimatedInstanceWarmup` に対して独自のウォームアップ時間を持つポリシーがあるかどうかを確認するには、 AWS CLIを使用して次の [describe-policies](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-policies.html) コマンドを実行します。*my-asg* を Auto Scaling グループの名前に置き換えます。

```
aws autoscaling describe-policies --auto-scaling-group-name my-asg
  --query 'ScalingPolicies[?EstimatedInstanceWarmup!=`null`]'
```

以下は出力の例です。

```
[
  {
    "AutoScalingGroupName":"my-asg",
    "PolicyName":"cpu50-target-tracking-scaling-policy",
    "PolicyARN":"arn",
    "PolicyType":"TargetTrackingScaling",
    "StepAdjustments":[],
    "EstimatedInstanceWarmup":120,
    "Alarms":[{
        "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e",
        "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e"
      },
      {
            "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2",
            "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2"
    }],
    "TargetTrackingConfiguration":{
      "PredefinedMetricSpecification":{
        "PredefinedMetricType":"ASGAverageCPUUtilization"
      },
      "TargetValue":50.0,
      "DisableScaleIn":false
    },
    "Enabled":true
  },
  
    ... additional policies ...
                        
]
```

# 以前に設定したスケーリングポリシーのインスタンスウォームアップをクリアする
<a name="clearing-the-previously-set-instance-warmup"></a>

デフォルトのインスタンスウォームアップを有効にしたら、まだウォームアップ時間が残っているスケーリングポリシーを更新して、以前に設定した値をクリアします。そうしないと、デフォルトのインスタンスウォームアップがオーバーライドされます。

スケーリングポリシーは、 コンソール、 AWS CLI、または AWS SDKsを使用して更新できます。このセクションでは、コンソールの手順について説明します。 AWS CLI AWS SDKs を使用する場合は、既存のポリシー設定を保持し、 `EstimatedInstanceWarmup`プロパティを削除します。既存のスケーリングポリシーを更新すると、そのポリシーは、プログラムで [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PutScalingPolicy.html) を呼び出すときに指定したものに置き換えられます。元の値は保持されません。

**以前に設定したスケーリングポリシーのインスタンスウォームアップをクリアする**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) でAmazon EC2 コンソールを開き、ナビゲーションペインで [**Auto Scaling グループ**] を選択します。

1. Auto Scaling グループの横にあるチェックボックスを選択します。

   ページの下部にスプリットペインが開きます。

1. [**自動スケーリング**] タブの [**動的スケーリングポリシー**] で、目的のポリシーを選択し、[**アクション**]、[**編集**] を選択します。

1. **[インスタンスのウォームアップ]** で、インスタンスのウォームアップ値をクリアして、代わりにデフォルトのインスタンスウォームアップ値を使用します。

1. **[更新]** を選択します。