Cómo crear y leer un informe
La API de App Optimize te permite generar informes sobre tus Google Cloud costos y uso de recursos para ayudarte a optimizar la inversión. En este inicio rápido, crearás un informe, supervisarás su generación y leerás sus datos con Google Cloud CLI, la biblioteca cliente de Python o la API de REST.
Antes de comenzar
Los ejemplos de esta guía requieren un proyecto Google Cloud 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 analizan 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 cuenta de Google Cloud . Si es la primera vez que usas 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 que corresponda a la forma en que planeas usar las muestras de este documento:
gcloud
En la consola de Google Cloud , activa Cloud Shell.
En la parte inferior de la consola de Google Cloud , 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 para 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 documentación de autenticación de Google Cloud .
Python
- Instala la biblioteca cliente de Python para la API de App Optimize.
-
Para usar las muestras de Python de 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 gcloud CLI con tu identidad federada.
-
Si usas una 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 documentación de autenticación de Google Cloud .
Para obtener información sobre cómo configurar la autenticación para 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 documentación de autenticación de Google Cloud .
-
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 externo (IdP), 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 para 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 documentación de autenticación de Google Cloud .
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 algún 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 de tu PROJECT_ID elegido. El informe desglosa los costos por cadaGoogle Cloud producto utilizado, como Compute Engine y Cloud Storage, y por el SKU y la ubicación específicos. El informe abarca los últimos tres días de datos.
Para crear el recurso del informe, sigue las instrucciones del método que prefieras:
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 proyecto de Google Cloud .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, devuelve 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 proyecto de Google Cloud .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 POST HTTP a la ruta de acceso al recurso projects.locations.reports de la API de REST.
Para enviar la solicitud, usa el siguiente comando de
curl: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 proyecto de Google Cloud .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. A continuación, se muestra 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 del valorOPERATION_ID, ya que lo usarás en el siguiente paso.Dado que la generación de informes puede tardar un tiempo, debes sondear el 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" } }
Cómo leer los datos del informe
Para recuperar los datos del informe, sigue las instrucciones del método que prefieras:
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 el 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 las columnas. A continuación, se muestra un 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 Cómo leer los datos de un informe.
Para comprender los valores del campo cost, consulta Cómo interpretar las métricas de costos.
Para obtener más información sobre los datos y comprender sus limitaciones, consulta Cómo comprender los datos.
Realiza una limpieza
La API de App Optimize borra automáticamente tu informe 24 horas después de que se crea. Para borrar el informe antes, sigue las instrucciones del método que prefieras:
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 los informes:
- Consulta la descripción general de la API de App Optimize.