# Creating an AS Group

#### Function

An AS group consists of a collection of instances that apply to the same scenario. It is the basis for enabling or disabling AS policies and performing scaling actions. An AS group specifies parameters, such as the maximum number of instances, expected number of instances, minimum number of instances, VPC, subnet, and load balancing.

- Each user can create a maximum of 25 AS groups by default.
- If ELB is configured, AS automatically binds or unbinds a load balancer to or from an instance when the instance is added or removed from the AS group.
- If an AS group uses ELB health check, the listening ports on the load balancers must be enabled for the instances in the AS group. Enable the listening ports in security groups.

#### URI

POST /autoscaling-api/v1/{project_id}/scaling_group

Table 1 Parameter description
Parameter | Mandatory | Type | Description
--- | --- | --- | ---
project_id | Yes | String | Specifies the project ID.

#### Request Message

- Request parameters

  Table 2 Request parameters
  Parameter | Mandatory | Type | Description
  --- | --- | --- | ---
  scaling_group_name | Yes | String | Specifies the AS group name. The name contains only letters, digits, underscores (_), and hyphens (-), and cannot exceed 64 characters.
  scaling_configuration_id | No | String | Specifies the AS configuration ID, which can be obtained using the API for querying AS configurations. For details, see Querying AS Configurations.
  desire_instance_number | No | Integer | Specifies the expected number of instances. The default value is the minimum number of instances. The value ranges from the minimum number of instances to the maximum number of instances.
  min_instance_number | No | Integer | Specifies the minimum number of instances. The default value is 0.
  max_instance_number | No | Integer | Specifies the maximum number of instances. The default value is 0.
  cool_down_time | No | Integer | Specifies the cooldown period (in seconds). The value ranges from 0 to 86400 and is 300 by default. After a scaling action is triggered, the system starts the cooldown period. During the cooldown period, scaling actions triggered by alarms will be denied. Scheduled, periodic, and manual scaling actions are not affected.
  lb_listener_id | No | String | Specifies the ID of a classic load balancer listener. The system supports the binding of up to six load balancer listeners, the IDs of which are separated using a comma (,). This parameter is alternative to lbaas_listeners.
  lbaas_listeners | No | Array of lbaas_listeners objects | Specifies information about an enhanced load balancer. The system supports the binding of up to six load balancers. This parameter is in list data structure. For details, see Table 3. This parameter is alternative to lb_listener_id.
  available_zones | No | Array of strings | Specifies the AZ information. The instances added in a scaling action will be created in a specified AZ. If you do not specify an AZ, the system automatically specifies one. For details, see Availability Zone.
  networks | Yes | Array of networks objects | Specifies network information. The system supports up to five subnets. The first subnet transferred serves as the primary NIC of the ECS by default. This parameter is in data structure. For details, see Table 4.

  security_groups

  No

  Array of security_groups objects

  Specifies the security group information. A maximum of one security group can be selected. This parameter is in data structure. For details, see Table 5.

  If the security group is specified both in the AS configuration and AS group, scaled ECS instances will be added to the security group specified in the AS configuration. If the security group is not specified in either of them, scaled ECS instances will be added to the default security group. For your convenience, you are advised to specify the security group in the AS configuration.

  vpc_id | Yes | String | Specifies the VPC ID, which can be obtained using the API for querying VPCs. For details, see "Querying VPCs" in Virtual Private Network API Reference.

  health_periodic_audit_method

  No

  String

  Specifies the health check method for instances in the AS group. The health check methods include ELB_AUDIT and NOVA_AUDIT. When load balancing is configured for an AS group, the default value is ELB_AUDIT. Otherwise, the default value is NOVA_AUDIT.
  - ELB_AUDIT: indicates the ELB health check, which takes effect in an AS group with a listener.
  - NOVA_AUDIT: indicates the ECS instance health check, which is the health check method delivered with AS.

  health_periodic_audit_time | No | Integer | Specifies the instance health check period. The value can be 1, 5, 15, 60, or 180 in the unit of minutes. If this parameter is not specified, the default value is 5. If the value is set to 0, health check is performed every 10 seconds.

  health_periodic_audit_grace_period

  No

  Integer

  Specifies the grace period for instance health check. The unit is second and value range is 0-86400. The default value is 600.

  The health check grace period starts after an instance is added to an AS group and is enabled. The AS group will start checking the instance status only after the grace period ends.

  This parameter is valid only when the instance health check method of the AS group is ELB_AUDIT.

  instance_terminate_policy

  No

  String

  Specifies the instance removal policy.
  - OLD_CONFIG_OLD_INSTANCE (default): The earlier-created instances based on the earlier-created AS configurations are removed first.
  - OLD_CONFIG_NEW_INSTANCE: The later-created instances based on the earlier-created AS configurations are removed first.
  - OLD_INSTANCE: The earlier-created instances are removed first.
  - NEW_INSTANCE: The later-created instances are removed first.

  notifications | No | Array of strings | Specifies the notification mode. EMAIL refers to notification by email.

  delete_publicip

  No

  Boolean

  Specifies whether to delete the EIP bound to the ECS when deleting the ECS. The value can be true or false. The default value is false.
  - true: deletes the EIP bound to the ECS when deleting the ECS.
  - false: only unbinds the EIP bound to the ECS when deleting the ECS.

  delete_volume

  No

  Boolean

  Specifies whether to delete the data disks attached to the ECS when deleting the ECS. The value can be true or false. The default value is false.
  - true: deletes the data disks attached to the ECS when deleting the ECS.
  - false: only detaches the data disks attached to the ECS when deleting the ECS.

  enterprise_project_id

  No

  String

  Specifies the enterprise project ID, which is used to specify the enterprise project to which the AS group belongs.
  - If the value is 0 or left blank, the AS group belongs to the default enterprise project.
  - If the value is a UUID, the AS group belongs to the enterprise project corresponding to the UUID.

  If an enterprise project is configured for an AS group, ECSs created in this AS group also belong to this enterprise project. Otherwise, the default enterprise project will be used.

  multi_az_priority_policy

  No

  String

  Specifies the priority policy used to select target AZs when adjusting the number of instances in an AS group.
  - EQUILIBRIUM_DISTRIBUTE (default): When adjusting the number of instances, ensure that instances in each AZ in the available_zones list is evenly distributed. If instances cannot be added in the target AZ, select another AZ based on the PICK_FIRST policy.
  - PICK_FIRST: When adjusting the number of instances, target AZs are determined in the order in the available_zones list.

  description | No | String | Specifies the description of the AS group. The value can contain 1 to 256 characters.

  Table 3 lbaas_listeners field description
  Parameter | Mandatory | Type | Description
  --- | --- | --- | ---
  pool_id | Yes | String | Specifies the backend ECS group ID.
  protocol_port | Yes | Integer | Specifies the backend protocol ID, which is the port on which a backend ECS listens for traffic. The port ID ranges from 1 to 65535.
  weight | Yes | Integer | Specifies the weight, which determines the portion of requests a backend ECS processes when being compared to other backend ECSs added to the same listener. The value of this parameter ranges from 0 to 100.

  Table 4 networks field description
  Parameter | Mandatory | Type | Description
  --- | --- | --- | ---
  id | Yes | String | Specifies the subnet ID.

  Table 5 security_groups field description
  Parameter | Mandatory | Type | Description
  --- | --- | --- | ---
  id | Yes | String | Specifies the security group ID.

- Example request

  The following example shows how to create an AS group:

  - The AS group is named GroupNameTest.
  - The AS configuration ID is 47683a91-93ee-462a-a7d7-484c006f4440.
  - The VPC ID is a8327883-6b07-4497-9c61-68d03ee193a, and the network ID is 3cd35bca-5a10-416f-8994-f79169559870.
  - The maximum number of instances is 10, the expected number of instances is 0, and the minimum number of instances is 0.
  - The health check method is ECS health check.
  - When adjusting the number of instances, select target AZ based on the PICK FIRST policy.

  The request example is as follows:

      POST https://{Endpoint}/autoscaling-api/v1/{project_id}/scaling_group

      {
          "scaling_group_name": "GroupNameTest",
          "scaling_configuration_id": "47683a91-93ee-462a-a7d7-484c006f4440",
          "desire_instance_number": 0,
          "min_instance_number": 0,
          "max_instance_number": 10,
          "health_periodic_audit_method": "NOVA_AUDIT",
          "vpc_id": "a8327883-6b07-4497-9c61-68d03ee193a",
          "available_zones": ["XXXa","XXXb"],
          "networks": [
              {
                  "id": "3cd35bca-5a10-416f-8994-f79169559870"
              }
          ],
          "enterprise_project_id": "c92b1a5d-6f20-43f2-b1b7-7ce35e58e413",

          "multi_az_priority_policy": "PICK_FIRST"
      }

#### Response Message

- Response parameters

  Table 6 Response parameter
  Parameter | Type | Description
  --- | --- | ---
  scaling_group_id | String | Specifies the AS group ID.

- Example response

      {
          "scaling_group_id": "a8327883-6b07-4497-9c61-68d03ee193a1"
      }

#### Returned Values

- Normal

  200

- Abnormal

  Returned Value | Description
  --- | ---
  400 Bad Request | The server failed to process the request.
  401 Unauthorized | You must enter the username and password to access the requested page.
  403 Forbidden | You are forbidden to access the requested page.
  404 Not Found | The server could not find the requested page.
  405 Method Not Allowed | You are not allowed to use the method specified in the request.
  406 Not Acceptable | The response generated by the server could not be accepted by the client.
  407 Proxy Authentication Required | You must use the proxy server for authentication so that the request can be processed.
  408 Request Timeout | The request timed out.
  409 Conflict | The request could not be processed due to a conflict.
  500 Internal Server Error | Failed to complete the request because of an internal service error.
  501 Not Implemented | Failed to complete the request because the server does not support the requested function.
  502 Bad Gateway | Failed to complete the request because the request is invalid.
  503 Service Unavailable | Failed to complete the request because the system is unavailable.
  504 Gateway Timeout | A gateway timeout error occurred.

#### Error Codes

See Error Codes.

Parent topic: AS Groups