すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:ALIYUN::ESS::LifecycleHook

最終更新日:Jan 16, 2025

ALIYUN::ESS::LifecycleHook は、スケーリンググループのライフサイクルフックを作成するために使用されます。

構文

{
  "Type": "ALIYUN::ESS::LifecycleHook",
  "Properties": {
    "LifecycleHookName": String,
    "NotificationArn": String,
    "HeartbeatTimeout": Integer,
    "NotificationMetadata": String,
    "ScalingGroupId": String,
    "DefaultResult": String,
    "LifecycleTransition": String
  }
}

プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

LifecycleHookName

String

いいえ

はい

ライフサイクルフックの名前。名前はスケーリンググループ内で一意である必要があります。

名前は 2 ~ 40 文字で、文字、数字、アンダースコア(_)、ハイフン(-)、ピリオド(.)を含めることができます。文字または数字で始める必要があります。

デフォルト値はライフサイクルフックの ID です。

NotificationArn

String

いいえ

はい

通知方法の Alibaba Cloud Resource Name(ARN)。

CloudOps Orchestration Service(OOS)テンプレート、Message Service(MNS)キュー、および MNS トピックなどの通知方法がサポートされています。プロパティ値は acs:ess:{region}:{account-id}:{resource-relative-id} 形式で指定します。

  • region: スケーリンググループが存在するリージョン

  • account-id: Alibaba Cloud アカウントの ID

値の形式:

  • MNS キューの値の形式: acs:ess:{region}:{account-id}:queue/{queuename}

  • MNS トピックの値の形式: acs:ess:{region}:{account-id}:topic/{topicname}

  • OOS テンプレートの値の形式: acs:ess:{region}:{account-id}:oos/{template_name}

HeartbeatTimeout

Integer

いいえ

はい

ライフサイクルフックのタイムアウト期間。タイムアウト期間内は、スケーリンググループのアクティビティは保留状態です。タイムアウト期間が終了すると、Auto Scaling は DefaultResult で指定されたアクションを実行します。ライフサイクルフックを作成した後、RecordLifecycleActionHeartbeat オペレーションを呼び出して、Elastic Compute Service(ECS)インスタンスが保留状態になっているタイムアウト期間を延長できます。また、CompleteLifecycleAction オペレーションを呼び出して、スケーリングアクティビティの保留状態を予定より早く終了することもできます。

有効な値: 30 ~ 21600。

単位: 秒。

デフォルト値: 600。

NotificationMetadata

String

いいえ

はい

スケーリングアクティビティが保留状態のときに Auto Scaling が送信する通知内の固定文字列。

文字列は最大 128 文字までです。

Auto Scaling は、指定された NotificationMetadata 値を通知メッセージとともに送信するため、通知を簡単に分類できます。このプロパティは、NotificationArn が指定されている場合にのみ有効になります。

ScalingGroupId

String

はい

いいえ

スケーリンググループの ID。

なし。

DefaultResult

String

いいえ

はい

ライフサイクルフックがタイムアウトしたときに、Auto Scaling がスケーリンググループに対して実行するアクション。

スケーリンググループの スケールイン アクティビティ中に複数のライフサイクルフックがトリガーされ、DefaultResult=ABANDON で構成されたライフサイクルフックがタイムアウトした場合、同じスケーリンググループ内の残りのライフサイクルフックもタイムアウトします。それ以外の場合、Auto Scaling はすべてのライフサイクルフックがタイムアウトした後にのみアクションを実行します。アクションは、最後にタイムアウトしたライフサイクルフックに指定した DefaultResult 値によって異なります。

有効な値:

  • CONTINUE(デフォルト): Auto Scaling はスケールインまたはスケールアウトアクティビティに応答します。

  • ABANDON: Auto Scaling はスケールアウト中に作成された ECS インスタンスを解放するか、スケールイン中にスケーリンググループから ECS インスタンスを削除します。

LifecycleTransition

String

はい

はい

ライフサイクルフックを適用するスケーリングアクティビティのタイプ。

有効な値:

  • SCALE_OUT: スケールアウトアクティビティ

  • SCALE_IN: スケールインアクティビティ

戻り値

Fn::GetAtt

  • LifecycleHookId: ライフサイクルフックの ID。

  • ScalingGroupId: スケーリンググループの ID。

  • YAML 形式

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      ScalingGroupId:
        Type: String
        AssociationProperty: ALIYUN::ESS::AutoScalingGroup::AutoScalingGroupId
    Resources:
      LifecycleHook:
        Type: ALIYUN::ESS::LifecycleHook
        Properties:
          LifecycleHookName: Demo997
          NotificationArn:
            Fn::Join:
              - ''
              - - 'acs:ess:'  # ARN のプレフィックス
                - Ref: ALIYUN::Region # リージョン
                - ':'
                - Ref: ALIYUN::TenantId # アカウント ID
                - ':'
                - oos/ACS-ESS-LifeCycleRunCommand # OOS テンプレート名
          ScalingGroupId:
            Ref: ScalingGroupId
          LifecycleTransition: SCALE_OUT
          HeartbeatTimeout: 30
          NotificationMetadata:
            Fn::Join:
              - ''
              - - |-  # 通知メタデータ(複数行可)
                  {
                    "commandContent": "python /home/test.py",  # 実行するコマンド
                    "commandType": "RunShellScript"  # コマンドタイプ
    Outputs:
      LifecycleHookId:
        Description: The lifecycle hook ID  # ライフサイクルフック ID の出力
        Value:
          Fn::GetAtt:
            - LifecycleHook
            - LifecycleHookId
  • JSON 形式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
        "ScalingGroupId": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ESS::AutoScalingGroup::AutoScalingGroupId"
        }
      },
      "Resources": {
        "LifecycleHook": {
          "Type": "ALIYUN::ESS::LifecycleHook",
          "Properties": {
            "LifecycleHookName": "Demo997",
            "NotificationArn": {
              "Fn::Join": [
                "",
                [
                  "acs:ess:",
                  {
                    "Ref": "ALIYUN::Region"
                  },
                  ":",
                  {
                    "Ref": "ALIYUN::TenantId"
                  },
                  ":",
                  "oos/ACS-ESS-LifeCycleRunCommand"
                ]
              ]
            },
            "ScalingGroupId": {
              "Ref": "ScalingGroupId"
            },
            "LifecycleTransition": "SCALE_OUT",
            "HeartbeatTimeout": 30,
            "NotificationMetadata": {
              "Fn::Join": [
                "",
                [
                  "{\n  \"commandContent\": \"python /home/test.py\",\n  \"commandType\": \"RunShellScript\"" // コマンドコンテンツとタイプ
                ]
              ]
            }
          }
        }
      },
      "Outputs": {
        "LifecycleHookId": {
          "Description": "The lifecycle hook ID",  // ライフサイクルフック ID
          "Value": {
            "Fn::GetAtt": [
              "LifecycleHook",
              "LifecycleHookId"
            ]
          }
        }
      }
    }