AWS::AutoScaling::LifecycleHook
定义 Auto Scaling 组的生命周期挂钩。生命周期挂钩指定在 Amazon EC2 Auto Scaling 启动或终止实例时要执行的操作。在使用生命周期挂钩时,Auto Scaling 组在实例启动后(在它投入运行之前)或在实例终止时(在它完全终止前)将其暂停。
有关更多信息,请参阅 Amazon EC2 Auto Scaling API 参考 中的 PutLifecycleHook 以及 Amazon EC2 Auto Scaling 用户指南 中的 Amazon EC2 Auto Scaling 生命周期挂钩。
语法
要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:
JSON
{ "Type" : "AWS::AutoScaling::LifecycleHook", "Properties" : { "AutoScalingGroupName" :
String
, "DefaultResult" :String
, "HeartbeatTimeout" :Integer
, "LifecycleHookName" :String
, "LifecycleTransition" :String
, "NotificationMetadata" :String
, "NotificationTargetARN" :String
, "RoleARN" :String
} }
YAML
Type: AWS::AutoScaling::LifecycleHook Properties: AutoScalingGroupName:
String
DefaultResult:String
HeartbeatTimeout:Integer
LifecycleHookName:String
LifecycleTransition:String
NotificationMetadata:String
NotificationTargetARN:String
RoleARN:String
属性
AutoScalingGroupName
-
生命周期挂钩的 Auto Scaling 组的名称。
必需:是
类型:字符串
Update requires: Replacement
DefaultResult
-
生命周期挂钩超时结束时或发生意外失败时 Auto Scaling 组执行的操作。有效值为
CONTINUE
和ABANDON
(默认值)。必需:否
类型:字符串
Update requires: No interruption
HeartbeatTimeout
-
在生命周期挂钩超时之前经过的时间长度(以秒为单位)。如果生命周期挂钩超时,则 Amazon EC2 Auto Scaling 会执行您在
DefaultResult
属性中指定的操作。必需:否
类型:整数
Update requires: No interruption
LifecycleHookName
-
生命周期挂钩的名称。
必需:否
类型:字符串
最低:
1
最高:
255
模式:
[A-Za-z0-9\-_\/]+
Update requires: Replacement
LifecycleTransition
-
要将生命周期挂钩挂载到的实例状态。有效值为:
-
autoscaling:EC2_INSTANCE_LAUNCHING
-
autoscaling:EC2_INSTANCE_TERMINATING
必需:是
类型:字符串
Update requires: No interruption
-
NotificationMetadata
-
在 Amazon EC2 Auto Scaling 向通知目标发送消息时随时包含的其他信息。
必需:否
类型:字符串
最低:
1
最高:
1023
模式:
[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*
Update requires: No interruption
NotificationTargetARN
-
通知目标的 Amazon 资源名称 (ARN),Amazon EC2 Auto Scaling 使用该目标在实例处于生命周期挂钩的转换状态时发出通知。可以指定 Amazon SQS 队列或 Amazon SNS 主题。通知消息包含以下信息:生命周期操作令牌、用户账户 ID、Auto Scaling 组名称、生命周期挂钩名称、实例 ID、生命周期转换和通知元数据。
必需:否
类型:字符串
Update requires: No interruption
RoleARN
-
IAM 角色的 ARN,它允许 Auto Scaling 组发布到指定的通知目标(例如,Amazon SNS 主题或 Amazon SQS 队列)。有关创建此角色的信息,请参阅 Amazon EC2 Auto Scaling 用户指南 中的准备通知。
必需:否
类型:字符串
Update requires: No interruption
返回值
Ref
当该资源的逻辑 ID 提供给 Ref
内部函数时,Ref
将返回资源名称。例如:mylifecyclehook
。
有关使用 Ref
函数的更多信息,请参阅 Ref。
示例
以下示例指定生命周期挂钩。
实例终止的生命周期挂钩
以下示例指定一个生命周期挂钩,该挂钩支持在实例终止时的自定义操作。它使用 Ref
内部函数来引用在同一模板中的其他位置声明的 Auto Scaling 组(其逻辑名称为 myASG
)。
请注意,代码段使用 NotificationTargetARN
和 RoleARN
属性指定在发生生命周期操作时用于接收通知的 Amazon SNS 主题和 IAM 角色。
JSON
{ "myLifecycleHook":{ "Type":"AWS::AutoScaling::LifecycleHook", "Properties":{ "AutoScalingGroupName":{ "Ref":"myASG" }, "LifecycleTransition":"autoscaling:EC2_INSTANCE_TERMINATING", "NotificationTargetARN":{ "Ref":"lifecycleHookTopic" }, "RoleARN":{ "Fn::GetAtt":[ "lifecycleHookRole", "Arn" ] } } } }
YAML
--- myLifecycleHook: Type: AWS::AutoScaling::LifecycleHook Properties: AutoScalingGroupName: Ref: myASG LifecycleTransition: "autoscaling:EC2_INSTANCE_TERMINATING" NotificationTargetARN: Ref: lifecycleHookTopic RoleARN: Fn::GetAtt: - lifecycleHookRole - Arn
实例启动的生命周期挂钩
以下示例指定一个生命周期挂钩,该挂钩支持在实例启动时的自定义操作。生命周期挂钩将添加到从同一代码段创建的新 Auto Scaling 组中。有关更多信息,请参阅 LifecycleHookSpecification。
请注意,代码段使用 NotificationTargetARN
和 RoleARN
属性指定在发生生命周期操作时用于接收通知的 Amazon SQS 队列和 IAM 角色。
JSON
{ "AWSTemplateFormatVersion":"2010-09-09", "Parameters":{ "Subnets":{ "Type":"CommaDelimitedList" }, "AZs":{ "Type":"CommaDelimitedList" } }, "Resources":{ "myASG":{ "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "AvailabilityZones":[ { "Ref":"AZs" } ], "VPCZoneIdentifier":{ "Ref":"Subnets" }, "DesiredCapacity":"2", "MaxSize":"3", "MinSize":"1", "LaunchConfigurationName":{ "Ref":"myLaunchConfig" }, "LifecycleHookSpecificationList":[ { "LifecycleTransition":"autoscaling:EC2_INSTANCE_LAUNCHING", "LifecycleHookName":"myLifecycleHook", "HeartbeatTimeout":4800, "NotificationTargetARN":{ "Fn::GetAtt":[ "SQS", "Arn" ] }, "RoleArn":{ "Fn::Join":[ ":", [ "arn:aws:iam:", { "Ref":"AWS::AccountId" }, "role/role-name" ] ] } } ] } }, "SQS":{ "Type":"AWS::SQS::Queue" } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: Subnets: Type: CommaDelimitedList AZs: Type: CommaDelimitedList Resources: myASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: - !Ref AZs VPCZoneIdentifier: !Ref Subnets DesiredCapacity: '2' MaxSize: '3' MinSize: '1' LaunchConfigurationName: !Ref myLaunchConfig LifecycleHookSpecificationList: - LifecycleTransition: "autoscaling:EC2_INSTANCE_LAUNCHING" LifecycleHookName: "myLifecycleHook" HeartbeatTimeout: 4800 NotificationTargetARN: !GetAtt SQS.Arn RoleARN: !Join - ':' - - 'arn:aws:iam:' - !Ref 'AWS::AccountId' - role/role-name SQS: Type: AWS::SQS::Queue