👨‍💻 Amazon EC2 Auto Scaling ライフサイクルフックの図解

ライフサイクルフックとは? Auto Scalingグループでインスタンスが起動または終了する際に、特定のアクションを実行するための「一時停止ポイント」です。これにより、インスタンスが完全に使用可能になる前や、終了する前に、カスタム処理を実行できます。

📋 EC2インスタンスのライフサイクル全体像

Pending

インスタンス起動中

起動ライフサイクルフック

ここで一時停止&カスタム処理

InService

実行中・稼働状態

Terminating

終了処理中

終了ライフサイクルフック

ここで一時停止&カスタム処理

Terminated

終了済み

🔄 ライフサイクルフックの動作

1

一時停止とタイムアウト

ライフサイクルフックが設定されると、インスタンスは指定されたポイント(起動時または終了時)で 一時停止状態 になります。この状態は デフォルトで1時間 継続しますが、設定により変更可能です。

2

通知の送信

インスタンスが一時停止すると、Auto Scalingは 通知 を送信します(Amazon SNS、Amazon SQS、または Lambda関数を通じて)。この通知には、インスタンスID、Auto Scalingグループ名などの情報が含まれます。

// 通知メッセージの例(JSON形式) { "LifecycleHookName": "my-launch-hook", "AccountId": "123456789012", "RequestId": "12345678-1234-1234-1234-123456789012", "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING", "AutoScalingGroupName": "my-asg", "InstanceId": "i-1234567890abcdef0", "LifecycleActionToken": "87654321-4321-4321-4321-210987654321", "NotificationMetadata": "カスタムメタデータ" }
3

カスタムアクションの実行

通知を受け取ったアプリケーションは、必要なカスタムアクションを実行します。例えば:

  • 起動時:アプリケーションのインストール、データのダウンロード、設定など
  • 終了時:ログのアップロード、接続の終了、データのバックアップなど
4

ライフサイクルアクションの完了

カスタムアクションが完了したら、AWS CLIまたはSDKを使用して 「完了」または「放棄」 のシグナルをAuto Scalingに送信します。

// AWS CLI を使用してライフサイクルアクションを完了させる例 aws autoscaling complete-lifecycle-action \ --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg \ --lifecycle-action-result CONTINUE \ --instance-id i-1234567890abcdef0 \ --lifecycle-action-token 87654321-4321-4321-4321-210987654321

🛠️ 実用的なユースケース

起動時のライフサイクルフック活用例

終了時のライフサイクルフック活用例

📝 ライフサイクルフックの設定方法

1

通知先の準備

まず、ライフサイクルイベントの通知を受け取るために、以下のいずれかを設定します:

  • Amazon SNSトピック
  • Amazon SQSキュー
  • AWS Lambda関数
2

ライフサイクルフックの作成

AWS マネジメントコンソール、AWS CLI、またはAWS SDKを使用してライフサイクルフックを作成します。

// AWS CLI を使用してライフサイクルフックを作成する例 aws autoscaling put-lifecycle-hook \ --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING \ --notification-target-arn arn:aws:sns:region:account-id:my-topic \ --role-arn arn:aws:iam::account-id:role/my-role \ --heartbeat-timeout 3600 \ --default-result ABANDON
3

カスタムロジックの実装

通知を受け取ったときに実行するカスタムロジックを、Lambda関数、EC2インスタンス、またはその他のサービスに実装します。

⚠️ 注意点

🔍 まとめ

ライフサイクルフックは、EC2 Auto Scalingの柔軟性を大幅に向上させる機能です。インスタンスの起動や終了時に独自のカスタムロジックを実行することで、アプリケーションの可用性、信頼性、およびパフォーマンスを向上させることができます。初心者の方も、この機能を活用してAuto Scalingをより効果的に利用しましょう!

Created by SSuzuki1063

AWS SAP Learning Resources