Crea y lee un informe
Obtén información para crear un informe de la API de App Optimize sobre tu Google Cloud inversión, supervisar la generación del informe y leer los datos resultantes cuando estén listos para ti. En esta guía de inicio rápido, puedes usar la API de REST o la biblioteca cliente de Python.
Antes de comenzar
Los ejemplos de esta guía requieren un Google Cloud proyecto con recursos activos para analizar. La API de App Optimize necesita datos de facturación y uso para producir resultados significativos. Los informes que se ejecuten en proyectos nuevos o vacíos estarán vacíos.
En esta guía, el proyecto identificado como
PROJECT_IDproporciona el alcance de los datos y aloja el recurso del informe.La API de App Optimize admite la creación de informes en un proyecto que analiza datos de otro proyecto o de aplicaciones en límites de un solo proyecto o a nivel de carpeta. Para generar un informe sobre una aplicación de App Hub, que puede estar compuesta por varios proyectos, debes tener los permisos de supervisión y facturación necesarios en todos los proyectos asociados de la aplicación para crear el informe.
Asegúrate de que la API de App Optimize esté habilitada para el proyecto que usarás para crear y administrar el recurso del informe.
-
Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
Verify that you have the permissions required to complete this guide.
Selecciona la pestaña según cómo planeas usar las muestras de este documento:
gcloud
En la Google Cloud consola de, activa Cloud Shell.
En la parte inferior de la Google Cloud consola de, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada y con valores ya establecidos para el proyecto actual. La sesión puede tardar unos segundos en inicializarse.
Para obtener información sobre cómo configurar la autenticación de un entorno de producción, consulta Configura las credenciales predeterminadas de la aplicación para el código que se ejecuta en Google Cloud en la Google Cloud documentación de autenticación de.
Python
- Instala la biblioteca cliente de Python para la API de App Optimize.
-
Para usar las muestras de Python incluidas en esta página en un entorno de desarrollo local, instala e inicializa la gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad (IdP) externo, primero debes acceder a la gcloud CLI con tu identidad federada.
-
Si usas un shell local, crea credenciales de autenticación locales para tu cuenta de usuario:
gcloud auth application-default login
No es necesario que lo hagas si usas Cloud Shell.
Si se muestra un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Configura ADC para un entorno de desarrollo local en la Google Cloud documentación de autenticación de.
Para obtener información sobre cómo configurar la autenticación de un entorno de producción, consulta Configura las credenciales predeterminadas de la aplicación para el código que se ejecuta en Google Cloud en la Google Cloud documentación de autenticación de.
-
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad (IdP) externo, primero debes acceder a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de. Google Cloud
Para obtener información sobre cómo configurar la autenticación de un entorno de producción, consulta Configura las credenciales predeterminadas de la aplicación para el código que se ejecuta en Google Cloud en la Google Cloud documentación de autenticación de.
Roles obligatorios
Si quieres obtener los permisos que necesitas para crear y leer un informe con esta guía de inicio rápido, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto con recursos activos:
-
Administrador de App Optimize (
roles/appoptimize.admin) -
Visualizador (
roles/viewer) (o cualquier otro rol que otorguebilling.resourceCosts.get)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Para obtener más información sobre los permisos y roles necesarios para la API de App Optimize, consulta Control de acceso con IAM.
Crea un informe
En este ejemplo, se crea un informe de la inversión total dentro del elegido PROJECT_ID. El informe desglosa los costos por cada Google Cloud producto usado, como Compute Engine y Cloud Storage, y por la SKU y la ubicación específicas. El informe abarca los últimos tres días de datos.
Para crear el recurso del informe, sigue las instrucciones del método preferido:
gcloud
Usa el comando gcloud beta app-optimize reports create para crear el informe.
gcloud beta app-optimize reports create REPORT_ID \
--project=PROJECT_ID \
--location=global \
--dimensions=location,product_display_name,project,sku \
--metrics=cost \
--report-filter='hour >= now - duration("72h")' \
--scopes=project=projects/PROJECT_ID
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del Google Cloud proyecto.REPORT_ID: Es un ID único para tu informe nuevo, por ejemplo,my-first-report.
El comando espera a que se complete la operación de creación del informe y, luego, muestra el recurso del informe creado.
Python
El siguiente código de Python usa AppOptimizeClient.create_report() para crear un informe.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
# Create the App Optimize client and prepare a request for a new report
client = appoptimize_v1beta.AppOptimizeClient()
report = appoptimize_v1beta.Report(
dimensions=['location', 'product_display_name', 'project', 'sku'],
metrics=['cost'],
filter='hour >= now - duration("72h")',
scopes=[
appoptimize_v1beta.Scope(project=f"projects/{project_id}"),
],
)
request = appoptimize_v1beta.CreateReportRequest(
parent=f"projects/{project_id}/locations/global",
report=report,
report_id=report_id,
)
# Request the creation of the report and wait until the process is done
operation = client.create_report(request=request)
print("Waiting for report creation operation to complete...")
response = operation.result()
print(response)
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del Google Cloud proyecto.REPORT_ID: Es un ID único para tu informe nuevo, por ejemplo,my-first-report.
El método operation.result() espera a que se complete la operación de creación del informe.
REST
Envía una solicitud HTTP POST a la ruta de acceso del recurso projects.locations.reports de la API de REST.
Para enviar la solicitud, usa el siguiente
curlcomando:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "scopes": [ { "project": "projects/PROJECT_ID" } ], "dimensions": [ "location", "product_display_name", "project", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")" }' \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"Reemplaza lo siguiente:
PROJECT_ID: Es el ID del Google Cloud proyecto.REPORT_ID: Es un ID único para tu informe nuevo, por ejemplo,my-first-report.
La API devuelve un objeto de operación de larga duración (LRO), que representa el proceso de generación de informes. Esta es una respuesta de ejemplo:
{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }El estado
"done": falseindica que el informe aún se está generando. Toma nota deOPERATION_ID, ya que lo usarás en el siguiente paso.Como la generación de informes puede tardar un tiempo, debes sondear la LRO hasta que indique que el proceso de generación se completó y que los datos del informe están listos para descargarse.
Para verificar el estado del proceso de generación, envía una solicitud HTTP
GETal nombre del recurso de la operación:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Analiza la respuesta. Si
"done"esfalse, espera de 5 a 15 segundos y repite este paso. Si"done"estrue, el informe está listo.A continuación, se muestra un ejemplo de una respuesta cuando se completa la operación:
{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.Report", "name": "projects/PROJECT_ID/locations/global/reports/REPORT_ID", "scopes": [ { "project": "projects/PROJECT_ID" } ], "dimensions": [ "location", "product_display_name", "project", "sku" ], "metrics": [ "cost" ], "filter": "hour >= now - duration(\"72h\")", "expireTime": "2026-02-04T22:05:05Z" } }
Lee los datos del informe
Para recuperar los datos del informe, sigue las instrucciones del método preferido:
gcloud
Usa el siguiente comando gcloud beta app-optimize reports read para recuperar los datos del informe.
gcloud beta app-optimize reports read REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
El siguiente código de Python usa AppOptimizeClient.read_report() para recuperar los datos del informe.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
# Create the App Optimize client and read your report's data
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.ReadReportRequest(
name=name,
)
result = client.read_report(request=request)
# Display the report's data
print(result)
REST
Una vez que se complete la LRO, usa el método personalizado :read de la API de REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
La respuesta de la API contiene las filas de datos del informe y las definiciones de columna. Ejemplo de una respuesta correcta:
{
"rows": [
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "25",
"nanos": 750000000
}
],
[
"us-central1",
"Cloud Storage",
"projects/PROJECT_ID",
"9ADA-9ADC-2FBE",
{
"currency_code": "USD",
"units": "5",
"nanos": 100000000
}
],
[
"europe-west1",
"Compute Engine",
"projects/PROJECT_ID",
"6EC2-384A-47D9",
{
"currency_code": "USD",
"units": "18",
"nanos": 500000000
}
],
[
"us-central1",
"Compute Engine",
"projects/PROJECT_ID",
"F61D-4D51-AAFC",
{
"currency_code": "USD",
"units": "12",
"nanos": 200000000
}
]
],
"columns": [
{
"name": "location",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "product_display_name",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "project",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "sku",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "cost",
"type": "RECORD",
"mode": "NULLABLE",
"columns": [
{
"name": "currency_code",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "units",
"type": "INT64",
"mode": "NULLABLE"
},
{
"name": "nanos",
"type": "INT64",
"mode": "NULLABLE"
}
]
}
],
"next_page_token": ""
}
Los informes con muchas filas se paginan. Para controlar varias páginas, consulta Lee los datos de un informe.
Para comprender los valores del campo cost, consulta
Interpreta las métricas de costos.
Para obtener más información sobre los datos y comprender sus limitaciones, consulta
Comprende los datos.
Limpia
La API de App Optimize borra automáticamente tu informe 24 horas después de su creación. Para borrar el informe antes, sigue las instrucciones del método preferido:
gcloud
Usa el comando gcloud beta app-optimize reports delete para quitar el informe.
gcloud beta app-optimize reports delete REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
El siguiente código usa AppOptimizeClient.delete_report() para quitar el informe.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
name = f"projects/{project_id}/locations/global/reports/{report_id}"
client = appoptimize_v1beta.AppOptimizeClient()
request = appoptimize_v1beta.DeleteReportRequest(name=name)
client.delete_report(request=request)
print(f"Deleted report: {name}")
REST
Envía una solicitud HTTP DELETE al extremo del recurso del informe:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"
¿Qué sigue?
- Obtén más información sobre los informes.
- Explora otras formas de administrar informes:
- Consulta la descripción general de la API de App Optimize.