ALIYUN::ESS::LifecycleHook

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模板、消息服务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的生命周期挂钩触发的等待状态结束时,会提前将其他对应的等待状态提前结束。其他情况下,下一步动作均以最后一个结束等待状态的下一步动作为准。

取值:

  • 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"
            ]
          }
        }
      }
    }