创建资源栈实例
功能介绍
创建资源栈实例(CreateStackInstance)
此API用于在指定资源栈集下生成多个资源栈实例,并返回资源栈集操作ID(stack_set_operation_id)
此API可以通过var_overrides参数,指定创建资源栈实例的参数值,进行参数覆盖。如果var_overrides参数未给予,则默认使用当前资源栈集中记录的参数进行部署,详见:var_overrides参数描述。
通过DeployStackSet API更新资源栈集参数后,资源栈实例中已经被覆盖的参数不会被更新,仍然保留覆盖值。
用户只能覆盖已经在资源栈集中记录的参数,如果用户想要增加可以覆盖的参数,需要先通过DeployStackSet API更新资源栈集记录的参数集合。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
URI
POST /v1/stack-sets/{stack_set_name}/stack-instances
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| stack_set_name | 是 | String | 资源栈集的名称。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 最小长度:1 最大长度:128 |
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| Client-Request-Id | 是 | String | 用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID 最小长度:36 最大长度:128 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| stack_set_id | 否 | String | 资源栈集(stack_set)的唯一ID。 此ID由资源编排服务在生成资源栈集的时候生成,为UUID。 由于资源栈集名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈集,删除,再重新创建一个同名资源栈集。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈集就是我以为的那个,而不是被其他队友删除后创建的同名资源栈集。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈集所对应的ID都不相同,更新不会影响ID。如果给予的stack_set_id和当前资源栈集的ID不一致,则返回400 最小长度:36 最大长度:36 |
| deployment_targets | 是 | deployment_targets object | 部署目标信息。 |
| var_overrides | 否 | var_overrides object | 用户期望在资源栈实例中更新的参数内容,参数将覆盖到本次请求中指定的所有资源栈实例中,并根据更新后的参数部署资源栈实例。覆盖后的参数将永久被记录在资源栈实例中,并在之后的部署中继续使用被覆盖参数,直到下一次被更新覆盖。 用户只能覆盖在资源栈集中记录的参数集合vars,如果指定了vars中不存在的参数会报错400。如果用户想要增加可以覆盖的参数,需要先通过DeployStackSet API 更新资源栈集记录的参数集合vars。通过DeployStackSet API更新vars后,资源栈实例中已经被覆盖的参数不会被更新,仍然保留覆盖值。 参数覆盖只针对用户在资源栈集中通过vars指定的参数,不包括在模板中定义使用默认值的参数。如果用户期望对使用默认值的参数进行覆盖,则需要按上述要求先通过DeployStackSet API 更新资源栈集记录的vars,显式地向vars中增加相关参数定义。 用户每次通过DeployStackSet API 更新资源栈集vars时,如果缺少了任一部署目标的资源栈实例中所记录的被覆盖参数时(即当前被覆盖参数已不是更新后资源栈集参数vars的子集),会报错400 当前用户在更新参数覆盖时不能指定保留已有的参数覆盖,必须在更新的时候给予全部的覆盖信息。 参数覆盖后的资源栈实例应用的vars_body总长不超过51200。参数覆盖后的资源栈实例应用的vars_uri文件内容不超过1M。 例如:资源栈集中记录的vars_body内容为”key1=value1,key2=value2,....“,资源栈实例参数覆盖的vars_body为“key1=another_value1”,则要求应用参数覆盖后的vars_body“key1=another_value1,key2=value2,....”总长不超过51200。 例如:资源栈集中记录的vars_uri文件内容为”key1=value1,key2=value2,....“,资源栈实例参数覆盖的vars_body为“key1=another_value1”,则要求应用参数覆盖后的vars_uri文件内容“key1=another_value1,key2=value2,....”总长不超过1M。 如果var_overrides未给予,则不会更新覆盖资源栈实例中记录的参数。如果vars_uri或vars_body或use_stack_set_vars至少给予了一个,则会对参数覆盖进行替换式更新,即所给予的参数将被完全覆盖至指定资源栈实例中。 vars_body、vars_uri和use_stack_set_vars中声明的全部参数集合必须和资源栈集中记录的参数集合保持一致,如果声明了资源栈集中不存在的参数会报错400,如果没有声明已经在资源栈集中记录的参数会报错400,如果声明了同一个参数会报错400。 注: |
| operation_preferences | 否 | operation_preferences object | 资源栈集操作(stack_set_operation)的部署策略。该参数只在指定的单次操作中生效。 当用户不指定该参数时,默认的操作部署策略为区域(region)内资源栈实例串行部署,即每次只执行一个资源栈实例,区域(region)间随机且串行部署,执行完一个region下的全部资源栈实例后,才会选择另一个region部署,容错次数默认为0。 该参数可以在生成资源栈集操作的四个API中指定: 创建资源栈实例(CreateStackInstance),部署资源栈集(DeployStackSet),更新资源栈实例(UpdateStackInstance),删除资源栈实例(DeleteStackInstance) |
| call_identity | 否 | String | 仅支持资源栈集权限模式为SERVICE_MANAGED时指定该参数。用于指定用户是以组织管理账号还是成员账号中的服务委托管理员身份调用资源栈集。默认为SELF。 当资源栈集权限模式为SELF_MANAGED时,默认为SELF。 无论指定何种用户身份,涉及操作的资源栈集始终在组织管理账号名下。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| vars_uri | 否 | String | HCL参数文件的OBS地址。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 请确保OBS地址所在局点与使用RFS服务局点一致。 最小长度:0 最大长度:2048 |
| vars_body | 否 | String | HCL参数文件的内容。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 最小长度:0 最大长度:51200 |
| use_stack_set_vars | 否 | Array of strings | 用户期望使用资源栈集中记录的参数值进行部署的参数名称列表。 用户只能选择已经在资源栈集中被记录的参数,如果指定了未被记录的参数会报错400。 如果use_stack_set_vars中包含资源栈实例中已经被覆盖的参数名称,则会将该参数回退至资源栈集中记录的参数值。 |
响应参数
状态码:202
| 参数 | 参数类型 | 描述 |
|---|---|---|
| stack_set_operation_id | String | 资源栈集操作(stack_set_operation)的唯一Id。 此ID由资源编排服务在生成资源栈集操作的时候生成,为UUID。 最小长度:36 最大长度:36 |
状态码:400
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 响应码 最小长度:11 最大长度:11 |
| error_msg | String | 响应消息 |
| encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
| details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:401
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 响应码 最小长度:11 最大长度:11 |
| error_msg | String | 响应消息 |
| encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
| details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:403
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 响应码 最小长度:11 最大长度:11 |
| error_msg | String | 响应消息 |
| encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
| details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:404
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 响应码 最小长度:11 最大长度:11 |
| error_msg | String | 响应消息 |
| encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
| details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:429
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 响应码 最小长度:11 最大长度:11 |
| error_msg | String | 响应消息 |
| encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
| details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:500
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 响应码 最小长度:11 最大长度:11 |
| error_msg | String | 响应消息 |
| encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
| details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
请求示例
-
通过Domain Ids Array传递成员账号信息,且指定创建资源栈实例在region间串行进行
POST https://{endpoint}/v1/stack-sets/my_hello_world_stack_set/stack-instances { "deployment_targets" : { "regions" : [ "cn-north-7" ], "domain_ids" : [ "6cbcca2a2f114a63841bdbc7a19b7b12", "1e03325ba3cc47b1fdb03f3771bbb4f3" ] }, "operation_preferences" : { "region_concurrency_type" : "SEQUENTIAL" } } -
通过Domain Ids Signed URL传递成员账号信息,且指定创建资源栈实例在region间并行进行
POST https://{endpoint}/v1/stack-sets/my_hello_world_stack_set/stack-instances { "deployment_targets" : { "regions" : [ "cn-north-7" ], "domain_ids_uri" : "https://my-obs.obs.cn-north-7.ulanqab.huawei.com/domain_ids.csv" }, "operation_preferences" : { "region_concurrency_type" : "PARALLEL" } }
响应示例
状态码:202
请求接受,异步处理
{
"stack_set_operation_id" : "fb5e781e-a27d-46e2-9954-242753857a9f"
}