翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Auto Scaling グループのウォームプールでライフサイクルフックを使用する
ウォームプールのインスタンスは、移行ごとに適切なカスタムアクションを作成できるように、独自の独立したライフサイクルを維持します。このライフサイクルは、インスタンスがまだ初期化中、およびサービスを開始する前に、ターゲットサービス (Lambda 関数など) でアクションを呼び出すように設計されています。
注記
ライフサイクルフックの追加と管理、およびライフサイクルアクションの完了に使用するAPIオペレーションは変更されません。インスタンスのライフサイクルのみが変更されます。
ライフサイクルフック追加の詳細については、Auto Scaling グループにライフサイクルフックを追加する を参照してください。ライフサイクルアクション完了の詳細については、Auto Scaling グループでライフサイクルアクションを完了する を参照してください。
ウォームプールに入るインスタンスは、次のいずれかの理由でライフサイクルフックが必要になる場合があります。
-
初期化が完了するまでAMIに時間がかかる からEC2インスタンスを起動したい。
-
ユーザーデータスクリプトを実行してEC2インスタンスをブートストラップします。
ウォームプールを離れるインスタンスは、次のいずれかの理由でライフサイクルフックが必要になる場合があります。
-
EC2 インスタンスの使用準備には、余分な時間をかけることができます。例えば、インスタンスの再起動時に、アプリケーションが正常に動作する前に、開始する必要があるサービスがあるとします。
-
キャッシュデータを事前入力して、新しいサーバーが空のキャッシュで起動しないようにすることができます。
-
新しいインスタンスをマネージドインスタンスとして設定管理サービスに登録する場合。
ウォームプール内のインスタンスのライフサイクル状態の移行
オートスケーリングインスタンスは、ライフサイクルの一環として多くの状態に移行します。
次の図表は、ウォームプール使用時のオートスケーリング状態間の移行を示しています。
¹ この状態は、ウォームプールのプール状態設定によって異なります。プール状態が Running
に設定されている場合、この状態は代わりに Warmed:Running
になります。プール状態が Hibernated
に設定されている場合、この状態は代わりに Warmed:Hibernated
になります。
ライフサイクルフックを追加するときは、次の点を考慮してください。
-
ライフサイクルフックが
autoscaling:EC2_INSTANCE_LAUNCHING
ライフサイクルアクションに対して設定されている場合、新しく起動したインスタンスは、Warmed:Pending:Wait
状態に達したときに一時停止してカスタムアクションを実行します。その後、インスタンスが再開してPending:Wait
状態になったときに再度一時停止してカスタムアクションを実行します。 -
ライフサイクルフックが
EC2_INSTANCE_TERMINATING
ライフサイクルアクションに対して設定されている場合、終了するインスタンスは、Terminating:Wait
状態に達したときに一時停止してカスタムアクションを実行します。ただし、スケールインでインスタンスをウォームプールに戻すインスタンスの再使用ポリシーを指定した場合、ウォームプールに戻るインスタンスはWarmed:Pending:Wait
状態で一時停止してEC2_INSTANCE_TERMINATING
ライフサイクルアクションにカスタムアクションを実行します。 -
アプリケーションの需要によってウォームプールが枯渇した場合、Amazon EC2 Auto Scaling は、グループがまだ最大容量に達していない限り、インスタンスを Auto Scaling グループに直接起動できます。インスタンスがグループ内で直接起動する場合、インスタンスは
Pending:Wait
状態でのみ一時停止してカスタムアクションを実行します。 -
次の状態に遷移するまでにインスタンスが待機状態を維持する時間を制御するには、complete-lifecycle-action コマンドを使用するようカスタムアクションを設定します。ライフサイクルフックでは、指定されたライフサイクルアクションが完了したことを Amazon EC2 Auto Scaling に通知するか、タイムアウト期間が終了するまで (デフォルトでは 1 時間)、インスタンスは待機状態のままになります。
スケールアウトイベントのフローの概要を次に示します。
インスタンスが待機状態になると、Amazon EC2 Auto Scaling は通知を送信します。これらの通知の例は、このガイドの EventBridge セクションで確認できます。詳細については、「ウォームプールのイベントとパターンの例」を参照してください。
サポートされている通知ターゲット
Amazon EC2 Auto Scaling は、ライフサイクル通知の通知ターゲットとして次のいずれかを定義するためのサポートを提供します。
-
EventBridge ルール
-
Amazon SNSトピック
-
Amazon SQSキュー
重要
起動時にインスタンスを設定するユーザーデータ (cloud-init) スクリプトが起動テンプレートまたは起動設定にある場合、起動または再起動されるインスタンスでカスタムアクションを実行するための通知を受け取る必要はありません。
次のセクションでは、通知ターゲットの設定方法について説明しているドキュメントへのリンクを示します。
EventBridge ルール : Amazon EC2 Auto Scaling がインスタンスを待機状態にしたときにコードを実行するには、 EventBridge ルールを作成し、ターゲットとして Lambda 関数を指定します。異なるライフサイクル通知に基づいて異なる Lambda 関数を呼び出すには、複数のルールを作成し、各ルールを特定のイベントパターンおよび Lambda 関数に関連付けます。詳細については、「ウォームプールイベントの EventBridge ルールを作成する」を参照してください。
Amazon SNSトピック : インスタンスが待機状態になったときに通知を受信するには、Amazon SNSトピックを作成し、SNSメッセージ属性に基づいてライフサイクル通知を異なる方法で配信するように Amazon メッセージフィルタリングを設定します。詳細については、「Amazon SNS を使用した通知の受信」を参照してください。
Amazon SQSキュー : 関連するコンシューマーがそれらを受け取って処理できるライフサイクル通知の配信ポイントを設定するには、Amazon SQS キューと、キューからのメッセージを処理するSQSキューコンシューマーを作成できます。キューコンシューマーに、メッセージ属性に基づいてライフサイクル通知を別々に処理させる場合は、特定の属性が目的の値と一致する際にメッセージを解析、処理するようにキューコンシューマーを設定する必要があります。詳細については、「Amazon SQS を使用した通知の受信」を参照してください。