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

列举资源栈事件

功能介绍

列举资源栈事件(ListStackEvents)

此API用于列举资源栈某一次或全部的部署事件

  • 如果给予deployment_id,则会将deployment_id作为查询条件,返回对应某一次部署的资源栈事件;如果不给予deployment_id,则返回全量的资源栈事件

  • 如果给定的deployment_id对应的部署不存在,则返回404

  • 可以使用filter作为过滤器,过滤出指定事件类型(event_type)、资源类型(resource_type)、资源名称(resource_name)的资源栈事件

  • 可以使用field选择数据应返回的属性,属性事件类型(event_type)不可配置,一定会返回,可选择的属性有逝去时间(elapsed_seconds)、事件消息(event_message)、 资源ID键(resource_id_key)、资源ID值(resource_id_value)、资源键(resource_key)、资源类型(resource_type)、资源名称(resource_name)和时间戳(timestamp)

  • 事件返回将以时间降序排列

URI

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

表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

deployment_id

String

标识部署的唯一Id,此Id由资源编排服务在触发部署、回滚等操作时生成,为UUID。

filter

String

过滤条件

  • 与(AND)运算符使用逗号(,)定义

  • 或(OR)运算符使用竖线(|)定义,OR运算符优先级高于AND运算符

  • 不支持括号

  • 过滤运算符仅支持等号(==)

  • 过滤参数名及其值仅支持包含大小写英文、数字和下划线

  • 过滤条件中禁止使用分号,如果有分号,则此条过滤会被忽略

  • 一个过滤参数仅能与一个与条件相关,一个与条件中的多个或条件仅能与一个过滤参数相关

field

String

选择的属性名称

  • 属性名仅支持包含大小写英文、数字和下划线

  • 多个属性名称之间以逗号(,)分隔

请求参数

表3 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

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

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

stack_events

Array of StackEvent objects

资源栈事件列表

表5 StackEvent

参数

参数类型

描述

resource_type

String

资源的类型

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

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

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

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

resource_name

String

资源的名称,默认为资源的逻辑名称

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

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

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

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

resource_id_key

String

资源id的名称,即对应资源作为id使用的值的名称,当资源未创建的时候,不返回resource_id_key

此id由provider定义,因此不同的provider可能遵循了不同的命名规则,具体的命名规则请与provider开发者确认或阅读provider文档

resource_id_value

String

资源id的值,即对应资源作为id使用的值,当资源未创建的时候,不返回resource_id_value

resource_key

String

资源键,如果用户在模板中使用了count或for_each则会返回resource_key

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

以HCL格式的模板为例,模板中count为2,意味着将会生成两个资源,对应的resource_key分别为0和1

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

以json格式的模板为例,模板中count为2,意味着将会生成两个资源,对应的resource_key分别为0和1

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

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

以HCL格式的模板为例,resource_key分别为vpc1和vpc2

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

以json格式的模板为例,resource_key分别为vpc1和vpc2

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

time

String

事件发生的时间

格式遵循RFC3339,即yyyy-mm-ddTHH:MM:SSZ,如1970-01-01T00:00:00Z

event_type

String

此次事件的类型

  • LOG - 记录状态信息,比如当前状态,目标状态等。

  • ERROR - 记录失败信息

  • DRIFT - 记录资源偏移信息

  • SUMMARY - 记录资源变更结果总结

  • CREATION_IN_PROGRESS - 正在生成

  • CREATION_FAILED - 生成失败

  • CREATION_COMPLETE - 生成完成

  • DELETION_IN_PROGRESS - 正在删除

  • DELETION_FAILED - 删除失败

  • DELETION_COMPLETE - 已经删除

  • UPDATE_IN_PROGRESS - 正在更新。此处的更新特指非替换式更新,如果是替换式更新,则是DELETION后CREATION,或者CREATION后DELETION,具体以何种行为进行替换式更新由Provider定义。

  • UPDATE_FAILED - 更新失败。此处的更新特指非替换式更新,如果是替换式更新,则是DELETION后CREATION,或者CREATION后DELETION,具体以何种行为进行替换式更新由Provider定义。

  • UPDATE_COMPLETE - 更新完成。此处的更新特指非替换式更新,如果是替换式更新,则是DELETION后CREATION,或者CREATION后DELETION,具体以何种行为进行替换式更新由Provider定义。

event_message

String

该资源栈事件对应的详细信息

elapsed_seconds

Integer

此事件执行所花的时间,以秒为单位

状态码: 400

表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

响应消息

状态码: 401

表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

响应消息

状态码: 403

表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

响应消息

状态码: 404

表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

响应消息

状态码: 429

表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

响应消息

状态码: 500

表16 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表17 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

请求示例

  • 通过filter获取指定event_type和resource_name的资源栈事件

    GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/events?filter=event_type==LOG,resource_name==my_hello_world_resource
  • 通过field选择返回resource_key、resource_name和event_type三个属性,其中event_type为自动补选

    GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/events?field=resource_key,resource_name
  • 通过deployment_id获取指定部署的资源栈事件

    GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/events?deployment_id=81edbb3e-00d9-42fd-94c8-59c7525d0f28

响应示例

状态码: 200

列举资源栈事件成功

{
  "stack_events" : [ {
    "event_message" : "Apply required resource success. ",
    "event_type" : "LOG",
    "time" : "2023-05-17T11:56:47Z"
  }, {
    "event_message" : "Apply complete! Resources: 1 added, 0 changed, 0 destroyed.",
    "event_type" : "SUMMARY",
    "time" : "2023-05-17T11:56:45Z"
  }, {
    "resource_type" : "huaweicloud_vpc",
    "resource_name" : "vpc",
    "elapsed_seconds" : 8,
    "event_message" : "huaweicloud_vpc.vpc: Creation complete after 8s [id=38d617da-9b7f-4550-9ff7-d0e271dd4735]",
    "event_type" : "CREATION_COMPLETE",
    "resource_id_key" : "id",
    "resource_id_value" : "38d617da-9b7f-4550-9ff7-d0e271dd4735",
    "time" : "2023-05-17T11:56:40Z"
  }, {
    "resource_type" : "huaweicloud_vpc",
    "resource_name" : "vpc",
    "event_message" : "huaweicloud_vpc.vpc: Creating...",
    "event_type" : "CREATION_IN_PROGRESS",
    "time" : "2023-05-17T11:56:32Z"
  }, {
    "event_message" : "Creating required resource now",
    "event_type" : "LOG",
    "time" : "2023-05-17T11:56:31Z"
  } ]
}

状态码

状态码

描述

200

列举资源栈事件成功

400

用户请求非法

401

用户身份认证失败

403

用户无权限调用此API

404

资源栈或指定的部署不存在

429

请求数量过多

500

服务器内部错误