App Optimize API 创建报告后,您可以提取报告的费用和使用情况数据。此操作会将这些信息下载为列和行,并根据您在请求报告时指定的维度和指标进行结构化。
此 API 请求不同于获取 报告的元数据,后者仅返回报告的 配置设置。
准备工作
-
登录您的 Google Cloud 账号。如果您是新手 Google Cloud, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
Verify that you have the permissions required to complete this guide.
选择与您计划如何使用本文档中的示例对应的标签页:
gcloud
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在控制台的底部启动,并显示命令行提示符。 Google Cloud Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟来完成初始化。
如需了解如何为生产环境设置身份验证,请参阅身份验证文档中的 为在 Google Cloud 上运行的代码设置应用默认凭据。 Google Cloud
Python
- 安装 Python 客户端库 App Optimize API。
-
如需在本地开发环境中使用本页面上的 Python 示例,请安装并 初始化 gcloud CLI,然后使用您的用户凭证设置应用默认凭据。
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。
-
如果您使用的是本地 shell,请为您的用户 账号创建本地身份验证凭证:
gcloud auth application-default login
如果您使用的是 Cloud Shell,则无需执行此操作。
如果返回了身份验证错误,并且您使用的是外部身份提供方 (IdP),请确认您已 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 身份验证文档中的 为本地开发环境设置 ADC Google Cloud
如需了解如何为生产环境设置身份验证,请参阅身份验证文档中的 为在 Google Cloud 上运行的代码设置应用默认凭据。 Google Cloud
-
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的 凭证。
安装 Google Cloud CLI。
如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 身份验证文档 中的 Google Cloud 使用 REST 时进行身份验证。
如需了解如何为生产环境设置身份验证,请参阅身份验证文档中的 为在 Google Cloud 上运行的代码设置应用默认凭据。 Google Cloud
所需的角色
如需获得读取报告数据所需的权限,请让您的管理员向您授予拥有报告资源的项目中的 App Optimize Viewer (roles/appoptimize.viewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。
读取报告数据
如需读取已完成报告中的数据,请按照您首选方法的说明操作:
gcloud
使用 gcloud beta app-optimize reports read 命令提取报告的数据。
gcloud beta app-optimize reports read REPORT_ID \
--project=PROJECT_ID \
--location=global
替换以下内容:
PROJECT_ID:拥有您要读取的报告资源的 Google Cloud 项目 ID。REPORT_ID:要读取的报告的 ID。此 ID 是在创建报告时指定的,可以通过 列出报告来获取。
gcloud 命令会自动处理分页,并返回所有请求的资源。
Python
以下 Python 代码使用 AppOptimizeClient.read_report() 读取报告的数据。
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
# Create the App Optimize client and read a report's data
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.ReadReportRequest(
name=f"projects/{project_id}/locations/global/reports/{report_id}"
)
result = client.read_report(request=request)
# Display the report data
print(result)
替换以下内容:
PROJECT_ID:拥有您要读取的报告资源的 Google Cloud 项目 ID。REPORT_ID:要读取的报告的 ID。此 ID 是在创建报告时指定的,可以通过 列出报告来获取。
客户端库会自动处理分页,并从迭代器生成结果。
REST
向 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,这表示您已检索所有报告数据。