语法
{
  "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模板、消息服务MNS队列或主题,参数取值格式: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个字符。  弹性伸缩每次推送消息到通知对象时,会同时发送您预先指定的 NotificationMetadata参数值,便于管理和标记不同类别的通知信息。当您同时指定了NotificationArn参数时,NotificationMetadata参数方可生效。 | 
| ScalingGroupId | String | 是 | 否 | 伸缩组ID。 | 无 | 
| DefaultResult | String | 否 | 是 | 等待状态结束后的下一步动作。 当伸缩组发生弹性收缩活动(SCALE_IN)并触发多个生命周期挂钩时,DefaultResult=ABANDON的生命周期挂钩触发的等待状态结束时,会提前将其他对应的等待状态提前结束。其他情况下,下一步动作均以最后一个结束等待状态的下一步动作为准。 | 取值:  | 
| LifecycleTransition | String | 是 | 是 | 生命周期挂钩适用的伸缩活动类型。 | 取值:  SCALE_OUT:伸缩组弹性扩张活动。SCALE_IN:伸缩组弹性收缩活动。
 | 
示例
- 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"
        ]
      }
    }
  }
}