全部產品
Search
文件中心

:ALIYUN::ESS::LifecycleHook

更新時間:Feb 05, 2024

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

生命週期掛鈎通知物件識別碼。

目前支援OOS模板、Message ServiceMNS隊列或主題,參數取值格式:acs:ess:{region}:{account-id}:{resource-relative-id}

  • region:伸縮組所在的地區。

  • account-id:阿里雲帳號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

生命週期掛鈎為伸縮組活動設定的等待時間,等待狀態逾時後會執行下一步動作。建立了生命週期掛鈎後,您可以調用RecordLifecycleActionHeartbeat介面延長ECS執行個體的等待時間,也可以調用CompleteLifecycleAction介面提前結束伸縮活動的等待狀態。

取值範圍:30~21600。

單位:秒。

預設值:600。

NotificationMetadata

String

伸縮活動的等待狀態的固定字串資訊。

長度不超過128個字元。

Auto Scaling每次推送訊息到通知對象時,會同時發送您預先指定的 NotificationMetadata參數值,便於管理和標記不同類別的通知資訊。當您同時指定了NotificationArn參數時,NotificationMetadata參數方可生效。

ScalingGroupId

String

伸縮組ID。

DefaultResult

String

等待狀態結束後的下一步動作。

當伸縮組發生彈性收縮活動(SCALE_IN)並觸發多個生命週期掛鈎時,DefaultResult=ABANDON的生命週期掛鈎觸發的等待狀態結束時,會提前將其他對應的等待狀態提前結束。其他情況下,下一步動作均以最後一個結束等待狀態的下一步動作為準。

取值:

  • CONTINUE(預設值):繼續響應彈性擴張活動或者繼續響應彈性收縮活動。

  • ABANDON:直接釋放彈性擴張活動建立出來的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:'
                - Ref: ALIYUN::Region
                - ':'
                - Ref: ALIYUN::TenantId
                - ':'
                - oos/ACS-ESS-LifeCycleRunCommand
          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
        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",
          "Value": {
            "Fn::GetAtt": [
              "LifecycleHook",
              "LifecycleHookId"
            ]
          }
        }
      }
    }