更新资源栈
功能介绍
更新资源栈(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 |
服务器内部错误 |