更新时间:2024-04-25 GMT+08:00

创建弹性伸缩配置

功能介绍

创建弹性伸缩配置。

  • 伸缩配置是伸缩组内实例(弹性云服务器)的模板,定义了伸缩组内待添加的实例的规格数据。
  • 伸缩配置与伸缩组是解耦的,同一伸缩配置可以被多个伸缩组使用。
  • 默认最多可以创建100个伸缩配置。

URI

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

表1 参数说明

参数

是否必选

参数类型

描述

project_id

String

项目ID

请求参数

表2 请求参数

参数

是否必选

参数类型

描述

scaling_configuration_name

String

伸缩配置名称(1-64个字符),只能包含中文、字母、数字、下划线或中划线。

instance_config

Object

实例配置信息,具体请参考表 instance_config字段数据结构说明

source_scaling_configuration_id

String

源伸缩配置ID,通过该ID查询已有伸缩配置信息与instance_config中参数进行结合,创建新的伸缩配置。

说明:
  • 若传入instance_config中的instance_id,则优先使用instance_id相关实例配置创建新的伸缩配置,source_scaling_configuration_id参数不生效。
  • 若未传入instance_config中的instance_id,则使用source_scaling_configuration_id与instance_config中的参数相结合创建伸缩配置。
    • 若instance_config中的参数值为null,则创建新伸缩配置时该字段不产生修改。
    • 若instance_config中的参数值不为null,则创建新伸缩配置时该字段将覆盖原有值,其中值为空时,该字段会被清空。
  • 若不指定source_scaling_configuration_id创建伸缩配置,则scaling_configuration_name和instance_config为必选。
表3 instance_config字段数据结构说明

参数

是否必选

参数类型

描述

instance_id

String

云服务器ID,当使用已存在的云服务器的规格为模板创建弹性伸缩配置时传入该字段,此时flavorRef、imageRef、disk、security_groups、instance_name字段不生效。

当不传入instance_id字段时flavorRef、imageRef、disk字段为必选。

flavorRef

String

云服务器的规格ID。最多支持选择10个规格,多个规格ID以逗号分隔。云服务器的规格ID通过查询弹性云服务器规格详情和扩展信息列表接口获取。

imageRef

String

镜像ID,同image_id,指定创建实例时选择的镜像资源。通过查询镜像服务镜像列表接口获取。

disk

Array of disk objects

磁盘组信息,系统盘必选,数据盘可选。请参考表 disk字段数据结构说明

key_name

String

登录云服务器的SSH密钥名称。

说明:

当key_name与user_data同时指定时,user_data只做用户数据注入。

personality

Array of personality objects

注入文件信息。仅支持注入文本文件,最大支持注入5个文件,每个文件最大1KB。详情请参考表 personality字段数据结构说明

public_ip

public_ip object

配置云服务器的弹性IP信息,弹性IP有两种配置方式。详情请参考表 public_ip字段数据结构说明

  • 不使用(无该字段)
  • 自动分配,需要指定新创建弹性IP的信息

user_data

String

创建云服务器过程中注入用户数据。支持注入文本、文本文件或gzip文件。

约束:

  • 注入内容,需要进行base64格式编码。注入内容(编码之前的内容)最大长度32KB。
  • 当key_name没有指定时,user_data注入的数据默认为云服务器root账号的登录密码。
  • 创建密码方式鉴权的Linux弹性云服务器时为必填项,为root用户注入自定义初始化密码。

建议密码复杂度如下:

  • 长度为8-26位。
  • 密码至少必须包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。

示例:

  • 使用明文密码(存在安全风险),以密码cloud.1234为例:
    #! /bin/bash
    echo 'root:Cloud.1234' | chpasswd ;
  • 使用密文密码(推荐):
    #! /bin/bash
    echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig' | chpasswd -e

其中,$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig为密文密码,生成方法如下:

1. 生成加密盐值

[root@test linux]# python -c "import crypt, getpass, pwd;print crypt.mksalt()"  $6$V6azyeLwcD3CHlpY

2. 根据盐值生成密文密码

[root@test linux]# python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')"   $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig

示例:

  • Linux服务器:
    #! /bin/bash
    echo user_test >> /home/user.txt
  • Windows服务器:
    rem cmd
    echo 111 > c:\aaa.txt
说明:

使用Linux镜像并且采用密码登录弹性云服务器时,不支持数据注入。

metadata

metadata object

创建云服务器元数据。详情请见表10

说明:
  • 创建密码方式鉴权的Windows弹性云服务器时,为必填字段。
  • 该字段暂不支持用户写入数据,但是当使用Windows镜像创建弹性云服务器时,该字段为必填字段。

security_groups

Array of security_groups objects

安全组信息,详情可参考表 security_groups字段数据结构说明

当伸缩配置和伸缩组同时指定安全组时,将以伸缩配置中的安全组为准;当伸缩配置和伸缩组都没有指定安全组时,增加的弹性云服务器将使用默认安全组。为了使用灵活性更高,推荐在伸缩配置中指定安全组。

market_type

String

该字段为预留字段。

对于Linux弹性云服务器,如果需要注入密码,只能使用userdata进行注入;对于Windows弹性云服务器,如果需要注入密码,只能通过metadata或instance_metadata的admin_pass进行注入。

表4 disk字段数据结构说明

参数

是否必选

参数类型

描述

size

Integer

磁盘大小,容量单位为GB。

系统盘输入大小范围为1~1024,且不小于镜像中系统盘的最小(min_disk属性)值。

数据盘输入大小范围为10~32768。

volume_type

String

云服务器系统盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配。

目前支持“SSD”,“SAS”三种。
  • “SSD”为超高IO云硬盘
  • “SAS”为高IO云硬盘
目前支持“SSD”和“SAS”。
  • “SSD”为超高IO云硬盘
  • “SAS”为高IO云硬盘
说明:
  • 了解不同磁盘类型的详细信息,请参见“云硬盘用户指南 > 磁盘类型及性能介绍”。

disk_type

String

标识系统盘还是数据盘,枚举值如下:

  • DATA:数据盘。
  • SYS:系统盘。
    说明:

    系统盘不支持加密。

dedicated_storage_id

String

云服务器的磁盘可指定创建在用户的专属存储中,需要指定专属存储ID。

说明:

同一个伸缩配置中的磁盘需统一指定或统一不指定专属存储,不支持混用;当指定专属存储时,所有专属存储需要属于同一个可用区,且每个磁盘选择的专属存储支持的磁盘类型都需要和参数volume_type保持一致。

data_disk_image_id

String

指定特定ID的数据盘镜像,用以导出云服务器的数据盘。

snapshot_id

String

当选择使用整机镜像时,云服务器的系统盘及数据盘将通过整机备份恢复,需要指定磁盘备份的快照ID。

说明:

一个伸缩配置中的每一个disk需要通过snapshot_id和整机备份中的磁盘备份一一对应。

metadata

metadata object

创建磁盘的元数据,详情见表5

表5 创建磁盘的metadata字段数据结构说明

参数

是否必选

参数类型

描述

__system__encrypted

String

metadata中的表示加密功能的字段,0代表不加密,1代表加密。

该字段不存在时,云硬盘默认为不加密。

说明:

系统盘不支持加密。

__system__cmkid

String

用户主密钥ID,是metadata中的表示加密功能的字段,与__system__encrypted配合使用。

说明:
  • 参考《密钥管理服务API参考》中的“查询密钥列表”章节通过HTTPS请求获取密钥ID。
  • 系统盘不支持加密。
表6 personality字段数据结构说明

参数

是否必选

参数类型

描述

path

String

注入文件路径信息。

  • Linux系统请输入注入文件保存路径,例如 “/etc/foo.txt”。
  • Windows系统注入文件自动保存在C盘根目录,只需要输入保存文件名,例如 “foo”,文件名只能包含字母(a~zA~Z)和数字(0~9)。

content

String

注入文件内容。

该值应指定为注入文件的内容进行base64格式编码后的信息。

表7 public_ip字段数据结构说明

参数

是否必选

参数类型

描述

eip

eip object

配置云服务器自动分配弹性IP时,创建弹性IP的配置参数。详情请参考表 eip字段数据结构说明

表8 eip字段数据结构说明

参数

是否必选

参数类型

描述

ip_type

String

弹性IP地址类型。

bandwidth

bandwidth object

IP地址带宽参数,详情请参考表 bandwidth字段数据结构说明

表9 bandwidth字段数据结构说明

参数

是否必选

参数类型

描述

size

Integer

带宽(Mbit/s),取值范围为[1,300]。

说明:
  • 具体范围以各区域配置为准,请参见控制台对应页面显示。
  • 创建带宽时的最小单位会根据带宽取值范围不同存在差异。
    • 小于等于300Mbit/s:默认最小单位为1Mbit/s。

share_type

String

带宽的共享类型。

共享类型枚举:

  • PER:独享型。

目前只支持独享。

charging_mode

String

带宽的计费类型。

traffic:按流量计费。

若字段为其它值,会导致创建云服务器失败。

表10 metadata字段数据结构说明

参数

是否必选

参数类型

描述

admin_pass

String

如果需要使用密码方式登录云服务器,可使用admin_pass字段指定云服务器管理员账户初始登录密码。其中,Linux管理员账户为root,Windows管理员账户为Administrator。

密码复杂度要求:
  • 长度为8-26位。
  • 密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。
  • 密码不能包含用户名或用户名的逆序。
  • Windows系统密码不能包含用户名或用户名的逆序,不能包含用户名中超过两个连续字符的部分。
表11 security_groups字段数据结构说明

参数

是否必选

参数类型

描述

id

String

安全组ID。

请求示例

创建一个名称为as-config-tlzp,镜像ID为627a1223-2ca3-46a7-8d5f-7aef22c74ee6,规格ID为s3.xlarge.4,系统盘为40G的SATA盘,且SSH密钥名称为100vm_key的伸缩配置。
POST https://{Endpoint}/autoscaling-api/v1/{project_id}/scaling_configuration

{ 
    "scaling_configuration_name": "as-config-tlzq", 
    "instance_config": { 
        "flavorRef": "s3.xlarge.4", 
        "imageRef": "627a1223-2ca3-46a7-8d5f-7aef22c74ee6", 
        "disk": [ 
            { 
                "size": 40, 
                "volume_type": "SATA", 
                "disk_type": "SYS" 
            } 
        ], 
        "key_name": "100vm_key" ,
	"security_groups": [{
		"id": "6c22a6c0-b5d2-4a84-ac56-51090dcc33be"
	}], 
        "multi_flavor_priority_policy": "PICK_FIRST"
    } 
}

响应参数

表12 响应参数

参数

参数类型

描述

scaling_configuration_id

String

伸缩配置ID。

响应示例

{
    "scaling_configuration_id": "f8327883-6a07-4497-9a61-68c03e8e72a2"
}

返回值

  • 正常

    200

  • 异常

    返回值

    说明

    400 Bad Request

    服务器未能处理请求。

    401 Unauthorized

    被请求的页面需要用户名和密码。

    403 Forbidden

    对被请求的页面访问禁止。

    404 Not Found

    服务器无法找到被请求的页面。

    405 Method Not Allowed

    请求中指定的方法不被允许。

    406 Not Acceptable

    服务器生成的响应无法被客户端所接受。

    407 Proxy Authentication Required

    用户必须首先使用代理服务器进行验证,这样请求才会被处理。

    408 Request Timeout

    请求超出了服务器的等待时间。

    409 Conflict

    由于冲突,请求无法被完成。

    500 Internal Server Error

    请求未完成。服务异常。

    501 Not Implemented

    请求未完成。服务器不支持所请求的功能。

    502 Bad Gateway

    请求未完成。服务器从上游服务器收到一个无效的响应。

    503 Service Unavailable

    请求未完成。系统暂时异常。

    504 Gateway Timeout

    网关超时。

错误码

请参考错误码