语法
{
"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"
]
}
}
}
}