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_ID proporciona 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.

gcloud

En la Google Cloud consola de, activa Cloud Shell.

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

  1. Instala la biblioteca cliente de Python para la API de App Optimize.
  2. 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.

    1. Instala Google Cloud CLI.

    2. Si usas un proveedor de identidad (IdP) externo, primero debes acceder a la gcloud CLI con tu identidad federada.

    3. 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:

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.

  1. Para enviar la solicitud, usa el siguiente curl comando:

    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": false indica que el informe aún se está generando. Toma nota de OPERATION_ID, ya que lo usarás en el siguiente paso.

  2. 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 GET al 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" es false, espera de 5 a 15 segundos y repite este paso. Si "done" es true, 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?