批量释放ECS实例

系统运维管理OOS为批量释放实例的场景提供了公共模板。只需输入需要被释放的实例ID,就可以达到释放所有实例的操作,避免手动操作单独释放实例。

前提条件

确保需被释放的实例类型属于按量付费预付费类型。

操作步骤

  1. 登录运维编排管理控制台。

  2. 单击公共模板。

  3. 根据实例付费情况,在搜索框内搜索ACS-ECS-BulkyDeleteInstances(批量删除按量付费实例)模板,对其单击创建执行。

    ACS-ECS-BulkyDeleteInstances1

  4. 单击下一步,设置参数。

    image

  5. 输入公共模板参数:ACS-ECS-BulkyDeleteInstances。

    image

    参数

    说明

    示例

    target

    选择被处理的示例标签 / ECS实例ID

    test:oos / i-bp10jvphtux8ad******

    force

    是否强制删除实例

    true/false

    rateControl

    速率控制类型

    并发控制

    并发速率

    10

    最大错误次数

    10

    执行使用到的权限的来源

    可选参数。

    • (默认设置)当前账号的已有权限:执行您使用的账号的权限动作。请确保您拥有创建自定义镜像涉及的所有ECS API调用权限。

    • 指定RAM角色,使用该角色的权限:如果指定了RAM角色名称,OOS扮演该RAM角色执行运维任务。

    当前账号的已有权限

  6. 单击下一步,确认,单击创建。

    image

  7. 在执行管理中可查看刚刚创建的执行,若创建执行成功,且执行状态处于运行中,则表示实例处于删除中。

  8. 状态为成功时,表示实例全部被删除。

  9. 查询实例是否被删除。 2

附录1:公共模板和背后逻辑

  • 批量删除非预付费实例(ACS-ECS-BulkyDeleteInstances

FormatVersion: OOS-2019-06-01
Description:
  en: Bulky delete ECS postpaid instances.
  zh-cn: 批量删除ECS按量付费实例。
  name-en: ACS-ECS-BulkyDeleteInstances
  name-zh-cn: 批量删除ECS实例
  categories:
    - instance_manage
Parameters:
  targets:
    Type: Json
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: 'ALIYUN::ECS::Instance'
  force:
    Description:
      en: Whether to force the release of a running instance.
      zh-cn: 是否强制释放正在运行的实例。
    Type: Boolean
    Default: false
  rateControl:
    Description:
      en: Concurrency ratio of task execution.
      zh-cn: 任务执行的并发比率。
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 10
  OOSAssumeRole:
    Description:
      en: The RAM role to be assumed by OOS.
      zh-cn: OOS扮演的RAM角色。
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: getInstance
    Description:
      en: Views the ECS instances.
      zh-cn: 获取ECS实例。
    Action: 'ACS::SelectTargets'
    Properties:
      ResourceType: 'ALIYUN::ECS::Instance'
      Filters:
        - '{{ targets }}'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: 'Instances.Instance[].InstanceId'
  - Name: deleteInstance
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Deletes ECS instance with the specified instance ID.
      zh-cn: 通过指定实例ID删除实例。
    Properties:
      Service: ECS
      API: DeleteInstance
      Parameters:
        InstanceId: '{{ ACS::TaskLoopItem }}'
        Force: '{{ force }}'
    Loop:
      RateControl: '{{ rateControl }}'
      Items: '{{ getInstance.instanceIds }}'            

该模板顺序执行以下任务:

  1. 获取目标实例或实例上的Tags。

  2. 批量删除实例。

  • 批量删除预付费实例(ACS-ECS-BulkyDeletePrepaidInstances

FormatVersion: OOS-2019-06-01
Description:
  en: >-
    Bulky delete prepaid instances.The specified ECS instances must be in
    stopped status.
  zh-cn: 批量删除ECS预付费实例。指定的ECS实例必须处于已停止状态。
  name-en: ACS-ECS-BulkyDeletePrepaidInstances
  name-zh-cn: 批量删除ECS预付费实例
  categories:
    - instance_manage
Parameters:
  targets:
    Type: Json
    AssociationProperty: Targets
    AssociationPropertyMetadata:
      ResourceType: 'ALIYUN::ECS::Instance'
  rateControl:
    Description:
      en: Concurrency ratio of task execution.
      zh-cn: 任务执行的并发比率。
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 10
  OOSAssumeRole:
    Description:
      en: The RAM role to be assumed by OOS.
      zh-cn: OOS扮演的RAM角色。
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: getInstance
    Description:
      en: Views the ECS instances.
      zh-cn: 获取ECS实例。
    Action: 'ACS::SelectTargets'
    Properties:
      ResourceType: 'ALIYUN::ECS::Instance'
      Filters:
        - '{{ targets }}'
    Outputs:
      instanceIds:
        Type: List
        ValueSelector: 'Instances.Instance[].InstanceId'
  - Name: modifyInstanceChargeType
    Action: 'ACS::ExecuteAPI'
    Description:
      en: Modify the charge type for prepaid instances to postpaid.
      zh-cn: 修改预付费实例付费方式为按量付费。
    Properties:
      Service: ECS
      API: ModifyInstanceChargeType
      Parameters:
        InstanceIds: '{{ getInstance.instanceIds }}'
        InstanceChargeType: PostPaid
  - Name: deleteInstance
    Action: 'ACS::ECS::DeleteInstance'
    Description:
      en: Deletes the ECS instance by instance ID.
      zh-cn: 通过实例ID删除实例。
    Properties:
      instanceId: '{{ ACS::TaskLoopItem }}'
    Loop:
      RateControl: '{{ rateControl }}'
      Items: '{{ getInstance.instanceIds }}'

该模板顺序执行以下任务:

  1. 获取目标实例或实例上的Tags。

  2. 将预付费实例修改为按量付费实例。

  3. 批量删除实例。