更新资源栈
功能介绍
更新资源栈(UpdateStack)
更新资源栈的属性,该API可以根据用户给予的信息对资源栈的属性进行更新,可以更新资源栈的“description”、“enable_deletion_protection”、"enable_auto_rollback"、"agencies"四个属性中的一个或多个
该API只会更新用户给予的信息中所涉及的字段;如果某字段未给予,则不会对该资源栈属性进行更新
注:所有属性的更新都是覆盖式更新。即,所给予的参数将被完全覆盖至资源栈已有的属性上
例如,如果要新增agencies,请通过GetStackMetadata获取该资源栈原有的agencies信息,将新旧agencies信息进行整合后再调用UpdateStack
- 如果资源栈状态处于非终态(状态以IN_PROGRESS结尾)状态时,则不允许更新。包括但不限于以下状态:
    
- 正在部署(DEPLOYMENT_IN_PROGRESS)
 - 正在删除(DELETION_IN_PROGRESS)
 - 正在回滚(ROLLBACK_IN_PROGRESS)
 
 - 对于“enable_auto_rollback”属性从false到true的更新操作,资源栈状态判定将更加严格,在失败(状态以_FAILED结尾)状态时也不允许更新,包括但不限于以下状态:
    
- 部署失败(DEPLOYMENT_FAILED)
 - 回滚失败(ROLLBACK_FAILED)
 - 删除失败(DELETION_FAILED)
 
 
URI
PATCH /v1/{project_id}/stacks/{stack_name}
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        project_id  | 
      
        是  | 
      
        String  | 
      
        项目ID,可以从调用API处获取,也可以从控制台获取。 最小长度:3 最大长度:64  | 
     
| 
        stack_name  | 
      
        是  | 
      
        String  | 
      
        资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 最小长度:1 最大长度:128  | 
     
请求参数
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        Client-Request-Id  | 
      
        是  | 
      
        String  | 
      
        用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID 最小长度:36 最大长度:128  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        description  | 
      
        否  | 
      
        String  | 
      
        资源栈的描述。可用于客户识别自己的资源栈。 最小长度:0 最大长度:1024  | 
     
| 
        stack_id  | 
      
        否  | 
      
        String  | 
      
        资源栈(stack)的唯一Id。 此Id由资源编排服务在生成资源栈的时候生成,为UUID。 由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400 最小长度:36 最大长度:36  | 
     
| 
        enable_deletion_protection  | 
      
        否  | 
      
        Boolean  | 
      
        删除保护的标识位,如果不传默认为false,即默认不开启资源栈删除保护(删除保护开启后资源栈不允许被删除) 在UpdateStack API中,如果该参数未在RequestBody中给予,则不会对资源栈的删除保护属性进行更新  | 
     
| 
        enable_auto_rollback  | 
      
        否  | 
      
        Boolean  | 
      
        自动回滚的标识位,如果不传默认为false,即默认不开启资源栈自动回滚(自动回滚开启后,如果部署失败,则会自动回滚,并返回上一个稳定状态) 在UpdateStack API中,如果该参数未在RequestBody中给予,则不会对资源栈的自动回滚属性进行更新 该属性与使用模板导入资源功能互斥,如果堆栈的自动回滚设置为true,则不允许部署包含导入资源的模板  | 
     
| 
        agencies  | 
      
        否  | 
      
        Array of Agency objects  | 
      
        委托授权的信息。 RFS仅在创建资源栈(触发部署)、创建执行计划、部署资源栈、删除资源栈等涉及资源操作的请求中使用委托,且该委托仅作用于与之绑定的Provider对资源的操作中。如果委托中提供的权限不足,有可能导致相关资源操作失败。 数组长度:0 - 10  | 
     
| 
        参数  | 
      
        是否必选  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|---|
| 
        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,agency_name只支持接收普通委托名称,如果给予了信任委托名称,则会在部署模板时失败。  | 
     
响应参数
状态码: 400
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        响应码 最小长度:11 最大长度:11  | 
     
| 
        error_msg  | 
      
        String  | 
      
        响应消息  | 
     
| 
        encoded_authorization_message  | 
      
        String  | 
      
        包含有关未经授权请求的信息。  | 
     
状态码: 401
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        响应码 最小长度:11 最大长度:11  | 
     
| 
        error_msg  | 
      
        String  | 
      
        响应消息  | 
     
| 
        encoded_authorization_message  | 
      
        String  | 
      
        包含有关未经授权请求的信息。  | 
     
状态码: 403
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        响应码 最小长度:11 最大长度:11  | 
     
| 
        error_msg  | 
      
        String  | 
      
        响应消息  | 
     
| 
        encoded_authorization_message  | 
      
        String  | 
      
        包含有关未经授权请求的信息。  | 
     
状态码: 404
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        响应码 最小长度:11 最大长度:11  | 
     
| 
        error_msg  | 
      
        String  | 
      
        响应消息  | 
     
| 
        encoded_authorization_message  | 
      
        String  | 
      
        包含有关未经授权请求的信息。  | 
     
状态码: 409
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        响应码 最小长度:11 最大长度:11  | 
     
| 
        error_msg  | 
      
        String  | 
      
        响应消息  | 
     
| 
        encoded_authorization_message  | 
      
        String  | 
      
        包含有关未经授权请求的信息。  | 
     
状态码: 429
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        响应码 最小长度:11 最大长度:11  | 
     
| 
        error_msg  | 
      
        String  | 
      
        响应消息  | 
     
| 
        encoded_authorization_message  | 
      
        String  | 
      
        包含有关未经授权请求的信息。  | 
     
状态码: 500
| 
        参数  | 
      
        参数类型  | 
      
        描述  | 
     
|---|---|---|
| 
        error_code  | 
      
        String  | 
      
        响应码 最小长度:11 最大长度:11  | 
     
| 
        error_msg  | 
      
        String  | 
      
        响应消息  | 
     
| 
        encoded_authorization_message  | 
      
        String  | 
      
        包含有关未经授权请求的信息。  | 
     
请求示例
- 更新资源栈的描述信息
    
PATCH https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack { "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3", "description" : "my hello world stack" } - 关闭资源栈的删除保护和自动回滚
    
PATCH https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack { "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3", "enable_deletion_protection" : false, "enable_auto_rollback" : false } - 更新资源栈中的委托信息
    
PATCH https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack { "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3", "agencies" : { "provider_name" : "my_hello_world_provider", "agency_name" : "my_agency" } } 
响应示例
无
状态码
| 
        状态码  | 
      
        描述  | 
     
|---|---|
| 
        204  | 
      
        更新成功  | 
     
| 
        400  | 
      
        用户请求非法  | 
     
| 
        401  | 
      
        用户身份认证失败  | 
     
| 
        403  | 
      
       
  | 
     
| 
        404  | 
      
        资源栈不存在  | 
     
| 
        409  | 
      
        更新冲突,另一个请求正在操作此资源栈  | 
     
| 
        429  | 
      
        请求数量过多  | 
     
| 
        500  | 
      
        服务器内部错误  |