インスタンスメタデータを使用してターゲットライフサイクル状態を取得する - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

インスタンスメタデータを使用してターゲットライフサイクル状態を取得する

起動する各 Auto Scaling インスタンスは、いくつかのライフサイクル状態を経過します。特定のライフサイクル状態移行で実行されるようにインスタンス上のカスタムアクションをインスタンス内から呼び出すには、インスタンスメタデータを使用してターゲットライフサイクル状態を取得する必要があります。

例えば、インスタンスが終了する前にインスタンス上で何らかのコードを実行するために、インスタンス内部からのインスタンスの終了を検出するメカニズムが必要な場合があります。これには、インスタンスからインスタンスのライフサイクル状態を直接ポーリングするコードを書きます。次に、ライフサイクル フックを Auto Scaling グループに追加して、コードが complete-lifecycle-action コマンドを送信して続行するまでインスタンスを実行し続けることができます。

Auto Scaling インスタンスのライフサイクルには、2 つの主な定常状態 (InService および Terminated) と、2 つの副次的な定常状態 (Detached および Standby) があります。ウォームプールを使用する場合、ライフサイクルにはさらに 4 つの定常状態 (Warmed:HibernatedWarmed:RunningWarmed:Stopped、および Warmed:Terminated) があります。

インスタンスが前述の定常状態のいずれかに移行する準備を行うと、Amazon EC2 Auto Scaling がインスタンスメタデータ項目の autoscaling/target-lifecycle-state の値を更新します。インスタンス内からターゲットライフサイクル状態を取得するには、インスタンスメタデータサービスを使用してインスタンスメタデータから状態を取得する必要があります。

注記

インスタンスメタデータは、アプリケーションがインスタンス情報をクエリするために使用できる、Amazon EC2 インスタンスに関するデータです。インスタンスメタデータサービスは、ローカルコードがインスタンスメタデータにアクセスするために使用する、インスタンス上のコンポーネントです。ローカルコードには、インスタンスで実行されているユーザーデータスクリプトまたはアプリケーションなどがあります。

ローカルコードは、インスタンスメタデータサービスバージョン 1 (IMDSv1) とインスタンスメタデータサービスバージョン 2 (IMDSv2) の 2 つの方法のいずれかを使用して、実行中のインスタンスからのインスタンスメタデータにアクセスできます。IMDSv2 はセッション指向のリクエストを使用し、インスタンスメタデータへのアクセス試行に利用される可能性がある数種類の脆弱性を緩和します。これら 2 つの方法の詳細については、「Amazon ECIMDSv22 の使用」を参照してください。 Amazon EC2

IMDSv2
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state
IMDSv1
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state

以下は出力例です。

InService

ターゲットライフサイクル状態とは、インスタンスの移行先状態のことです。現在のライフサイクル状態は、インスタンスの今の状態です。これらは、ライフサイクルアクションが完了し、インスタンスがターゲットライフサイクル状態への移行を完了した後で同じになる場合があります。インスタンスメタデータからインスタンスの現在のライフサイクル状態を取得することはできません。

Amazon EC2 Auto Scaling は、2022 年 3 月 10 日にターゲットライフサイクル状態の生成を開始しました。この日付以降にインスタンスがターゲットライフサイクル状態のいずれかに移行した場合は、インスタンスメタデータにターゲットライフサイクル状態項目が存在します。移行しなかった場合は項目が存在しないため、HTTP 404 エラーが発生します。

インスタンスメタデータの取得の詳細については、Amazon EC2 ユーザーガイド」の「インスタンスメタデータの取得」を参照してください。

ターゲットライフサイクル状態を使用するユーザーデータスクリプトでカスタムアクションを伴うライフサイクルフックを作成する方法を説明するチュートリアルについては、「チュートリアル: インスタンスメタデータを使用してターゲットライフサイクル状態を取得するようにユーザーデータを設定する」を参照してください。

重要

カスタムアクションをできるだけ早く呼び出しできるようにするには、ローカルコードで IMDS を頻繁にポーリングし、エラーがあれば再試行する必要があります。