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

列举资源栈资源

功能介绍

列举资源栈资源(ListStackResources)

此API用于列举资源栈中当前管理的所有资源的信息

当资源栈处于非终态时,仅输出资源栈下资源的简要信息,包含逻辑资源名称(logical_resource_name),逻辑资源类型(logical_resource_type),物理资源id(physical_resource_id),物理资源名称(physical_resource_name),资源状态(status)等信息;当资源栈处于终态时,将额外输出具体信息,如资源属性(resource_attributes)

非终态包括但不限于以下状态:

  • 正在部署(DEPLOYMENT_IN_PROGRESS)

  • 正在删除(DELETION_IN_PROGRESS)

  • 正在回滚(ROLLBACK_IN_PROGRESS)

URI

GET /v1/{project_id}/stacks/{stack_name}/resources

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

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

项目ID获取方式

stack_name

String

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

表2 Query参数

参数

是否必选

参数类型

描述

stack_id

String

资源栈(stack)的唯一Id。

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

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

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

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

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

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

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

stack_resources

Array of StackResource objects

资源栈中所管理的资源信息列表

表5 StackResource

参数

参数类型

描述

physical_resource_id

String

资源的物理id,由该资源的provider、云服务或其他服务提供方在资源部署的时候生成

注:与physical相关的参数可以在模板以外的地方,作为该资源的一种标识

physical_resource_name

String

资源的物理名称,由该资源的provider、云服务或其他服务提供方在资源部署的时候定义

注:与physical相关的参数可以在模板以外的地方,作为该资源的一种标识

logical_resource_name

String

资源的逻辑名称,由用户在模板中定义

注:与 logical 相关的参数仅仅在模板内部,作为该资源的一种标识

以HCL格式的模板为例,logical_resource_name 为 my_hello_world_vpc

resource "huaweicloud_vpc" "my_hello_world_vpc" {
  name = "test_vpc"
}

以json格式的模板为例,logical_resource_name 为 my_hello_world_vpc

{
  "resource": {
    "huaweicloud_vpc": {
      "my_hello_world_vpc": {
        "name": "test_vpc"
      }
    }
  }
}

logical_resource_type

String

资源的类型

注:与 logical 相关的参数仅仅在模板内部,作为该资源的一种标识

以HCL格式的模板为例,logical_resource_type 为 huaweicloud_vpc

resource "huaweicloud_vpc" "my_hello_world_vpc" {
  name = "test_vpc"
}

以json格式的模板为例,logical_resource_type 为 huaweicloud_vpc

{
  "resource": {
    "huaweicloud_vpc": {
      "my_hello_world_vpc": {
        "name": "test_vpc"
      }
    }
  }
}

index_key

String

资源的索引,如果用户在模板中使用了count或for_each则会返回index_key。如果index_key出现,则logical_resource_name + index_key可以作为该资源的一种标识

如果用户在模板中使用count,则index_key为从0开始的数字

以HCL格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc[0]huaweicloud_vpc.my_hello_world_vpc[1]标识两个资源

resource "huaweicloud_vpc" "my_hello_world_vpc" {
  count = 2
  name = "test_vpc"
}

以json格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc[0]huaweicloud_vpc.my_hello_world_vpc[1]标识两个资源

{
  "resource": {
    "huaweicloud_vpc": {
      "my_hello_world_vpc": {
        "name": "test_vpc",
        "count": 2
      }
    }
  }
}

如果用户在模板中使用for_each,则index_key为用户自定义的字符串

以HCL格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc["vpc1"]huaweicloud_vpc.my_hello_world_vpc["vpc2"]标识两个资源

resource "huaweicloud_vpc" "my_hello_world_vpc" {
  for_each = {
    "vpc1" = "test_vpc"
    "vpc2" = "test_vpc"
  }
  name = each.value
}

以json格式的模板为例,用户在模板中可以通过huaweicloud_vpc.my_hello_world_vpc["vpc1"]huaweicloud_vpc.my_hello_world_vpc["vpc2"]标识两个资源

{
  "resource": {
    "huaweicloud_vpc": {
      "my_hello_world_vpc": {
        "for_each": {
          "vpc1": "test_vpc",
          "vpc2": "test_vpc"
        }
        "name": "${each.value}"
      }
    }
  }
}

resource_status

String

资源的状态

  • CREATION_IN_PROGRESS - 正在生成

  • CREATION_FAILED - 生成失败

  • CREATION_COMPLETE - 生成完成

  • DELETION_IN_PROGRESS - 正在删除

  • DELETION_FAILED - 删除失败

  • DELETION_COMPLETE - 已经删除

  • UPDATE_IN_PROGRESS - 正在更新。此处的更新特指非替换式更新,如果是替换式更新,则使用CREATION后DELETION

  • UPDATE_FAILED - 更新失败。此处的更新特指非替换式更新,如果是替换式更新,则使用CREATION后DELETION

  • UPDATE_COMPLETE - 更新完成。此处的更新特指非替换式更新,如果是替换式更新,则使用CREATION后DELETION

status_message

String

当该资源状态为任意失败状态(即以 FAILED 结尾时),将会展示简要的错误信息总结以供debug

resource_attributes

Array of ResourceAttribute objects

资源属性列表

表6 ResourceAttribute

参数

参数类型

描述

key

String

资源属性的键

value

String

资源属性的值

状态码: 400

表7 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表8 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 401

表9 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表10 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 403

表11 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表12 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 404

表13 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表14 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 429

表15 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表16 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 500

表17 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表18 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

请求示例

  • 列举资源栈资源

    GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/resources
  • 列举资源栈资源,并提供资源栈id以校验是否与当前资源栈匹配

    GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/resources?stack_id=ea6a4f0e-ee8a-494e-b12a-8be4a1e65af2

响应示例

状态码: 200

列举资源栈资源成功

{
  "stack_resources" : [ {
    "logical_resource_name" : "vpc",
    "logical_resource_type" : "huaweicloud_vpc",
    "physical_resource_id" : "38d617da-9b7f-4550-9ff7-d0e271dd4735",
    "physical_resource_name" : "my_vpc",
    "resource_attributes" : [ {
      "key" : "cidr",
      "value" : "172.16.0.0/16"
    }, {
      "key" : "description",
      "value" : ""
    }, {
      "key" : "enterprise_project_id",
      "value" : "0"
    }, {
      "key" : "id",
      "value" : "38d617da-9b7f-4550-9ff7-d0e271dd4735"
    }, {
      "key" : "name",
      "value" : "test_name"
    }, {
      "key" : "region",
      "value" : "cn-north-7"
    }, {
      "key" : "routes",
      "value" : "[]"
    }, {
      "key" : "secondary_cidr",
      "value" : "null"
    }, {
      "key" : "status",
      "value" : "OK"
    }, {
      "key" : "tags",
      "value" : "null"
    }, {
      "key" : "timeouts",
      "value" : "null"
    } ],
    "resource_status" : "CREATION_COMPLETE"
  } ]
}

状态码

状态码

描述

200

列举资源栈资源成功

400

用户请求非法

401

用户身份认证失败

403

用户无权限调用此API

404

资源栈不存在

429

请求数量过多

500

服务器内部错误