ライフサイクルフック機能は、自動的にトリガーされたスケーリングアクティビティを一時停止して、Elastic Compute Service (ECS) インスタンスまたはelastic containerインスタンスをPending状態にすることができます。 これにより、インスタンスに対してカスタム操作を実行する時間が与えられます。 たとえば、[保留中の追加] 状態のインスタンスにソフトウェアをプリインストールできます。 ライフサイクルフックによって一時停止されたスケーリングアクティビティは、ライフサイクルフックがタイムアウトした後にのみ再開できます。 このトピックでは、ライフサイクルフックを作成、変更、削除、有効化、または無効化する方法について説明します。
前提条件
スケーリンググループが作成されます。 詳細については、「スケーリンググループの管理」または「CreateScalingGroup」をご参照ください。
(オプション) ライフサイクルフックがトリガーされたときにMNS通知を送信する場合は、メッセージサービス (MNS) トピックまたはキューが作成されます。
トピックの作成方法については、「トピックの作成」または「CreateTopic」をご参照ください。
キューの作成方法については、「キューの作成」または「CreateQueue」をご参照ください。
ライフサイクルフックの作成
ライフサイクルフックは、スケーリンググループ内のECSインスタンスまたはエラスティックコンテナインスタンスのライフサイクルを管理するために使用されるツールです。 詳細については、「概要」をご参照ください。 スケーリンググループには最大10個のライフサイクルフックを作成できます。 この例では、参照用に作成されるライフサイクルフックは1つだけです。
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
目的のスケーリンググループを見つけ、次のいずれかの方法でスケーリンググループの詳細ページを開きます。
スケーリンググループ名 /ID列のスケーリンググループのIDをクリックします。
[操作] 列の [詳細] をクリックします。
詳細ページの上部で、ライフサイクルフックタブをクリックします。
表示されるページの左上隅で、ライフサイクルフックの作成をクリックします。
ライフサイクルフックの作成ダイアログボックスで、プロンプトに従ってパラメーターを設定します。
下表に、各パラメーターを説明します。
パラメーター
説明
名前
ライフサイクルフックの名前。 ライフサイクルフックの作成後にライフサイクルフックの名前を変更することはできません。 名前は2 ~ 64文字で、英数字、ピリオド (.) 、アンダースコア (_) 、ハイフン (-) を使用できます。 名前は文字または数字で始まる必要があります。
スケーリングアクティビティ
ライフサイクルフックを適用するスケーリングアクティビティのタイプ。 指定されたタイプのスケーリングアクティビティが発生すると、ライフサイクルフックがトリガーされ、スケーリンググループに追加または削除するECSインスタンスまたはエラスティックコンテナインスタンスが [保留中の追加] または [保留中の削除] 状態になります。 有効な値:
Scale-inイベント
スケールアウトイベント
タイムアウト期間
ライフサイクルフックのタイムアウト期間。 このパラメーターの値は、30〜21600の範囲の整数である必要があります。 単位は秒です。 デフォルト値: 1800
説明業務要件に基づいてタイムアウト期間を指定することを推奨します。 タイムアウト期間が必要な期間より短い場合、Auto Scalingはデフォルトの実行ポリシーを実行します。
デフォルトの実行ポリシー
シナリオ1: ライフサイクルフックが1つだけ作成される
ライフサイクルフックがタイムアウトした後にAuto Scalingで実行するアクション。 有効な値:
続行: Auto Scalingは、スケールアウトイベント中に引き続きECSインスタンスまたはエラスティックコンテナインスタンスをスケーリンググループに追加するか、スケーリンググループから引き続きECSインスタンスまたはエラスティックコンテナインスタンスを削除し、スケールインイベント中にECSインスタンスまたはエラスティックコンテナインスタンスをリリースします。
拒否: Auto Scalingは、スケールアウトイベント中に [保留中の追加] 状態にあるECSインスタンスまたはエラスティックコンテナインスタンスをリリースするか、スケーリンググループから引き続きECSインスタンスまたはエラスティックコンテナインスタンスを削除し、スケールインイベント中にECSインスタンスまたはエラスティックコンテナインスタンスをリリースします。
ロールバック: Auto Scalingは、スケールアウトイベント中に [保留中の追加] 状態にあるECSインスタンスまたはエラスティックコンテナインスタンスをリリースします。スケールインイベント中に [保留中の削除] 状態にあるECSインスタンスまたはエラスティックコンテナインスタンスをスケーリンググループに再追加します。
シナリオ2: 複数のライフサイクルフックが作成される
複数のライフサイクルフックがある場合、Auto Scalingが実行する後続のアクションは、各ライフサイクルフックに指定したScaling Activityパラメーターの値によって異なります。
スケーリングアクティビティパラメーターを [スケールイン] [イベント] に設定し、ライフサイクルフックの1つの [デフォルト実行ポリシー] パラメーターを [続行] に設定した場合、Auto Scalingはすべてのライフサイクルフックがタイムアウトした後にのみデフォルト実行ポリシーを実行します。 ライフサイクルフックのいずれかの [デフォルトの実行ポリシー] パラメーターを [拒否] または [ロールバック] に設定した場合、Auto Scalingは、ライフサイクルフックがタイムアウトした後、すべてのライフサイクルフックのタイムアウト期間を予定より早く終了します。 そのライフサイクルフックのデフォルト実行ポリシーパラメーターをロールバックに設定した場合、Auto Scalingはスケールインプロセスを停止し、すべての変更をロールバックします。 そのライフサイクルフックの [デフォルトの実行ポリシー] パラメーターを [拒否] に設定した場合、Auto Scalingは引き続きスケールインプロセスを実行します。
[スケーリングアクティビティ] パラメーターを [スケールアウト] [イベント] に設定し、すべてのライフサイクルフックの [デフォルトの実行ポリシー] パラメーターを [続行] に設定した場合、Auto Scalingはすべてのライフサイクルフックがタイムアウトした後にのみスケールアウトプロセスを実行し続けます。 ライフサイクルフックのいずれかの [デフォルトの実行ポリシー] パラメーターを [拒否] または [ロールバック] に設定した場合、Auto Scalingはすべてのライフサイクルフックのタイムアウト期間を予定より早く終了し、スケールアウトプロセスを停止してから、すべての変更をロールバックします。 ロールバック設定と拒否設定は、スケールアウトイベントでも同じ効果があります。
(オプション) シナリオ3: OOSテンプレートが使用されている
ライフサイクルフックの [Send Notification When Lifecycle Hook Takes Effect] パラメーターをOOS Templateに設定した場合、ライフサイクルフックがタイムアウトした後にAuto Scalingが実行するアクションは、CloudOps Orchestration Service (OOS) テンプレートの実行結果によって異なります。
OOSテンプレートの実行が成功した場合、Auto Scalingはスケールアウトイベント中にECSインスタンスまたはエラスティックコンテナインスタンスをスケーリンググループに追加し続けます。
OOSテンプレートの実行に失敗した場合、Auto Scalingは、スケールアウトイベント中に [保留中の追加] 状態にあるECSインスタンスまたはエラスティックコンテナインスタンスをリリースします。
Auto ScalingがECSインスタンスまたはエラスティックコンテナインスタンスのスケーリンググループでのコンピューティングパワーの提供を停止する場合、次のルールが適用されます。
ECSインスタンスまたはエラスティックコンテナインスタンスが自動的に作成された場合、またはECSインスタンスまたはエラスティックコンテナインスタンスが手動で作成され、Instance Reclaim ModeパラメーターがReleaseに設定されているスケーリンググループによって管理された場合、Auto scalingはECSインスタンスまたはエラスティックコンテナインスタンスをスケーリンググループから削除します。
ECSインスタンスまたはエラスティックコンテナインスタンスが自動的に作成された場合、またはECSインスタンスまたはエラスティックコンテナインスタンスが手動で作成され、Instance Reclaim ModeパラメーターがEconomical Modeに設定されているスケーリンググループによって管理された場合、Auto scalingはECSインスタンスまたはエラスティックコンテナインスタンスを停止しますが、スケーリンググループ内のインスタンスの特定のリソースは保持します。 詳細については、「スケーリンググループの管理」をご参照ください。
ECSインスタンスまたはエラスティックコンテナインスタンスが手動で作成されているが、スケーリンググループによって管理されていない場合、Auto scalingはスケーリンググループからECSインスタンスまたはエラスティックコンテナインスタンスを削除します。 削除されたECSインスタンスまたはelasticコンテナインスタンスは、独立して実行できます。
ライフサイクルフックが有効になったときに通知を送信
ライフサイクルフックが有効になったときに通知を送信するかどうかを指定します。 ライフサイクルフックが有効になったときに通知を送信する場合は、通知方法を指定します。 有効な値:
通知なし: これはデフォルト値です。
MNSトピック: このオプションを選択する場合は、MNSトピックを選択する必要があります。 通知IDを指定すると、通知IDは通知と一緒にMNSトピックに送信されます。 IDで通知を管理できます。
MNSキュー: このオプションを選択する場合は、MNSキューを選択する必要があります。 通知IDを指定すると、通知IDは通知と一緒にMNSキューに送信されます。 IDで通知を管理できます。
OOSテンプレート: このオプションを選択した場合、テンプレートタイプを指定し、テンプレートパラメーターを設定する必要があります。
Auto Scalingは、パブリックテンプレートおよびマイテンプレートの種類のOOSテンプレートをサポートしています。 Auto Scalingは、選択したテンプレートを使用して、ECSインスタンスまたはエラスティックコンテナインスタンスでアクションを実行します。
説明マイテンプレートを選択する前に、テンプレートを作成する必要があります。 テンプレートの作成方法の詳細については、「テンプレートの作成」をご参照ください。
パブリックテンプレートの詳細については、「パブリックテンプレート」をご参照ください。
ビジネス要件に基づいてテンプレートパラメーターを設定します。 OOSのリソースアクセス管理 (RAM) ロールを設定する場合は、次のルールが適用されます。
OOSのRAMロールを作成するときは、信頼できるエンティティとしてAlibaba Cloud Serviceを、信頼できるサービスとしてCloudOps Orchestration Serviceを選択する必要があります。 詳細については、「OOSのRAMロールの作成」をご参照ください。
ECS、Elastic Container Instance、Auto Scalingなどのリソースに対して必要な権限をRAMロールに付与する必要があります。 必要なポリシーを表示するには、[テンプレートの実行に必要な権限ポリシーの表示] をクリックします。 RAMロールにポリシーをアタッチする方法については、「必要なポリシーをOOSで信頼できるロールにアタッチする」をご参照ください。
説明テンプレートパラメーターの設定方法については、「ライフサイクルフックとOOSテンプレートのベストプラクティスの概要」をご参照ください。
イベントバス: このオプションを選択すると、Auto Scalingはさまざまな種類のライフサイクルフック通知を送信します。 通知に基づいて、イベントを柔軟に識別して処理できます。
表示されるメッセージで、[OK] をクリックします。
ライフサイクルフックを作成した後、スケーリンググループの詳細ページの [ライフサイクルフック] タブでライフサイクルフックを表示できます。
指定されたタイプのスケーリングアクティビティがAuto scalingによってトリガーされると、ライフサイクルフックが有効になり、スケーリングアクティビティに関与するECSインスタンスまたはエラスティックコンテナインスタンスは [保留中の追加] または [保留中の削除] 状態になります。 次の図は、ライフサイクルフックが有効になったときのECSインスタンスのステータスを示しています。
ライフサイクルフックの変更または削除
ビジネス要件に基づいてライフサイクルフックを変更できます。 不要になったライフサイクルフックを削除することもできます。
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
スケーリンググループページで、スケーリンググループを見つけて、アクション列の詳細をクリックします。
スケーリンググループの詳細ページで、ライフサイクルフックタブをクリックします。
ビジネス要件に基づいてライフサイクルフックを変更または削除します。
ライフサイクルフックの変更
ライフサイクルフックがビジネス要件を満たしていない場合は、新しいフックを作成する必要なく、ライフサイクルフックのパラメーターを変更できます。
変更するライフサイクルフックを見つけて、[操作] 列の [変更] をクリックします。
ビジネス要件に基づいてライフサイクルフックを変更し、[OK] をクリックします。
ライフサイクルフックの作成後にライフサイクルフックの名前を変更することはできません。 ライフサイクルフックパラメーターの詳細については、「手順7」をご参照ください。
ライフサイクルフックの削除
ライフサイクルフックが不要になった場合は、ライフサイクルフックを削除してライフサイクルフックのクォータを解放できます。 たとえば、スケーリングアクティビティがライフサイクルフックによって一時停止されている場合、ライフサイクルフックを削除できます。
重要有効なライフサイクルフックを削除すると、ライフサイクルフックが適用されているECSインスタンスまたはエラスティックコンテナインスタンスは、予定より早く [保留中の追加] または [保留中の削除] 状態を終了します。
1つ以上のライフサイクルフックを削除します。
ライフサイクルフックを1つ削除する: 削除するライフサイクルフックを見つけて、[操作] 列の [削除] をクリックします。
複数のライフサイクルフックを削除する: 削除するライフサイクルフックを選択し、ページの左下隅にある [削除] をクリックします。
[ライフサイクルフックの削除] メッセージで、[OK] をクリックします。
ライフサイクルフックの無効化または有効化
デフォルトでは、ライフサイクルフックは作成後すぐに [有効] 状態になります。 ビジネス要件に基づいてライフサイクルフックを有効または無効にできます。
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
スケーリンググループページで、目的のスケーリンググループを見つけて、アクション列の詳細をクリックします。
スケーリンググループの詳細ページで、ライフサイクルフックタブをクリックします。
ビジネス要件に基づいてライフサイクルフックを無効または有効にします。
ライフサイクルフックを無効にする
現在有効なライフサイクルフックが必要でない場合は、ライフサイクルフックを無効にできます。
無効にするライフサイクルフックを見つけて、[操作] 列の [無効にする] をクリックします。
[ライフサイクルフックの無効化] メッセージで、[OK] をクリックします。
ライフサイクルフックの有効化
ビジネスで無効になっているライフサイクルフックが必要な場合は、ライフサイクルフックを有効にできます。
有効にするライフサイクルフックを見つけて、[操作] 列の [有効にする] をクリックします。
[ライフサイクルフックの有効化] メッセージで、[OK] をクリックします。
次のステップ
API操作を呼び出して1つ以上のライフサイクルフックを作成する方法については、「CreateLifecycleHook」をご参照ください。
API操作を呼び出してライフサイクルフックを変更する方法については、「ModifyLifecycleHook」をご参照ください。
API操作を呼び出してライフサイクルフックを削除する方法については、「DeleteLifecycleHook」をご参照ください。
ライフサイクルフックを予定より早く終了する方法については、「CompleteLifecycleAction」をご参照ください。