读取报告的数据

在 App Optimize API 创建报告后,您需要提取报告的费用和利用率数据。此操作会以列和行的形式下载相应信息,并根据您在请求报告时指定的维度和指标进行结构化。

此 API 请求不同于获取报告的元数据,后者仅返回报告的配置设置。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 验证您是否拥有完成本指南所需的权限

  6. 安装 Google Cloud CLI。

  7. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  8. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  9. 验证您是否拥有完成本指南所需的权限

所需的角色

如需获得读取报告数据所需的权限,请让管理员向您授予拥有报告资源的项目的 App Optimize Viewer (roles/appoptimize.viewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

读取报告数据

如需使用 REST API 从已完成的报告中读取数据,请向报告的 :read 端点发送 HTTP POST 请求。

  1. 使用以下 curl 命令读取报告数据的第一页:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{"pageSize": PAGE_SIZE}' \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
    

    替换以下内容:

    • PROJECT_ID:您要读取的报告资源所属的 Google Cloud 项目的 ID。
    • REPORT_ID:要读取的报告的 ID。此 ID 是在创建报告时指定的,可以通过列出报告来获取。
    • PAGE_SIZE:每页返回的行数上限。即使您指定了更大的值,服务器也最多每页返回 1,000 行。响应大小也受 10 MB 的限制,因此为了不超过该限制,返回的行数可能会更少。 如果省略 pageSize,则使用默认大小。
  2. 如果请求成功,该 API 会返回一个包含报告架构和行的 JSON 响应。以下是成功响应的示例:

    {
      "rows": [
        [
          "//apphub.googleapis.com/projects/123456789/locations/us-central1/applications/my-app-1",
          {
            "currency_code": "USD",
            "units": "106",
            "nanos": 321590000
          }
        ],
        [
          "//apphub.googleapis.com/projects/123456789/locations/us-central1/applications/my-app-2",
          {
            "currency_code": "USD",
            "units": "797",
            "nanos": 641691000
          }
        ]
      ],
      "columns": [
        {
          "name": "application",
          "type": "STRING"
        },
        {
          "name": "cost",
          "type": "RECORD",
          "columns": [
            {
              "name": "currency_code",
              "type": "STRING"
            },
            {
              "name": "units",
              "type": "INT64"
            },
            {
              "name": "nanos",
              "type": "INT64"
            }
          ]
        }
      ],
      "nextPageToken": "AABBCCddeeffGGHHiiJJkkLL"
    }
    

    如需了解 cost 字段中的值,请参阅解读费用指标。 如需详细了解相关数据并了解其限制,请参阅了解数据

  3. 如果响应包含 nextPageToken 字段,则报告包含其他行。 如需检索下一页结果,请再次发出 POST 请求,并在 JSON 正文的 pageToken 字段中添加此令牌:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{"pageToken": "NEXT_PAGE_TOKEN", "pageSize": PAGE_SIZE}' \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
    

    替换以下内容:

    • NEXT_PAGE_TOKEN:上一个响应中收到的 nextPageToken 的值。
    • PAGE_SIZE:每页返回的行数上限。虽然您可以在页面请求之间更改此值,但仍需遵守服务器端限制。

    重复此过程,直到响应不再包含 nextPageToken,这表示您已检索所有报告数据。

后续步骤