添加生命周期挂钩 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

添加生命周期挂钩

设置通知目标并准备使用后,添加生命周期钩子,以便在发生相应的生命周期事件时,可以使用事件通知来执行自定义操作。

可以实现两种类型的生命周期挂钩:启动生命周期挂钩和终止生命周期挂钩。使用启动生命周期钩子准备实例以供使用,或者在完全应用其配置之前延迟实例在负载均衡器后注册。使用终止生命周期钩子准备要关闭的正在运行的实例。

创建生命周期挂钩时,请注意以下设置:

  • 检测信号超时:此设置指定挂接超时之前必须经过的时间。该范围是307200秒。默认值为 1 小时 (3600)。在超时段内,您可以执行安装应用程序或下载日志或其他数据等操作。

  • 默认结果:此设置定义在生命周期挂钩超时结束时或发生意外故障时执行的操作。您可以选择放弃(默认值) 或Continue

    • 如果实例正在启动,则继续指示您的操作已成功,并且 Auto Scaling 组可将实例投入使用。否则,放弃指示您的自定义操作未成功,并且 Amazon EC2 Auto Scaling 可终止实例。

    • 如果实例正在终止,则放弃和继续都允许终止实例。不过,放弃将停止任何剩余操作(例如,其他生命周期挂钩),而继续将允许完成任何其他生命周期挂钩。

添加生命周期挂钩(console)

请按照以下步骤向现有 Auto Scaling 组添加生命周期挂钩。您可以指定是在实例启动还是终止时使用挂钩,以及在放弃或继续之前等待生命周期挂钩完成的时间。

添加生命周期挂钩

  1. 以下网址打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/

  2. 选中 Auto Scaling 组旁边的复选框。

    将在Auto Scaling 组页.

  3. Instance management (实例管理) 选项卡的 Lifecycle hooks (生命周期挂钩) 中,选择 Create lifecycle hook (创建生命周期挂钩)

  4. 要定义生命周期挂钩,请执行以下操作:

    1. 对于 Lifecycle hook name (生命周期挂钩名称),请指定生命周期挂钩的名称。

    2. 对于 Lifecycle transition (生命周期转换),请选择 Instance launch (实例启动)Instance terminate (实例终止)

    3. Heartbeat timeout (检测信号超时) 指定超时值,该值允许您控制实例保持等待状态的时间。

    4. 适用于默认结果中,请指定 Auto Scaling 组在生命周期挂钩超时结束或发生意外故障时执行的操作。

    5. (可选)通知元数据中,请指定您希望在 Amazon EC2 Auto Scaling 向通知目标发送消息时包含的其他信息。

  5. 选择创建

添加生命周期挂钩 ()Amazon CLI)

使用创建生命周期挂钩放置生命周期挂钩命令。

要执行扩展操作,请使用以下命令。

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-hook --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING

要执行缩减操作,请使用以下命令。

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-hook --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING

要使用 Amazon SNS 或 Amazon SQS 接收通知,您必须指定通知目标和 IAM 角色。有关更多信息,请参阅 为生命周期挂钩配置通知目标

例如,添加以下选项可将 SNS 主题指定为通知目标。

--notification-target-arn arn:aws:sns:region:123456789012:my-sns-topic --role-arn arn:aws:iam::123456789012:role/my-notification-role

该主题将使用以下键/值对接收测试通知。

"Event": "autoscaling:TEST_NOTIFICATION"