全部产品
Search
文档中心

弹性伸缩:CreateLifecycleHook - 为伸缩组创建一个或多个生命周期挂钩

更新时间:Nov 11, 2024

CreateLifecycleHook API用于在指定的弹性伸缩组中创建一个或多个生命周期挂钩。这些挂钩在实例的生命周期关键阶段(如启动、终止前)介入,使您能够执行自定义操作,如发送通知或执行自动化脚本等。通过此功能,您可以实现更细粒度的控制和管理,例如在实例被自动伸缩活动影响前后执行验证、配置或数据备份任务,从而增强应用部署的灵活性和可靠性。

接口说明

一个伸缩组最多可以创建 6 个生命周期挂钩。创建了生命周期挂钩的伸缩组,在发生伸缩活动时,生命周期挂钩会暂停伸缩活动一段时间,具体等待时长可以通过 HeartbeatTimeout 参数指定。您可以在等待期间进行初始化 ECS 实例配置、获取 ECS 实例数据等操作。

弹性扩张活动时,ECS 实例添加至 RDS 实例白名单后进入等待状态,等待状态结束后再加入 SLB 实例后端服务器组。弹性收缩活动时,ECS 实例从 SLB 实例后端服务器组移出后进入等待状态,等待状态结束后再从 RDS 实例白名单移出。

生命周期挂钩可以配置通知方式,支持 MNS 主题、MNS 队列和 OOS 模板。如果配置 OOS 模板,您需要为 OOS 服务创建 RAM 角色。具体操作,请参见为 OOS 服务设置 RAM 权限

说明 如果伸缩组有存量的 ECS 实例,且配置的 OOS 模板用于加入或移出除 RDS 外的其他云数据库白名单,则您必须手动将存量的 ECS 实例加入云数据库的白名单。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
ess:CreateLifecycleHookcreate
  • 全部资源
    *

请求参数

名称类型必填描述示例值
ScalingGroupIdstring

目标伸缩组的 ID。

asg-bp1eyv4qn8ssgv43****
LifecycleHookNamestring

生命周期挂钩的名称。不能与当前伸缩组其他生命周期挂钩重名,长度为 2~64 个英文或中文字符,以数字、大小写字母或中文开头,可包含数字、下划线(_)、短划线(-)和英文句号(.)。

默认值为 LifecycleHookId 的值。

lifecyclehook****
LifecycleTransitionstring

生命周期挂钩适用的伸缩活动类型,取值范围:

  • SCALE_OUT:伸缩组弹性扩张活动
  • SCALE_IN:伸缩组弹性收缩活动
SCALE_OUT
DefaultResultstring

等待状态结束后的下一步动作,取值范围:

  • CONTINUE:继续响应弹性扩张活动或者继续响应弹性收缩活动。
  • ABANDON:直接释放弹性扩张活动创建出来的 ECS 实例或者直接将弹性收缩活动中的 ECS 实例从伸缩组移除。
  • ROLLBACK:针对弹性收缩活动,会拒绝释放 ECS 实例,进行回滚;针对弹性扩张活动,会直接释放创建出来的 ECS 实例,效果同 ABANDON 一样。

当伸缩组发生弹性收缩活动(SCALE_IN)并触发多个生命周期挂钩时,如果一个生命周期挂钩的 DefaultResult 取值为 ABANDON 或 ROLLBACK,且该挂钩等待状态结束时,会提前将其他生命周期挂钩对应的等待状态提前结束。其他情况下,下一步动作均以最后一个结束等待状态的下一步动作为准。

默认值:CONTINUE

CONTINUE
HeartbeatTimeoutinteger

生命周期挂钩为伸缩组活动设置的等待时间,等待状态超时后会执行下一步动作。取值范围:30~21600,单位:秒。

创建了生命周期挂钩后,您可以调用 RecordLifecycleActionHeartbeat 延长 ECS 实例的等待时间,也可以调用 CompleteLifecycleAction 提前结束伸缩活动的等待状态。

默认值:600

600
NotificationMetadatastring

生命周期挂钩暂停伸缩活动时推送给 NotificationArn(通知对象)的通知信息,便于管理和标记不同类别的通知信息。必须同时指定 NotificationArn。参数长度不能超过 4096 个字符。

如果 NotificationArn 指定为 OOS 模板,包括公共模板或者自定义模板,则 NotificationMetadata 必须指定为 JSON 字符串,且与 OOS 模板的参数相符。比如,{"dbInstanceId": "dds-bp17661e0135****", "modifyMode": "Append"}dbInstanceIdmodifyMode为 OOS 模板中已定义的参数。OOS 模板的部分参数有默认值,NotificationMetadata 必须指定无默认值的参数,指定有默认值的参数时会覆盖原默认值,但以下参数请保持默认值,用于在伸缩活动运行时获取相关信息:

  • regionId:伸缩活动执行的地域,默认为${regionId}

  • instanceIds:伸缩活动关联的实例列表,默认为${instanceIds}

  • lifecycleHookId:生命周期挂钩 ID,默认为${lifecycleHookId}

  • lifecycleActionToken:伸缩活动的等待状态标识符,用于提前结束当前的挂起活动,默认为${lifecycleActionToken}

  • scalingGroupId:伸缩活动所属的伸缩组 ID,默认为${scalingGroupId}

  • lifecycleActionResult :生命周期挂钩等待状态结束后的下一步动作,用于在 OOS 模板执行失败时提前结束当前的挂起活动,当 DefaultResult 为 ROLLBACK 时,参数值默认为 ROLLBACK,其余情况默认为 ABANDON。

说明
  • 您可以根据需要设置 lifecycleActionResult 的值来覆盖当前默认值,取值范围为 ABANDON、CONTINUE、ROLLBACK、${lifecycleActionResult}。 其中,${lifecycleActionResult}表示 lifecycleActionResult 的值和 DefaultResult 保持一致。
    • 您可以在 OOS 控制台获取对应模板的参数的详细信息。
    Test lifecycle hook.
    NotificationArnstring

    生命周期挂钩通知对象标识符,不设置本参数表示不发送通知,设置本参数时支持以下通知方式:

    • 消息服务 MNS 队列,参数取值格式:acs:mns:{region-id}:{account-id}:queue/{queuename} 。
    • 消息服务 MNS 主题,参数取值格式:acs:mns:{region-id}:{account-id}:topic/{topicname}。
    • 运维编排 OOS 模板,参数取值格式:acs:oos:{region-id}:{account-id}:template/{templatename}。
    • 事件总线 ,参数取值格式:acs:eventbridge:{region-id}:{account-id}:eventbus/default。

    参数格式中的变量含义如下:

    • region-id:伸缩组所在的地域的 ID。
    • account-id:阿里云账号 ID,不支持 RAM 用户的账号 ID。
    • queuename:MNS 队列的名称。
    • topicname:MNS 主题的名称。
    • templatename:OOS 模板的名称。
    acs:mns:cn-beijing:161456884340****:queue/modifyLifecycleHo****

    返回参数

    名称类型描述示例值
    object
    RequestIdstring

    请求 ID。

    473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E
    LifecycleHookIdstring

    生命周期挂钩的 ID。

    ash-bp1at9ufhmcf9cmy****

    示例

    正常返回示例

    JSON格式

    {
      "RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E",
      "LifecycleHookId": "ash-bp1at9ufhmcf9cmy****"
    }

    错误码

    访问错误中心查看更多错误码。