Help Center/ Auto Scaling/ API Reference/ Application Examples/ Example 5: Performing Operations on Instances in Batches
Updated on 2022-09-22 GMT+08:00

Example 5: Performing Operations on Instances in Batches

Scenarios

This section describes how to perform operations on instances in batches by calling APIs. For details, see Calling APIs.

An instance is an ECS in an AS group. AS allows you to add or remove instances to or from an AS group in batches, configure instance protection or cancel the configuration for the instances in an AS group in batches, and set the standby mode or cancel the setting for the instances in an AS group in batches.

Constraints

  • After instances are removed from an AS group, the number of instances in the AS group cannot be less than the minimum number of instances.
  • After instances are added to an AS group, the number of instances in the AS group cannot be greater than the maximum number of instances.
  • Instances can be added to an AS group only when the AS group is in the INSERVICE state and has no scaling action in progress.
  • Instances can be removed from an AS group only when no scaling action is in progress. Only instances in INSERVICE state can be removed from an AS group.
  • To add instances to an AS group, ensure that the AZ of the instances must be within that of the AS group and that the instances are in the same VPC as the AS group.

Involved APIs

Procedure

  1. Determine the user token that can be used to authenticate the calling of other APIs.

    1. View the user token. For details, see Obtaining a User Token.
    2. Obtain the value of X-Subject-Token in the response header.

  1. Determine the AS group.

    1. View AS groups.
      • API

        URI format: GET /autoscaling-api/v1/{project_id}/scaling_group

        For details, see Querying AS Groups.

      • Example request

        GET: https://{Endpoint}/autoscaling-api/v1/0605767c2e80d5762fd0c0146a10aaf2/scaling_group

        Obtain {endpoint} from Regions and Endpoint.

      • Example response
        {
          "limit": 20,
          "scaling_groups": [
              {
                  "networks": [
                      {
                          "id": "a8327883-6b07-4497-9c61-68d03ee193a",
                          "ipv6_enable": true,
                          "ipv6_bandwidth": 
                          {
                              "id": "076ee2ff-f23e-4338-b8ac-1bc7278532d5"
                          }
                      }
                  ],
                  "available_zones": [
                      "XXXa",
                      "XXXb"
                  ],
                  "detail": null,
                  "scaling_group_name": "as-group-test",
                  "scaling_group_id": "77a7a397-7d2f-4e79-9da9-6a35e2709150",
                  "scaling_group_status": "INSERVICE",
                  "scaling_configuration_id": "1d281494-6085-4579-b817-c1f813be835f",
                  "scaling_configuration_name": "healthCheck",
                  "current_instance_number": 0,
                  "desire_instance_number": 1,
                  "min_instance_number": 0,
                  "max_instance_number": 500,
                  "cool_down_time": 300,
                  "lb_listener_id": "f06c0112570743b51c0e8fbe1f235bab",
                  "security_groups": [
                      {
                          "id": "8a4b1d5b-0054-419f-84b1-5c8a59ebc829"
                      }
                  ],
                  "create_time": "2015-07-23T02:46:29Z",
                  "vpc_id": "863ccae2-ee85-4d27-bc5b-3ba2a198a9e2",
                  "health_periodic_audit_method": "ELB_AUDIT",
                  "health_periodic_audit_time": 5,
                  "health_periodic_audit_grace_period": 600,
                  "instance_terminate_policy": "OLD_CONFIG_OLD_INSTANCE",
                  "is_scaling": false,
                  "delete_publicip": false,
                  "enterprise_project_id": "c92b1a5d-6f20-43f2-b1b7-7ce35e58e413",
                  "multi_az_priority_policy": "PICK_FIRST"
              }
        ],
        "total_number": 1,
        "start_number": 0
        }
    1. Select an AS group and record the AS group ID.

  1. Determine the instances.

    1. View the instances in the specified AS group.
      • Example request

        This example shows how to query enabled, healthy instances in the AS group with ID e5d27f5c-dd76-4a61-b4bc-a67c5686719a.

        GET: https://{Endpoint}/autoscaling-api/v1/0605767c2e80d5762fd0c0146a10aaf2/scaling_group_instance/e5d27f5c-dd76-4a61-b4bc-a67c5686719a/list?life_cycle_state=INSERVICE&health_status=NORMAL

        Obtain {endpoint} from Regions and Endpoint.

      • Example response
        {
            "limit": 10,
            "total_number": 1,
            "start_number": 0,
            "scaling_group_instances": [
                {
                    "instance_id": "b25c1589-c96c-465b-9fef-d06540d1945c",
                    "scaling_group_id": "e5d27f5c-dd76-4a61-b4bc-a67c5686719a",
                    "scaling_group_name": "discuz",
                    "life_cycle_state": "INSERVICE",
                    "health_status": "NORMAL",
                    "scaling_configuration_name": "discuz",
                    "scaling_configuration_id": "ca3dcd84-d197-4c4f-af2a-cf8ba39696ac",
                    "create_time": "2015-07-23T06:47:33Z",
                    "instance_name": "discuz_3D210808",
                    "protect_from_scaling_down": false
                }
            ]
        }
    1. Select instances and record their IDs.

  1. Remove the instances from the AS group in a batch.

    • API

      URI format: POST /autoscaling-api/v1/{project_id}/scaling_group_instance/{scaling_group_id}/action

      For details, see Batch Managing Instances.

    • Example request

      This example shows how to remove and delete instances with IDs instance_id_1 and instance_id_2 from the AS group with ID e5d27f5c-dd76-4a61-b4bc-a67c5686719a in a batch.

      POST: https://{Endpoint}/autoscaling-api/v1/0605767c2e80d5762fd0c0146a10aaf2/scaling_group_instance/e5d27f5c-dd76-4a61-b4bc-a67c5686719a/action

      Obtain {endpoint} from Regions and Endpoint.

      Body:

      {
      "action": "REMOVE",
      "instances_id": [
      "instance_id_1",
      "instance_id_2"
      ],
      "instance_delete": "yes"
      }
    • Example response

      The HTTP status code 204 is returned.