部署资源栈
功能介绍
部署资源栈(DeployStack)
此API用于部署一个已有的资源栈
- 
    
用户可以使用此API更新模板、参数等并触发一个新的部署
 - 
    
此API会直接触发部署,如果用户希望先确认部署会发生的时间,请使用执行计划,即使用CreateExecutionPlan以创建执行计划、使用GetExecutionPlan以获取执行计划
 - 
    
此API为全量API,即用户每次部署都需要给予所想要使用的template、vars的全量
 - 
    
部署资源栈时,用户将模板中定义的资源删除(包括Import定义的资源),会触发实际资源的删除。建议通过CreateExecutionPlan查看模板修改后资源栈的部署行为,以避免误操作非预期资源
 - 
    
当触发的部署失败时,如果资源栈开启了自动回滚,会触发自动回滚的流程,否则就会停留在部署失败时的状态
 
URI
POST /v1/{project_id}/stacks/{stack_name}/deployments
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        project_id  | 
      
        是  | 
      
        String  | 
      
        项目ID,可以从调用API处获取,也可以从控制台获取。 最小长度:3 最大长度:64  | 
     
| 
        stack_name  | 
      
        是  | 
      
        String  | 
      
        资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 最小长度:1 最大长度:128  | 
     
请求参数
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        Client-Request-Id  | 
      
        是  | 
      
        String  | 
      
        用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID 最小长度:36 最大长度:128  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        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_structure  | 
      
        否  | 
      
        Array of VarsStructure objects  | 
      
        HCL参数结构。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 
 或者用户可以使用vars_uri、vars_body,vars_uri和vars_body中支持HCL支持的各种类型以及复杂结构 数组长度:0 - 100  | 
     
| 
        vars_body  | 
      
        否  | 
      
        String  | 
      
        HCL参数文件的内容。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 
 最小长度:0 最大长度:51200  | 
     
| 
        vars_uri  | 
      
        否  | 
      
        String  | 
      
        HCL参数文件的OBS地址。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 请确保OBS地址所在局点与使用RFS服务局点一致。 
 最小长度:0 最大长度:2048  | 
     
| 
        stack_id  | 
      
        否  | 
      
        String  | 
      
        资源栈(stack)的唯一ID。 此Id由资源编排服务在生成资源栈的时候生成,为UUID。 由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400 最小长度:36 最大长度:36  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        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加密使用场景介绍 注意: 
  | 
     
响应参数
状态码:202
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        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  | 
      
        权限拒绝时服务返回的详细错误信息。  | 
     
状态码:404
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        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  | 
      
        权限拒绝时服务返回的详细错误信息。  | 
     
请求示例
通过OBS Signed URL传递模板和参数信息
POST https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/deployments
{
  "template_uri" : "https://my_hello_world_bucket.{region}.myhuaweicloud.com/my-hello-world-template.tf",
  "vars_uri" : "https://my_hello_world_bucket.{region}.myhuaweicloud.com/my-hello-world-vars.tfvars",
  "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3"
}
 响应示例
状态码:202
请求接受,异步处理
{
  "deployment_id" : "3fef5d3e-27b6-44e8-9769-1d7262bd9430"
}
 状态码
| 
        状态码  | 
      
        描述  | 
     
|---|---|
| 
        202  | 
      
        请求接受,异步处理  | 
     
| 
        400  | 
      
        用户请求非法  | 
     
| 
        401  | 
      
        用户身份认证失败  | 
     
| 
        403  | 
      
       
  | 
     
| 
        404  | 
      
        资源栈不存在  | 
     
| 
        409  | 
      
        部署冲突,另一个请求正在操作此资源栈  | 
     
| 
        429  | 
      
        请求数量过多  | 
     
| 
        500  | 
      
        服务器内部错误  |