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

更新资源栈

功能介绍

更新资源栈(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}

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,可以从调用API处获取,也可以从控制台获取。

项目ID获取方式

最小长度:3

最大长度:64

stack_name

String

资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。

最小长度:1

最大长度:128

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID

最小长度:36

最大长度:128

表3 请求Body参数

参数

是否必选

参数类型

描述

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

表4 Agency

参数

是否必选

参数类型

描述

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

表5 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 401

表6 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 403

表7 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 404

表8 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 409

表9 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 429

表10 响应Body参数

参数

参数类型

描述

error_code

String

响应码

最小长度:11

最大长度:11

error_msg

String

响应消息

encoded_authorization_message

String

包含有关未经授权请求的信息。

状态码: 500

表11 响应Body参数

参数

参数类型

描述

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

  1. 资源栈状态非法,不允许更新

  2. 用户无权限调用此API

404

资源栈不存在

409

更新冲突,另一个请求正在操作此资源栈

429

请求数量过多

500

服务器内部错误