监控资产更改

本页面介绍如何创建和管理项目的 Feed。

概览

如需接收有关资源和政策变更的实时通知,您可以创建并订阅 Feed。配置 Feed 时,您可以指定要监控组织、文件夹、项目中受支持的资源类型、IAM 政策、访问权限政策和组织政策的更改。此外,您还可以向 Feed 添加条件,以便仅在资产发生特定类型的更改时收到通知。配置 Feed 后,只要指定的素材资源发生更改,您就会立即收到通知,这些更改将通过 Pub/Sub(格式为 TemporalAsset)发送。实时通知会连接到您现有的工作负载。借助此功能,您可以合并创建 Cloud Function 等操作,以便在检测到资源更改后逆转资源更改。

准备工作

在开始之前,请完成以下步骤。

  1. 对将运行 API 命令的项目启用 Cloud Asset Inventory API。

    启用 Cloud Asset Inventory API

  2. 配置使用 gcloud CLIAPI 调用 Cloud Asset Inventory API 所需的权限。

  3. 完成以下步骤以设置您的环境。

    gcloud CLI

    如需设置您的环境以使用 gcloud CLI 调用 Cloud Asset Inventory API,请在本地客户端上安装 Google Cloud CLI

    REST

    如需设置您的环境以使用 curl 命令调用 Cloud Asset Inventory API,请完成以下步骤。

    1. 确认您有权使用 curl 命令。

    2. 请务必为您的帐号授予项目、文件夹或组织的以下角色之一。

      • Cloud Asset Viewer 角色 (roles/cloudasset.viewer)

      • Owner 基本角色 (roles/owner)

  4. 向您的用户或服务帐号授予调用该 API 以进行实时 Feed 的权限。每项操作都需要以下权限:

    权限 说明
    cloudasset.feeds.create
    cloudasset.assets.exportResource
    创建 Feed
    cloudasset.feeds.update
    cloudasset.assets.exportResource
    更新 Feed
    cloudasset.feeds.delete 删除 Feed
    cloudasset.feeds.get 获取 Feed
    cloudasset.feeds.list 列出 Feed

    Cloud Asset Owner (roles/cloudasset.owner) 角色授予与 Cloud Asset API 相关的所有权限,包括上表中列出的权限。如需详细了解角色和权限,请参阅了解角色配置权限

  5. 如果要将元数据从一个项目导出到另一个项目,请确保导出项目的默认 Cloud Asset Inventory 服务帐号已存在且具有正确的权限

  6. 如果您还没有 Pub/Sub 主题,请创建 Pub/Sub 主题

限制

  • 任何 Feed 的创建、更新或删除操作最多可能需要 10 分钟才能生效。

  • 创建 Feed 的使用方项目必须比 Feed 存在时间更长,因为用于发布到目标 Pub/Sub 主题的服务账号位于使用方项目中。如果使用方项目已删除,则 Cloud Asset Inventory 无法发布到目标。Feed 不再运行,一旦项目一经删除便无法恢复。

创建 Feed

您最多可以在一个父级中创建 200 个 Feed。此限制仅适用于直接遵循该父级的 Feed,不计算其子级的 Feed。例如,如果您的某个组织下有 10 个项目,每个项目最多可以有 200 个 Feed,则该组织最多可以有 200 个 Feed。

如需为项目、文件夹或组织创建 Feed,请发出以下请求之一。Cloud Asset Inventory 会针对至少与 Feed 的一个 ASSET 参数匹配,并且也匹配条件表达式(如果已指定)的任何素材资源设置通知。

gcloud

项目

gcloud asset feeds create FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • PROJECT_ID:要将其元数据发送到 Feed 的项目的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • ASSET_TYPE:可选。以英文逗号分隔的可搜索资源类型列表,您希望接收哪些资源的更改通知。支持与 RE2 兼容的正则表达式。如果正则表达式与任何受支持的资源类型都不匹配,则会返回 INVALID_ARGUMENT 错误。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • CONTENT_TYPE:可选。您希望接收更改通知的资产内容类型

  • CONDITION_TITLE:可选。要应用于 Feed 的条件的标题。

  • CONDITION_DESCRIPTION:可选。要应用于 Feed 的条件的说明。

  • CONDITION_EXPRESSION:可选。要应用于 Feed 的条件表达式。

文件夹

gcloud asset feeds create FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • FOLDER_ID:要将其元数据发送到 Feed 的文件夹的 ID。

    如何查找 Google Cloud 文件夹 ID

    控制台

    如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

    gcloud CLI

    您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

    要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • PROJECT_ID:Pub/Sub 主题所在项目的 ID。

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • ASSET_TYPE:可选。以英文逗号分隔的可搜索资源类型列表,您希望接收哪些资源的更改通知。支持正则表达式。如果正则表达式与任何受支持的资源类型都不匹配,则会返回 INVALID_ARGUMENT 错误。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • CONTENT_TYPE:可选。您希望接收更改通知的资产内容类型

  • CONDITION_TITLE:可选。要应用于 Feed 的条件的标题。

  • CONDITION_DESCRIPTION:可选。要应用于 Feed 的条件的说明。

  • CONDITION_EXPRESSION:可选。要应用于 Feed 的条件表达式。

组织

gcloud asset feeds create FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • ORGANIZATION_ID:要将其元数据发送到 Feed 的项目的 ID。

    如何查找 Google Cloud 组织 ID

    控制台

    如需查找 Google Cloud 组织 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 点击全部标签页。组织 ID 显示在组织名称旁边。

    gcloud CLI

    您可以使用以下命令检索 Google Cloud 组织 ID:

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • PROJECT_ID:Pub/Sub 主题所在项目的 ID。

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • ASSET_TYPE:可选。以英文逗号分隔的可搜索资源类型列表,您希望接收哪些资源的更改通知。支持正则表达式。如果正则表达式与任何受支持的资源类型都不匹配,则会返回 INVALID_ARGUMENT 错误。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • CONTENT_TYPE:可选。您希望接收更改通知的资产内容类型

  • CONDITION_TITLE:可选。要应用于 Feed 的条件的标题。

  • CONDITION_DESCRIPTION:可选。要应用于 Feed 的条件的说明。

  • CONDITION_EXPRESSION:可选。要应用于 Feed 的条件表达式。

REST

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feedId": "FEED_ID",
          "feed": {
            "assetNames": [
              "ASSET_NAME_1",
              "ASSET_NAME_2",
              "..."
            ],
            "assetTypes": [
              "ASSET_TYPE_1",
              "ASSET_TYPE_2",
              "..."
            ],
            "contentType": "CONTENT_TYPE",
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            },
            "condition": {
              "title": "CONDITION_TITLE",
              "description": "CONDITION_DESCRIPTION",
              "expression": "CONDITION_EXPRESSION"
            }
          }
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

请提供以下值:

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • ASSET_TYPE:可选。以英文逗号分隔的可搜索资源类型列表,您希望接收哪些资源的更改通知。支持使用正则表达式。如果正则表达式与任何受支持的资源类型都不匹配,则会返回 INVALID_ARGUMENT 错误。

    至少需要一个 ASSET_NAMEASSET_TYPE

  • CONTENT_TYPE:可选。您希望接收更改通知的资产内容类型

  • PROJECT_ID:Pub/Sub 主题所在项目的 ID。

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • CONDITION_TITLE:可选。要应用于 Feed 的条件的标题。

  • CONDITION_DESCRIPTION:可选。要应用于 Feed 的条件的说明。

  • CONDITION_EXPRESSION:可选。要应用于 Feed 的条件表达式。

  • SCOPE:范围可以是项目、文件夹或组织。

    允许使用的值包括:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      如何查找 Google Cloud 项目编号

      控制台

      如需查找 Google Cloud 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的信息中心页面。

        前往信息中心

      2. 点击菜单栏中的切换器框。
      3. 请选择:框中选择您的组织,然后搜索项目名称。
      4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 项目编号:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      如何查找 Google Cloud 文件夹 ID

      控制台

      如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

      gcloud CLI

      您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

      要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      如何查找 Google Cloud 组织 ID

      控制台

      如需查找 Google Cloud 组织 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 点击全部标签页。组织 ID 显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

创建 Feed 后,订阅您在 Feed 中指定的 Pub/Sub 主题的更新。新 Feed 最长可能需要 10 分钟才能开始发送通知。每当匹配 assetNamesassetTypes 并且满足 condition 的资产发生更改,通知就会发出。

发布到 Pub/Sub 主题的第一条消息是字符串格式的欢迎消息,后续所有消息都采用 TemporalAsset 格式。以下是针对 RESOURCE 内容类型的示例消息。

{
  "asset": {
    "ancestors": [
      "projects/[PROJECT_ID]",
      "folders/[FOLDER_ID]",
      "organizations/[ORGANIZATION_ID]"
    ],
    "assetType": "[ASSET_TYPE]",
    "name": "[ASSET_NAME]",
    "resource": {
      "data": {
        ...detailed resource metadata...
      },
      "discoveryDocumentUri": "[DISCOVERY_URI]",
      "discoveryName": "[DISCOVERY_NAME]",
      "location": "[LOCATION]",
      "parent": "[PARENT_ASSET_NAME]",
      "version": "[VERSION]"
    },
    "updateTime": "[UPDATE_TIME]"
  },
  "priorAsset": {
    ...prior asset information...
  },
  "priorAssetState": "[PRIOR_ASSET_STATE]",
  "window": {
    "startTime": "[UPDATE_TIME]"
  }
}

如需详细了解 Pub/Sub 或如何设置订阅,请参阅 Pub/Sub 文档

为 Cloud Storage 存储桶或 BigQuery 表更改创建 Feed

BUCKET_NAME Cloud Storage 存储桶或任何 BigQuery 表中的内容发生更改时,以下命令会从 TOPIC_ID Pub/Sub 主题创建通知:

gcloud

项目

gcloud asset feeds create FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --asset-names=//storage.googleapis.com/BUCKET_NAME \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • PROJECT_ID:要将其元数据发送到 Feed 的项目的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • BUCKET_NAME:要监控的 Cloud Storage 存储桶的名称。

文件夹

gcloud asset feeds create FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --asset-names=//storage.googleapis.com/BUCKET_NAME \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • FOLDER_ID:要将其元数据发送到 Feed 的文件夹的 ID。

    如何查找 Google Cloud 文件夹 ID

    控制台

    如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

    gcloud CLI

    您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

    要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • BUCKET_NAME:要监控的 Cloud Storage 存储桶的名称。

组织

gcloud asset feeds create FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --asset-names=//storage.googleapis.com/BUCKET_NAME \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • ORGANIZATION_ID:要将其元数据发送到 Feed 的组织的 ID。

    如何查找 Google Cloud 组织 ID

    控制台

    如需查找 Google Cloud 组织 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 点击全部标签页。组织 ID 显示在组织名称旁边。

    gcloud CLI

    您可以使用以下命令检索 Google Cloud 组织 ID:

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • BUCKET_NAME:要监控的 Cloud Storage 存储桶的名称。

REST

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feedId": "FEED_ID",
          "feed": {
            "assetNames": ["storage.googleapis.com/BUCKET_NAME"],
            "assetTypes": ["bigquery.googleapis.com/Table"],
            "contentType": "RESOURCE",
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            }
          }
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

请提供以下值:

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • BUCKET_NAME:要监控的 Cloud Storage 存储桶的名称。

  • PROJECT_ID:要将其元数据发送到 Feed 的项目的 ID。

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • SCOPE:范围可以是项目、文件夹或组织。

    允许使用的值包括:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      如何查找 Google Cloud 项目编号

      控制台

      如需查找 Google Cloud 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的信息中心页面。

        前往信息中心

      2. 点击菜单栏中的切换器框。
      3. 请选择:框中选择您的组织,然后搜索项目名称。
      4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 项目编号:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      如何查找 Google Cloud 文件夹 ID

      控制台

      如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

      gcloud CLI

      您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

      要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      如何查找 Google Cloud 组织 ID

      控制台

      如需查找 Google Cloud 组织 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 点击全部标签页。组织 ID 显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

仅当资源本身的资源或政策元数据发生更改时,系统才会发送通知。在前面的示例中,更改 Cloud Storage 存储分区或 BigQuery 表下的任何资源都不会触发通知。

为资产类型变更创建 Feed

当资源类型以 compute.googleapis.com 开头的资源中的内容发生更改时,以下请求会从 TOPIC_ID Pub/Sub 主题创建通知。

gcloud

项目

gcloud asset feeds create FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --content-type=resource \
    --asset-types=compute.googleapis.com.*

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • PROJECT_ID:要将其元数据发送到 Feed 的项目的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

文件夹

gcloud asset feeds create FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --content-type=resource \
    --asset-types=compute.googleapis.com.*

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • FOLDER_ID:要将其元数据发送到 Feed 的文件夹的 ID。

    如何查找 Google Cloud 文件夹 ID

    控制台

    如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

    gcloud CLI

    您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

    要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

组织

gcloud asset feeds create FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --content-type=resource \
    --asset-types=compute.googleapis.com.*

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • ORGANIZATION_ID:要将其元数据发送到 Feed 的组织的 ID。

    如何查找 Google Cloud 组织 ID

    控制台

    如需查找 Google Cloud 组织 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 点击全部标签页。组织 ID 显示在组织名称旁边。

    gcloud CLI

    您可以使用以下命令检索 Google Cloud 组织 ID:

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

REST

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feedId": "FEED_ID",
          "feed": {
            "assetTypes": ["compute.googleapis.com.*"],
            "contentType": "RESOURCE",
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            }
          }
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

请提供以下值:

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • PROJECT_ID:要将其元数据发送到 Feed 的项目的 ID。

  • TOPIC_ID:要向其中发布通知的 Pub/Sub 主题的 ID。

  • SCOPE:范围可以是项目、文件夹或组织。

    允许使用的值包括:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      如何查找 Google Cloud 项目编号

      控制台

      如需查找 Google Cloud 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的信息中心页面。

        前往信息中心

      2. 点击菜单栏中的切换器框。
      3. 请选择:框中选择您的组织,然后搜索项目名称。
      4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 项目编号:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      如何查找 Google Cloud 文件夹 ID

      控制台

      如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

      gcloud CLI

      您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

      要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      如何查找 Google Cloud 组织 ID

      控制台

      如需查找 Google Cloud 组织 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 点击全部标签页。组织 ID 显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

获取 Feed

如需获取特定 Feed,请发出以下请求之一。

gcloud

项目

gcloud asset feeds describe FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • PROJECT_ID:在 Feed 中发布了元数据的项目的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

文件夹

gcloud asset feeds describe FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • FOLDER_ID:在 Feed 中发布了元数据的文件夹的 ID。

    如何查找 Google Cloud 文件夹 ID

    控制台

    如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

    gcloud CLI

    您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

    要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

组织

gcloud asset feeds describe FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • FEED_ID:唯一的素材资源 Feed 标识符。

  • ORGANIZATION_ID:在 Feed 中发布了元数据的组织的 ID。

    如何查找 Google Cloud 组织 ID

    控制台

    如需查找 Google Cloud 组织 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 点击全部标签页。组织 ID 显示在组织名称旁边。

    gcloud CLI

    您可以使用以下命令检索 Google Cloud 组织 ID:

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

REST

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds/FEED_ID

请提供以下值:

  • BILLING_PROJECT_ID:可选。默认的 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。详细了解结算项目

  • SCOPE:范围可以是项目、文件夹或组织。不支持项目 ID。

    允许使用的值包括:

    • projects/PROJECT_NUMBER

      如何查找 Google Cloud 项目编号

      控制台

      如需查找 Google Cloud 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的信息中心页面。

        前往信息中心

      2. 点击菜单栏中的切换器框。
      3. 请选择:框中选择您的组织,然后搜索项目名称。
      4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 项目编号:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      如何查找 Google Cloud 文件夹 ID

      控制台

      如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

      gcloud CLI

      您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

      要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      如何查找 Google Cloud 组织 ID

      控制台

      如需查找 Google Cloud 组织 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 点击全部标签页。组织 ID 显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • FEED_ID:唯一的素材资源 Feed 标识符。

按以下格式返回 Feed,其中 FULL_NAME_FEED_ID 是 Feed 标识符及其资源父级:

{
  "name": "FULL_NAME_FEED_ID",
  "assetTypes": ["ASSET_TYPES"],
  "assetNames": ["ASSET_NAMES"],
  "contentType": "CONTENT_TYPES",
  "feedOutputConfig": {
    "pubsubDestination": {
      "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
    }
  },
  "condition": {
    "title": "CONDITION_TITLE",
    "description": "CONDITION_DESCRIPTION",
    "expression": "CONDITION_EXPRESSION"
  }
}

商品详情 Feed

如需列出项目、文件夹或组织的所有 Feed,请发出以下请求之一。

gcloud

项目

gcloud asset feeds list \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • PROJECT_ID:在 Feed 中发布了元数据的项目的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

文件夹

gcloud asset feeds list \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • FOLDER_ID:在 Feed 中发布了元数据的文件夹的 ID。

    如何查找 Google Cloud 文件夹 ID

    控制台

    如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

    gcloud CLI

    您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

    要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

组织

gcloud asset feeds list \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • ORGANIZATION_ID:在 Feed 中发布了元数据的组织的 ID。

    如何查找 Google Cloud 组织 ID

    控制台

    如需查找 Google Cloud 组织 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 点击全部标签页。组织 ID 显示在组织名称旁边。

    gcloud CLI

    您可以使用以下命令检索 Google Cloud 组织 ID:

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

REST

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

请提供以下值:

  • BILLING_PROJECT_ID:可选。默认的 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。详细了解结算项目

  • SCOPE:范围可以是项目、文件夹或组织。

    允许使用的值包括:

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      如何查找 Google Cloud 项目编号

      控制台

      如需查找 Google Cloud 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的信息中心页面。

        前往信息中心

      2. 点击菜单栏中的切换器框。
      3. 请选择:框中选择您的组织,然后搜索项目名称。
      4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 项目编号:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      如何查找 Google Cloud 文件夹 ID

      控制台

      如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

      gcloud CLI

      您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

      要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      如何查找 Google Cloud 组织 ID

      控制台

      如需查找 Google Cloud 组织 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 点击全部标签页。组织 ID 显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

更新 Feed

要更新 Feed 的特性,您需要在 update_mask 中指定特性路径以及该特性的值。以下请求会更新项目上某个 Feed 的 assetNamestopic 值。

gcloud

项目

gcloud asset feeds update FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,...

请提供以下值:

  • PROJECT_ID:在 Feed 中发布了元数据的项目的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • TOPIC_ID:将通知发布到的 Pub/Sub 主题的 ID。

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

文件夹

gcloud asset feeds update FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,...

请提供以下值:

  • FOLDER_ID:在 Feed 中发布了元数据的文件夹的 ID。

    如何查找 Google Cloud 文件夹 ID

    控制台

    如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

    gcloud CLI

    您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

    要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • PROJECT_ID:Pub/Sub 主题所在项目的 ID。

  • TOPIC_ID:将通知发布到的 Pub/Sub 主题的 ID。

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

组织

gcloud asset feeds update FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,...

请提供以下值:

  • ORGANIZATION_ID:在 Feed 中发布了元数据的组织的 ID。

    如何查找 Google Cloud 组织 ID

    控制台

    如需查找 Google Cloud 组织 ID,请完成以下步骤:

    1. 转到 Google Cloud 控制台。

      前往 Google Cloud 控制台

    2. 点击菜单栏中的切换器框。
    3. 点击请选择:复选框,然后选择您的组织。
    4. 点击全部标签页。组织 ID 显示在组织名称旁边。

    gcloud CLI

    您可以使用以下命令检索 Google Cloud 组织 ID:

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • PROJECT_ID:Pub/Sub 主题所在项目的 ID。

  • TOPIC_ID:将通知发布到的 Pub/Sub 主题的 ID。

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

REST

curl -X PATCH \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feed": {
            "assetNames": [
                "ASSET_NAME_1",
                "ASSET_NAME_2",
                "..."
              ],
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            }
          },
          "update_mask": {
            "paths": ["asset_names", "feed_output_config.pubsub_destination.topic"]
          }
        }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds/FEED_ID

请提供以下值:

  • BILLING_PROJECT_ID:可选。默认的 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。详细了解结算项目

  • ASSET_NAME:可选。您要接收更改通知的资产全名的逗号分隔列表。

  • PROJECT_ID:Pub/Sub 主题所在项目的 ID。

  • TOPIC_ID:将通知发布到的 Pub/Sub 主题的 ID。

  • SCOPE:范围可以是项目、文件夹或组织。不支持项目 ID。

    允许使用的值包括:

    • projects/PROJECT_NUMBER

      如何查找 Google Cloud 项目编号

      控制台

      如需查找 Google Cloud 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的信息中心页面。

        前往信息中心

      2. 点击菜单栏中的切换器框。
      3. 请选择:框中选择您的组织,然后搜索项目名称。
      4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 项目编号:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      如何查找 Google Cloud 文件夹 ID

      控制台

      如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

      gcloud CLI

      您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

      要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      如何查找 Google Cloud 组织 ID

      控制台

      如需查找 Google Cloud 组织 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 点击全部标签页。组织 ID 显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

删除 Feed

如果您不想再收到资产更改通知,请使用以下命令删除项目的 Feed。

gcloud

项目

gcloud asset feeds delete FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • PROJECT_ID:在 Feed 中发布了元数据的项目的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

文件夹

gcloud asset feeds delete FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • FOLDER_ID:在 Feed 中发布了元数据的文件夹的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

组织

gcloud asset feeds delete FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID

请提供以下值:

  • ORGANIZATION_ID:在 Feed 中发布了元数据的组织的 ID。

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

REST

curl -X DELETE \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds/FEED_ID

请提供以下值:

  • BILLING_PROJECT_ID:可选。默认 Cloud Asset Inventory 服务代理所在的项目 ID,它具有管理您的 Pub/Sub 主题的权限。 详细了解结算项目

  • SCOPE:范围可以是项目、文件夹或组织。不支持项目 ID。

    允许使用的值包括:

    • projects/PROJECT_NUMBER

      如何查找 Google Cloud 项目编号

      控制台

      如需查找 Google Cloud 项目编号,请完成以下步骤:

      1. 前往 Google Cloud 控制台中的信息中心页面。

        前往信息中心

      2. 点击菜单栏中的切换器框。
      3. 请选择:框中选择您的组织,然后搜索项目名称。
      4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 项目编号:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      如何查找 Google Cloud 文件夹 ID

      控制台

      如需查找 Google Cloud 文件夹 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 搜索您的文件夹名称。文件夹 ID 会显示在文件夹名称旁边。

      gcloud CLI

      您可以使用以下命令检索位于组织级别的 Google Cloud 文件夹 ID:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      其中,TOP_LEVEL_FOLDER_NAME 可以是完整的字符串匹配,也可以是部分字符串匹配。移除 --format 选项可查看有关所找到文件夹的更多信息。

      要获取其他文件夹中的文件夹的 ID,请列出子文件夹:

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      如何查找 Google Cloud 组织 ID

      控制台

      如需查找 Google Cloud 组织 ID,请完成以下步骤:

      1. 转到 Google Cloud 控制台。

        前往 Google Cloud 控制台

      2. 点击菜单栏中的切换器框。
      3. 点击请选择:复选框,然后选择您的组织。
      4. 点击全部标签页。组织 ID 显示在组织名称旁边。

      gcloud CLI

      您可以使用以下命令检索 Google Cloud 组织 ID:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

问题排查

本部分介绍如何排查常见问题。

未能创建或更新 Feed

如果创建或更新 Feed 失败,则可能是由权限问题导致的。每个 Feed 创建或更新请求都包含三个部分:用于调用 API 的使用方项目、要监控的目标父级以及用于接收通知的目标 Pub/Sub 主题。

要创建或更新 Feed,您需要具备以下权限:

  • 调用方或服务帐号必须具有目标父级(可以是项目、文件夹或组织)的资产权限

  • 启用了 Cloud Asset API 的使用方项目中的资产服务帐号 (service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com) 必须具有目标 Pub/Sub 主题的 pubsub.topics.publish 权限。

包含 does not have permission 的错误消息可能表示用户或服务帐号没有资产权限。详细了解所需权限

如果错误消息包含 Fail to use TOPIC_ID as feed output destination,可能表示在将消息发布到您在 Feed 输出目标页面中指定的主题时出现问题。若要解决此问题,请执行以下操作:

  • 如果您使用的是 Google Cloud CLI,请确保您使用的是正确的项目:

    gcloud config list project
    
  • 请确保您指定了正确的主题名称。

  • 确保服务帐号 (service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com) 具有该主题的 pubsub.topics.publish 权限,其中 PROJECT_NUMBER 是您计划从中创建 Feed 且已启用 Cloud Asset Inventory 的项目的编号。

    如何查找 Google Cloud 项目编号

    控制台

    如需查找 Google Cloud 项目编号,请完成以下步骤:

    1. 前往 Google Cloud 控制台中的信息中心页面。

      前往信息中心

    2. 点击菜单栏中的切换器框。
    3. 请选择:框中选择您的组织,然后搜索项目名称。
    4. 点击项目名称以切换到该项目。项目编号会显示在项目信息卡片中。

    gcloud CLI

    您可以使用以下命令检索 Google Cloud 项目编号:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"

接收资源更新或 IAM 政策更新失败

如果您没有收到资源或 IAM 政策更新的通知,验证以下配置详情有助于解决此问题:

  • 确保资产的元数据已更改。实时 Feed 仅在受支持的资源类型的元数据发生更改时发送更新;将新文件上传到 Cloud Storage 存储桶等操作不会触发元数据更改。

  • 请确保您的资产符合 Feed 中指定的条件之一,即资产名称和资产类型。

  • 检查日志以了解向主题发布更新时是否出现错误。

使用 Cloud Logging

本部分介绍如何设置和查看 Cloud Asset Inventory 实时 Feed 的日志记录。

当实时 Feed 无法通过 Pub/Sub 发送资源或 IAM 政策更新时,Cloud Asset Inventory 会通过 Logging 记录错误状态和消息。Logging 默认启用,并且属于 Google Cloud Observability。了解 Google Cloud Observability 价格

查看实时 Feed 日志

如需查看日志,请转到日志浏览器

实时 Feed 日志按 Pub/Sub 主题编入索引。要查看所有日志,请执行以下操作:

  1. 点击搜索所有字段框旁边的资源组合框。

  2. 搜索 Cloud Pub/Sub Topic,然后点击 Cloud Pub/Sub 主题资源类型。

  3. 点击要查看的主题 ID。

  4. 点击应用

日志字段强制采用 UTF-8 编码。非 UTF-8 字符将被替换为问号。

记录的信息

实时 Feed 日志条目包含以下类型的信息:

  • 大多数 Google Cloud 日志中显示的常规信息,例如严重性、项目 ID、项目编号或时间戳。

  • jsonPayload 中的实时 Feed 日志字段,其中包含发布资源或 IAM 政策更新时的资产名称、Feed 输出配置、错误状态。

下表显示了每个字段包含的信息种类。

字段 类型和说明
name

string

Feed 的全名。格式为以下之一:

  • projects/PROJECT_ID/feeds/FEED_ID
  • folders/FOLDER_ID/feeds/FEED_ID
  • organizations/ORGANIZATION_ID/feeds/FEED_ID
asset_name

string

接收更新的资产的全名。例如:

//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1

如需了解详情,请参阅 资源名称

feed_output_config

FeedOutputConfig

Feed 输出配置,用于定义将资产更新发布到何处。

condition

Expr

Feed 条件,用于确定是否应发布资产更新。

error_status

Status

如果无法向 Feed 发布资产更新,则显示此状态。