在 App Optimize API 创建报告后,您需要提取报告的费用和利用率数据。此操作会以列和行的形式下载相应信息,并根据您在请求报告时指定的维度和指标进行结构化。
此 API 请求不同于获取报告的元数据,后者仅返回报告的配置设置。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
所需的角色
如需获得读取报告数据所需的权限,请让管理员向您授予拥有报告资源的项目的 App Optimize Viewer (roles/appoptimize.viewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
读取报告数据
如需使用 REST API 从已完成的报告中读取数据,请向报告的 :read 端点发送 HTTP POST 请求。
使用以下
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,则使用默认大小。
如果请求成功,该 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" }如果响应包含
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,这表示您已检索所有报告数据。