创建资源栈
功能介绍
CreateStack用于生成一个资源栈
当请求中不含有模板(template)、参数(vars)等信息,将生成一个无任何资源的空资源栈,返回资源栈ID(stack_id)
当请求中携带了模板(template)、参数(vars)等信息,则会同时创建并部署资源栈,返回资源栈ID(stack_id)和部署ID(deployment_id)
URI
POST /v1/{project_id}/stacks
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
project_id | 是 | String | 项目ID,可以从调用API处获取,也可以从控制台获取。 最小长度:3 最大长度:64 |
请求参数
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
Client-Request-Id | 是 | String | 用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID 最小长度:36 最大长度:128 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
stack_name | 是 | String | 资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 最小长度:1 最大长度:128 |
agencies | 否 | Array of Agency objects | 委托授权的信息。 RFS仅在创建资源栈(触发部署)、创建执行计划、部署资源栈、删除资源栈等涉及资源操作的请求中使用委托,且该委托仅作用于与之绑定的Provider对资源的操作中。如果委托中提供的权限不足,有可能导致相关资源操作失败。 数组长度:0 - 10 |
description | 否 | String | 资源栈的描述。可用于客户识别自己的资源栈。 最小长度:0 最大长度:1024 |
enable_deletion_protection | 否 | Boolean | 删除保护的标识位,如果不传默认为false,即默认不开启资源栈删除保护(删除保护开启后资源栈不允许被删除) 在UpdateStack API中,如果该参数未在RequestBody中给予,则不会对资源栈的删除保护属性进行更新 |
enable_auto_rollback | 否 | Boolean | 自动回滚的标识位,如果不传默认为false,即默认不开启资源栈自动回滚(自动回滚开启后,如果部署失败,则会自动回滚,并返回上一个稳定状态) 在UpdateStack API中,如果该参数未在RequestBody中给予,则不会对资源栈的自动回滚属性进行更新 该属性与使用模板导入资源功能互斥,如果资源栈的自动回滚设置为true,则不允许部署包含导入资源的模板 |
template_body | 否 | String | HCL模板,描述了资源的目标状态。资源编排服务将比较此模板与当前远程资源的状态之间的区别。 template_body和template_uri 必须有且只有一个存在 在CreateStack API中,template_body和template_uri可以都不给予 注意:
最小长度:0 最大长度:51200 |
template_uri | 否 | String | HCL模板的OBS地址,该模板描述了资源的目标状态。资源编排服务将比较此模板与当前远程资源的状态之间的区别。 请确保OBS地址所在局点与使用RFS服务局点一致。 对应的文件应该是纯tf文件或zip压缩包 纯tf文件需要以.tf或者.tf.json结尾,并遵守HCL语法 压缩包目前只支持zip格式,文件需要以.zip结尾。解压后的文件不得包含.tfvars文件且必须是UTF8编码(其中.tf.json不能包含BOM头),zip压缩包当前支持的子文件数量最大为100 template_body和template_uri 必须有且只有一个存在 在CreateStack API中,template_body和template_uri可以都不给予 注意:
最小长度:0 最大长度:2048 |
vars_body | 否 | String | HCL参数文件的内容。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。
最小长度:0 最大长度:51200 |
vars_structure | 否 | Array of VarsStructure objects | HCL参数结构。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。
或者用户可以使用vars_uri、vars_body,vars_uri和vars_body中支持HCL支持的各种类型以及复杂结构 数组长度:0 - 100 |
vars_uri | 否 | String | HCL参数文件的OBS地址。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 请确保OBS地址所在局点与使用RFS服务局点一致。
最小长度:0 最大长度:2048 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
provider_name | 是 | String | 用户使用的provider的名字。如果用户给予的provider_name含有重复的值,则返回400 最小长度:1 最大长度:128 |
agency_name | 否 | String | 对应provider所使用的IAM委托名称,资源编排服务会使用此委托的权限去访问、创建对应provider的资源。agency_name和agency_urn必须有且只有一个存在 最小长度:1 最大长度:64 |
agency_urn | 否 | String | 委托URN 当用户定义Agency时,agency_name和agency_urn 必须有且只有一个存在。 推荐用户在使用信任委托时给予agency_urn。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
var_key | 是 | String | 参数的名字 最小长度:1 最大长度:32 |
var_value | 是 | String | 参数的值。 注意,参数需要以字符串形式存在,如果是数字,也需要以字符串形式存在,如'10'。 如果需要支持不同类型,或者复杂结构,请使用vars_uri或vars_body 最小长度:0 最大长度:2048 |
encryption | 否 | EncryptionStructure object | 如果用户传递的var_value是已经加密过的,可以通过声明此项以要求资源编排服务在使用前进行解密,目前暂时只支持KMS加解密 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
kms | 是 | KmsStructure object | 如果用户给予的var_value是经过KMS加密的,可以通过传递相关加密信息,资源编排服务在使用的时候会帮助用户进行KMS解密 更多关于KMS加密以及KMS加密的样例代码请见:KMS加密使用场景介绍 注意:
|
响应参数
状态码:201
参数 | 参数类型 | 描述 |
|---|---|---|
stack_id | String | 资源栈(stack)的唯一ID。 此Id由资源编排服务在生成资源栈的时候生成,为UUID。 由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400 最小长度:36 最大长度:36 |
deployment_id | String | 部署ID 接受请求,进行异步处理。可以调用GetStackMetadata来获取异步请求的部署状态 注意:
|
状态码: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 | 权限拒绝时服务返回的详细错误信息。 |
状态码:409
参数 | 参数类型 | 描述 |
|---|---|---|
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 | 权限拒绝时服务返回的详细错误信息。 |
请求示例
创建资源栈
POST https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks { "stack_name" : "my_first_stack", "description" : "my first stack" }使用委托创建资源栈
POST https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks { "stack_name" : "my_second_stack", "description" : "my second stack", "agencies" : [ { "provider_name" : "huaweicloud", "agency_name" : "my_agency" } ] }使用模板的uri创建并部署资源栈
POST https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks { "stack_name" : "my_third_stack", "template_uri" : "https://my_hello_world_bucket.{region}.myhuaweicloud.com/my-hello-world-template.tf", "description" : "my third stack" }使用模板内容创建并部署资源栈。RFS模板支持HCL语法,同时规定required_providers模块下用于声明provider路径的source字段,需按照huawei.com/provider/{provider_name}的形式拼接,例如huawei.com/provider/huaweicloud
{ "stack_name" : "my_fourth_stack", "template_body" : "terraform {\n required_providers {\n huaweicloud = {\n source = \"huawei.com/provider/huaweicloud\"\n version = \"1.41.0\"\n }\n }\n}\nprovider \"huaweicloud\"{\n insecure = true\n cloud = \"{cloud_name}\"\n region = \"{region}\"\n endpoints = {\n iam = \"{iam_endpoint}\"\n }\n}\n\nresource \"huaweicloud_vpc\" \"vpc\" {\n cidr = \"172.16.0.0/16\"\n name = \"my_vpc\"\n}", "description" : "my fourth stack" }
响应示例
状态码:201
创建成功
{
"stack_id" : "ea6a4f0e-ee8a-494e-b12a-8be4a1e65af2"
} 状态码
状态码 | 描述 |
|---|---|
201 | 创建成功 |
400 | 用户请求非法 |
401 | 用户身份认证失败 |
403 |
|
409 | 创建冲突,同名的资源栈已经存在 |
429 | 请求数量过多 |
500 | 服务器内部错误 |

