更新时间:2024-12-13 GMT+08:00

条件删除资源栈

功能介绍

条件删除资源栈(DeleteStackEnhanced)

此API用于删除某个资源栈,可以选择是否保留资源。

请谨慎操作,删除资源栈将默认删除与该资源栈相关的所有数据,如:执行计划、资源栈事件、资源栈输出、资源等。

**如果希望删除资源栈保留资源,可以在请求中设置retain_all_resources对资源进行保留。

  • 此API会触发删除资源栈,并以最终一致性删除数据,用户可以调用GetStackMetadata或ListStacks跟踪资源栈删除情况。当删除完成后,被删除资源栈将不会在上述API中返回。

  • 如果资源栈状态处于非终态(状态以IN_PROGRESS结尾)状态时,则不允许删除。包括但不限于以下状态:

    • 正在部署(DEPLOYMENT_IN_PROGRESS)

    • 正在删除(DELETION_IN_PROGRESS)

    • 正在回滚(ROLLBACK_IN_PROGRESS)

  • 如果资源栈开启了删除保护,则不允许删除。用户可调用GetStackMetadata,查看返回中的enable_deletion_protection字段判断删除保护是否开启。用户可通过调用UpdateStack关闭删除保护。

  • 如果资源栈删除失败,可以根据StackEvents提示信息修复当前模板中的错误后,部署成功后再次删除资源栈。有以下两种方式触发部署:

    • 调用CreateExecutionPlan创建执行计划,执行计划创建成功后调用ApplyExecutionPlan部署资源栈。

    • 调用DeployStack部署资源栈。

URI

POST /v1/{project_id}/stacks/{stack_name}/deletion

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

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

项目ID获取方式

stack_name

String

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

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

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

表3 请求Body参数

参数

是否必选

参数类型

描述

stack_id

String

资源栈(stack)的唯一Id。

此Id由资源编排服务在生成资源栈的时候生成,为UUID。

由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。

对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。

资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400

retain_all_resources

Boolean

删除资源栈是否保留资源的标志位,如果不传默认为false,即默认不保留资源(删除资源栈后会删除资源栈中的资源)

  • DeleteStackEnhanced API中,如果该参数未在RequestBody中给予,则删除时不会保留资源栈中的资源*

响应参数

状态码: 400

表4 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表5 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 401

表6 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表7 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 403

表8 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表9 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 404

表10 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表11 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 429

表12 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表13 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 500

表14 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表15 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

请求示例

  • 删除资源栈,不保留资源

    POST https://{endpoint}/v1/{project_id}/stacks/{stack_name}/deletion
    
    {
      "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3"
    }
  • 删除资源栈,保留资源

    POST https://{endpoint}/v1/{project_id}/stacks/{stack_name}/deletion
    
    {
      "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3",
      "retain_all_resources" : true
    }

响应示例

状态码

状态码

描述

202

请求接受,异步处理

400

用户请求非法

401

用户身份认证失败

403

  1. 资源栈状态非法,不允许删除

  2. 用户无权限调用此API

404

资源栈不存在

429

请求数量过多

500

服务器内部错误