CloudWatch アラームの状態が変わったときに Amazon EC2 Auto Scaling ポリシーがトリガーしないのはなぜですか?

最終更新日: 2020 年 12 月 17 日

Amazon CloudWatch アラームが Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling ポリシーをトリガーするように設定しました。CloudWatch アラームの状態が変わったときに Amazon EC2 Auto Scaling ポリシーがトリガーしないのはなぜですか?

簡単な説明

CloudWatch アラームが新しい状態 (OK警告、またはデータ不足) に移行するとき、アラームはその状態に対して設定されているアクションを呼ばれます。Amazon EC2 Auto Scaling は、アラームに設定された期間のみを使用して、状態を変更する必要があるかどうかを判断します。したがって、Auto Scaling アクションの場合、設定された期間に関係なく、アラームは、新しい状態に留まっている期間ごとに設定されているアクションを呼び出し続けます。

CloudWatch アラームの状態が変わったときに Amazon EC2 Auto Scaling ポリシーをトリガーしない一般的な理由は以下のとおりです。

  • Auto Scaling アクションが CloudWatch アラームに対して有効ではなく、スケーリングポリシーが呼び出されない。
  • Auto Scaling グループのスケーリングポリシーが無効になっている。ポリシーが無効になっていると、グループは評価されません。
  • Auto Scaling グループに競合する簡易スケーリングポリシーまたはステップスケーリングポリシーがあるため、一部のポリシーがトリガーされない。
  • Auto Scaling グループに不完全なライフサイクルフックがあるため、簡易スケーリングポリシーが適用されない。また、保留中のインスタンスは、ステップ追跡スケーリングポリシーとターゲット追跡スケーリングポリシーの遅延も引き起こします。これは、ライフサイクルフックが終了し、(スケールアウトの) ウォームアップ時間が完了するまで、Auto Scaling はインスタンスをグループのキャパシティにカウントしないためです。インスタンスは、過度にスケールアップしないように (スケールインの) グループのキャパシティにカウントされます。ライフサイクルフックは、タイムアウト時、または CompleteLifecycleAction API または AWS コマンドラインインターフェイス(AWS CLI)呼び出しが行われたときに完了します。

解決策

開始する前に、CloudWatch アラームが警告状態に移行していることを確認してください。アラームの設定がモニタリングしているメトリクスのしきい値と一致しない場合、アラームが警告状態に移行しない可能性があります。アラームの状態が変わらない場合、Amazon EC2 Auto Scaling ポリシーをトリガーしません。CloudWatch アラームが評価される方法の詳細については、アラームを評価するを参照してください。

アラームのしきい値の値を確認して、予定どおりに CloudWatch アラームが警告状態に入ることを確認します。期待値に一致するようにしきい値を増減します。また、アラームの期間評価期間を確認します。想定どおりに Amazon EC2 Auto Scaling ポリシーをトリガーするには、アラームの期間評価期間を編集する必要がある場合があります。確実にアラームにより確実にアクションをトリガーする方法に関する詳細は、CloudWatch アラームにより確実にアクションをトリガーするにはどうすればよいですか? を参照してください。

重要: アラームを作成または編集するときは、次の点に注意してください。

  • Amazon EC2 Auto Scaling グループのスケーリングプロセス (AlarmNotification起動、または終了) が停止していないことを確認してください。停止していた場合は、必ずスケーリングププロセスを再開します。
  • ターゲット追跡ポリシーに関連付けられたアラームは直接編集しないでください。これらのアラームを編集すると、意図しない影響が生じる可能性があります。これらのアラームのしきい値は、スケーリングポリシーで設定されたターゲット値に基づいて自動的に決定されます。

Amazon EC2 Auto Scaling アクションが CloudWatch アラームに対し有効かどうかを確認する

CloudWatch アラームが Amazon EC2 Auto Scaling ポリシーを呼び出すには、ActionsEnabled パラメータをアラームの設定で有効にする必要があります。ActionsEnabled パラメータがアラームの設定で true になっていることを確認します。

注意: CloudWatch コンソールを使用してアラームを作成または更新する場合、ActionsEnabled パラメータはデフォルトで true に設定されています。

AWS CLI を使用してアラームアクションを確認および有効化するには

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

1.    次のように、describe-alarms を使用して現在の設定を確認します。myalarm をアラームの ID に置き換えます。

aws cloudwatch describe-alarms --alarm-names "myalarm" --query 'MetricAlarms[].ActionsEnabled'

2.    出力を確認します。ActionsEnabled パラメータが true に設定されていない場合は、次のように enable-alarm-actions を使用してアラームアクションを有効にします。myalarm をアラームの ID に置き換えます。

aws cloudwatch enable-alarm-actions --alarm-names myalarm

CloudWatch API を使用してアラームアクションを確認および有効化するには

1.    DescribeAlarms を使用して現在の設定を確認します。

2.    アクションがアラームに対して有効でない場合は、EnableAlarmActions を使用して、アクションを有効にします。

Amazon EC2 Auto Scaling グループの簡易スケーリングおよびステップスケーリングポリシーを確認する

Amazon EC2 コンソールを使用してグループのスケーリングポリシーを確認するには

1.    Amazon EC2 コンソールにサインインします。

2.    ナビゲーションペインの [Auto Scaling] で、[Auto Scaling グループ] を選択します。

3.    コンテンツペインで、Auto Scaling グループを選択します。

4.    [ 自動スケーリング ] タブを選択します。

5.    [ポリシータイプ] ([ステップスケーリング]、[簡易スケーリング] または [ターゲット追跡]) を確認します。

AWS CLI を使用してスケーリングポリシーを確認するには、Auto Scaling グループの ID にコマンド describe-policies--policy-types パラメータとともに使用します。出力に各タイプ (簡易スケーリングステップスケーリング、またはターゲット追跡) のポリシーがリストアップされます。

API を使用してスケーリングポリシーを確認するには、コール DescribePolicies をパラメータ PolicyTypes とともに使用します。出力に各タイプ (簡易スケーリングステップスケーリング、またはターゲット追跡) のポリシーがリストアップされます。

1 つの簡易スケーリングポリシーが有効な場合、その他すべての簡易スケーリングポリシーは、以下の条件を満たすまで呼び出されません。

  • 現在有効な簡易スケーリングポリシーが完了した。
  • Amazon EC2 Auto Scaling ポリシーのクールダウン期間が経過した。簡易スケーリングポリシーが Amazon EC2 Auto Scaling ポリシーのデフォルトのクールダウン期間または指定されたクールダウン期間を優先する。

注: 簡易スケーリングポリシーを実行しても、ステップスケーリングポリシーまたはターゲット追跡ポリシーの実行が完全にブロックされるわけではありません。矛盾するポリシーが同時に適用されないようにしてください。

Amazon EC2 Auto Scaling ポリシーの Auto Scaling ライフサイクルフックを確認する

Auto Scaling ライフサイクルフックが有効な場合、簡易スケーリングポリシーは実行されません。Auto Scaling グループで簡易スケーリングポリシーを使用している場合は、必ずライフサイクルフックを停止します。

注意: 進行中のライフサイクルフックがあっても、ステップスケーリングポリシーはトリガーします。ただし、ライフサイクルフックが終了するまでインスタンスでウォームアップタイマーが開始しないため、ポリシーのスケールが遅くなります。

グローバルタイムアウト期間またはハートビートタイムアウト期間が切れた後、すべてのライフサイクルフックが完了し、結果が [CONTINUE] または [ABANDON] であることを確認します。

Amazon EC2 コンソールを使用してライフサイクルフックアクションを確認するには

1.    Amazon EC2 コンソールにサインインします。

2.    ナビゲーションペインの [Auto Scaling] で、[Auto Scaling グループ] を選択します。

3.    コンテンツペインで、Auto Scaling グループを選択します。

4.    [ アクティビティ ] タブを選択し、[ アクティビティ履歴 ] セクションまでスクロールします。

5.    実行中のライフサイクルフックアクションのアクティビティを確認します。

6.    ライフサイクルフックを終了するステップについては、ライフサイクルフックの完了を参照してください。AWS CLI を使用してライフサイクルフックアクションを完了するには、コマンド complete-lifecycle-action を使用します。API を使用してライフサイクルフックアクションを完了するには、CompleteLifecycleAction 呼び出しを行います。