ライフサイクルフックは Auto Scaling のスケーリングアクティビティを一時停止し、Elastic Compute Service (ECS) インスタンスまたは Elastic Container Instance (ECI) インスタンスを待機状態にすることで、ソフトウェアのインストールなどのカスタムアクションを実行する時間を確保します。フックがタイムアウトすると、スケーリングアクティビティは再開されます。
前提条件
-
スケーリンググループが作成されている必要があります。詳細については、「スケーリンググループの設定」または「CreateScalingGroup」をご参照ください。
-
(任意) ライフサイクルフックがトリガーされたときに MNS 通知を受信したい場合は、事前に MNS トピックまたは MNS キューを作成しておく必要があります。詳細については、次のトピックをご参照ください。
-
「トピックの作成」または「CreateTopic」。
-
「キューの作成」または「CreateQueue」。
-
ライフサイクルフックの作成
スケーリンググループごとに最大 10 個のライフサイクルフックを作成できます。詳細については、「ライフサイクルフックの概要」をご参照ください。
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
目的のスケーリンググループを見つけ、次のいずれかの方法でスケーリンググループの詳細ページを開きます。
スケーリンググループ名 /ID列のスケーリンググループのIDをクリックします。
[操作] 列の [詳細] をクリックします。
詳細ページの上部で、ライフサイクルフックタブをクリックします。
-
ライフサイクルフックの作成 をクリックします。
-
ライフサイクルフックの作成 ページで、ライフサイクルフックを設定します。
次の表に、ライフサイクルフックのパラメーターを示します。
パラメーター
説明
[名前]
ライフサイクルフックの名前。名前は作成後に変更できません。長さは 2~64 文字で、先頭は文字、数字、または漢字である必要があります。ピリオド (.)、アンダースコア (_)、ハイフン (-) を使用できます。
[スケーリングアクティビティタイプ]
ライフサイクルフックをトリガーするスケーリングアクティビティのタイプ。有効な値は次のとおりです。
-
スケールイン
-
スケールアウト
[タイムアウト時間]
ライフサイクルフックのタイムアウト期間 (秒単位)。有効な値: 30~21600 (6時間)。デフォルト値: 1800。
説明ライフサイクルフックの処理にかかる時間に基づいてタイムアウト期間を設定します。処理がタイムアウトした場合、システムは デフォルトの実行ポリシー に指定されたアクションを実行します。
[デフォルトの実行ポリシー]
単一のライフサイクルフックのシナリオ
インスタンスが待機状態を終了した後に実行するアクション。有効な値は次のとおりです。
-
続行:スケールアウトアクティビティ中、Auto Scaling は新しく作成された ECS または ECI インスタンスをスケーリンググループに追加し続けます。スケールインアクティビティ中、Auto Scaling は ECS または ECI インスタンスをスケーリンググループから削除し、その後リリースします。
-
拒否:スケールアウトアクティビティ中、Auto Scaling は新しく作成された ECS または ECI インスタンスをスケーリンググループに追加せずにリリースします。スケールインアクティビティ中、Auto Scaling は ECS または ECI インスタンスをスケーリンググループからデタッチしますが、リリースはしません。
-
ロールバック:スケールアウトアクティビティ中、Auto Scaling は新しく作成された ECS または ECI インスタンスをスケーリンググループに追加せずにリリースします。スケールインアクティビティ中、Auto Scaling は削除された ECS または ECI インスタンスをスケーリンググループに再度追加します。
複数のライフサイクルフックのシナリオ
同じスケーリングアクティビティに対して複数のライフサイクルフックがトリガーされた場合、最終的な結果は各フックに設定された[スケーリングアクティビティタイプ]によって異なります。
-
スケールインアクティビティ: 続行 ポリシーを持つライフサイクルフックの待機状態が終了すると、システムは残りのライフサイクルフックが完了するのを待ちます。これらのフックのいずれかが 拒否 または ロールバック の実行ポリシーで終了した場合、システムは直ちに待機状態を終了し、未完了のフックのポリシーをデフォルトの実行ポリシーに設定します。スケールインアクティビティを停止するためのロールバックは、完了したフックに ロールバック ポリシーがある場合にのみ開始されます。完了したフックに 拒否 ポリシーがある場合、スケールインアクティビティは続行されます。
-
スケールアウトアクティビティ: スケールアウトアクティビティは、すべてのライフサイクルフックが 続行 の実行ポリシーで完了した場合にのみ続行されます。いずれかのライフサイクルフックが 拒否 または ロールバック の実行ポリシーで完了した場合、システムは残りの未完了フックを待たずに、スケールアウトをキャンセルしてロールバックを開始します (スケールアウトアクティビティでは、「ロールバック」と「拒否」ポリシーは同じ効果を持ちます)。
(任意) 通知方法として OOS テンプレートを使用するシナリオ
これは、ライフサイクルフックが通知方法として OOS テンプレートを使用する場合にのみ適用されます。OOS テンプレートの実行が待機状態のタイムアウト前に終了した場合、次のアクションは実行結果によって異なります。
-
成功: スケールアウトアクティビティの場合、インスタンスはスケーリンググループに追加されます。スケールインアクティビティの場合、インスタンスはスケーリンググループでのトラフィックの処理を停止します。
-
失敗: スケールアウトアクティビティの場合、インスタンスはリリースされます。スケールインアクティビティの場合、インスタンスはスケーリンググループでのトラフィックの処理を停止します。
インスタンスがトラフィックの処理を停止する方法は、次の条件によって異なります。
-
インスタンスがスケーリンググループによって管理されており、グループの インスタンス再利用モード が リリースモード に設定されている場合、インスタンスはスケーリンググループから削除され、リリースされます。
-
インスタンスがスケーリンググループによって管理されており、グループの インスタンス再利用モード が 停止および再取得モード に設定されている場合、インスタンスはグループ内で停止され、そのリソースの一部が保持されます。詳細については、「スケーリンググループの設定」をご参照ください。
-
インスタンスが手動でスケーリンググループに追加されたが管理されていない場合、インスタンスはグループから削除されるだけで、稼働を続けます。
[フック中に実行されたアクション]
ライフサイクルフックがトリガーされた際の通知送信やアクション実行の方法。有効な値は次のとおりです。
-
通知なし:これはデフォルトのオプションです。
-
MNS トピック:MNS トピックを選択します。Auto Scaling が各メッセージに含める通知識別子を指定して、通知を分類できます。
-
MNS キュー:MNS キューを選択します。Auto Scaling が各メッセージに含める通知識別子を指定して、通知を分類できます。
-
OOS テンプレート:実行するテンプレートのタイプを選択し、そのパラメーターを設定します。
-
テンプレートタイプには パブリックテンプレート と マイテンプレート があります。Auto Scaling は、選択されたテンプレートを使用してインスタンス上でカスタムアクションを実行します。
説明-
マイテンプレート を使用するには、まずご自身でテンプレートを作成しておく必要があります。詳細については、「テンプレートの作成」をご参照ください。
-
パブリックテンプレートの詳細については、「パブリックテンプレート」をご参照ください。
-
-
ビジネス要件に基づいてパラメーターを設定します。[OOS RAM ロール] を設定する必要がある場合は、次の点にご注意ください。
-
RAM ロールは、OOS が引き受けられるように設定されている必要があります。信頼されたエンティティとして [Alibaba Cloud サービス] を、信頼されたサービスとして OOS を選択する必要があります。詳細については、「手順」をご参照ください。
-
RAM ロールには、ECS、ECI、および Auto Scaling リソースを管理する権限が必要です。必要なポリシーを取得するには、[権限付与ポリシーの表示] をクリックします。RAM ロールに権限を付与する方法の詳細については、「OOS の RAM ロールの作成と権限付与」をご参照ください。
説明テンプレートパラメーターの設定方法のその他の例については、「ライフサイクルフックと OOS テンプレートのベストプラクティスの概要」をご参照ください。
-
-
-
イベントバス:EventBridge イベントバスを選択すると、スケーリンググループでスケーリングアクティビティが発生したときに、システムはさまざまなタイプのライフサイクル通知を生成します。通知に基づいてイベントを識別し、処理できます。
-
-
OK をクリックします。
ライフサイクルフックが作成されると、スケーリンググループの詳細ページの ライフサイクルフック タブで確認できます。
Auto Scaling がライフサイクルフックの対象となるスケーリングアクティビティをトリガーすると、影響を受ける ECS または ECI インスタンスの状態が 一時停止中 に変わります。
ライフサイクルフックの変更または削除
ビジネスニーズの変化に応じて、ライフサイクルフックを変更または削除できます。
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
-
スケーリンググループ ページで、管理するスケーリンググループを見つけ、操作 列の 詳細の表示 をクリックします。
-
スケーリンググループの詳細ページで、事件とリンクする タブをクリックし、ライフサイクルフック セクションに移動します。
-
ライフサイクルフックを変更または削除します。
ライフサイクルフックの変更
ライフサイクルフックを再作成する代わりに、そのプロパティを変更できます。
-
管理するライフサイクルフックを見つけ、操作 列の 編集 をクリックします。
-
ライフサイクルフックの設定を変更し、OK をクリックします。
ライフサイクルフックの名前は変更できません。その他のパラメーターの説明については、「ライフサイクルフックの作成」セクションのステップ 7 をご参照ください。
ライフサイクルフックの削除
ライフサイクルフックを削除すると、フックのクォータが解放されます。スケーリングアクティビティを一時停止している間でもフックを削除できます。
重要ライフサイクルフックがインスタンスを待機状態にしている間にそのフックを削除すると、そのインスタンスの待機状態は直ちに終了します。
-
削除する 1 つ以上のライフサイクルフックを見つけ、それらを削除します。
-
単一のフックを削除するには: フックの 操作 列で、削除 をクリックします。
-
複数のフックを削除するには: 削除するフックを選択し、ライフサイクルフックリストの下部にある 削除 をクリックします。
-
-
表示されるメッセージで、OK をクリックします。
-
ライフサイクルフックの無効化または有効化
ライフサイクルフックは、作成されるとデフォルトで アクティブ 状態になります。必要に応じて、ライフサイクルフックを無効化または有効化できます。
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
-
スケーリンググループ ページで、管理するスケーリンググループを見つけ、操作 列の 詳細の表示 をクリックします。
-
スケーリンググループの詳細ページで、事件とリンクする タブをクリックし、ライフサイクルフック セクションに移動します。
-
ライフサイクルフックを無効化または有効化します。
ライフサイクルフックの無効化
一時的に不要なライフサイクルフックを無効化できます。
-
管理するライフサイクルフックを見つけ、操作 列の 一時停止 をクリックします。
-
表示されるメッセージで、OK をクリックします。
ライフサイクルフックの有効化
無効化されたライフサイクルフックが再度必要になったときに有効化できます。
-
管理するライフサイクルフックを見つけ、操作 列の 有効化 をクリックします。
-
表示されるメッセージで、OK をクリックします。
-
関連ドキュメント
-
CreateLifecycleHook:ライフサイクルフックを作成します。
-
ModifyLifecycleHook:ライフサイクルフックを変更します。
-
DeleteLifecycleHook:ライフサイクルフックを削除します。
-
CompleteLifecycleAction:タイムアウト期間が終了する前に、ライフサイクルアクションの待機状態を終了させます。