Créer et lire un rapport
Découvrez comment créer un rapport App Optimize API sur les Google Cloud coûts de vos ressources, surveiller la génération du rapport et lire les données obtenues lorsqu'elles sont prêtes. Dans ce guide de démarrage rapide, vous pouvez utiliser l'API REST ou la bibliothèque cliente Python.
Avant de commencer
Les exemples de ce guide nécessitent un Google Cloud projet avec des ressources actives à analyser. L'API App Optimize a besoin de données de facturation et d'utilisation pour produire des résultats significatifs. Les rapports exécutés sur des projets nouveaux ou vides seront vides.
Dans ce guide, le projet identifié comme
PROJECT_IDfournit le champ d'application des données et héberge la ressource de rapport.L'API App Optimize permet de créer des rapports dans un projet qui analyse les données d'un autre projet ou à partir de applications dans des limites de projet unique ou de niveau dossier. Pour générer un rapport sur une application App Hub, qui peut être composée de plusieurs projets, vous devez disposer des autorisations de surveillance et de facturation requises sur tous les projets associés de l'application pour créer le rapport.
Assurez-vous que l'API App Optimize est activée pour le projet que vous utiliserez pour créer et gérer la ressource de rapport.
-
Verify that you have the permissions required to complete this guide.
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de ce document :
gcloud
Installez la Google Cloud CLI.
Configurez la gcloud CLI afin d'utiliser votre identité fédérée.
Pour en savoir plus, consultez Se connecter à la gcloud CLI avec votre identité fédérée.
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud initAprès avoir initialisé la gcloud CLI, mettez-la à jour et installez les composants requis :
gcloud components update gcloud components install beta
Pour en savoir plus sur la configuration de l'authentification dans un environnement de production, consultez Configurer les identifiants par défaut de l'application pour le code exécuté sur Google Cloud dans la Google Cloud documentation sur l'authentification.
Python
- Installez la bibliothèque cliente Python pour l'API App Optimize.
-
Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez le service Identifiants par défaut de l'application avec vos identifiants utilisateur.
-
Installez la Google Cloud CLI.
-
Configurez la gcloud CLI afin d'utiliser votre identité fédérée.
Pour en savoir plus, consultez Se connecter à la gcloud CLI avec votre identité fédérée.
-
gcloud auth application-default login
Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l' Google Cloud authentification.
Pour en savoir plus sur la configuration de l'authentification dans un environnement de production, consultez Configurer les identifiants par défaut de l'application pour le code exécuté sur Google Cloud dans la Google Cloud documentation sur l'authentification.
-
REST
Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l' Google Cloud authentification.
Pour en savoir plus sur la configuration de l'authentification dans un environnement de production, consultez Configurer les identifiants par défaut de l'application pour le code exécuté sur Google Cloud dans la Google Cloud documentation sur l'authentification.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer et lire un rapport à l'aide de ce guide de démarrage rapide, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet avec des ressources actives :
- Administrateur App Optimize (
roles/appoptimize.admin) - Lecteur (
roles/viewer) (ou un autre rôle accordantbilling.resourceCosts.get)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur les autorisations et les rôles requis pour l'API App Optimize, consultez Contrôle des accès avec IAM.
Créer un rapport
Cet exemple crée un rapport sur les dépenses totales dans l'ID de projet que vous avez choisi PROJECT_ID. Le rapport détaille les coûts par Google Cloud produit utilisé, tels que Compute Engine et Cloud Storage, ainsi que par SKU et emplacement spécifiques. Le rapport couvre les trois derniers jours de données.
Pour créer la ressource de rapport, suivez les instructions de votre méthode préférée :
gcloud
Utilisez la commande gcloud beta app-optimize reports create pour créer le rapport.
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
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Google Cloud projet.REPORT_ID: ID unique de votre nouveau rapport, par exemplemy-first-report.
La commande attend la fin de l'opération de création du rapport, puis renvoie la ressource de rapport créée.
Python
Le code Python suivant utilise AppOptimizeClient.create_report() pour créer un rapport.
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)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Google Cloud projet.REPORT_ID: ID unique de votre nouveau rapport, par exemplemy-first-report.
La méthode operation.result() attend la fin de l'opération de création du rapport.
REST
Envoyez une requête HTTP POST au chemin d'accès de la ressource projects.locations.reports de l'API REST.
Pour envoyer la requête, utilisez la commande
curlsuivante :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"Remplacez les éléments suivants :
PROJECT_ID: ID de votre Google Cloud projet.REPORT_ID: ID unique de votre nouveau rapport, par exemplemy-first-report.
L'API renvoie un objet d'opération de longue durée (LRO), qui représente le processus de génération du rapport. Voici un exemple de réponse :
{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }L'état
"done": falseindique que le rapport est toujours en cours de génération. Notez l'OPERATION_ID, car vous l'utiliserez à l'étape suivante.Étant donné que la génération de rapports peut prendre du temps, vous devez interroger l'opération de longue durée jusqu'à ce qu'elle indique que le processus de génération est terminé et que les données du rapport sont prêtes à être téléchargées.
Pour vérifier l'état du processus de génération, envoyez une requête HTTP
GETau nom de la ressource de l'opération :curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Examinez la réponse. Si
"done"estfalse, attendez 5 à 15 secondes et répétez cette étape. Si"done"esttrue, le rapport est prêt.Voici un exemple de réponse lorsque l'opération est terminée :
{ "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" } }
Lire les données du rapport
Pour récupérer les données du rapport, suivez les instructions de votre méthode préférée :
gcloud
Utilisez la commande gcloud beta app-optimize reports read suivante pour récupérer les données du rapport.
gcloud beta app-optimize reports read REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
Le code Python suivant utilise AppOptimizeClient.read_report() pour récupérer les données du rapport.
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
Une fois l'opération de longue durée terminée, utilisez la méthode personnalisée :read de l'API 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 réponse de l'API contient les lignes de données du rapport et les définitions de colonnes. Voici un exemple de réponse positive :
{
"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": ""
}
Les rapports comportant de nombreuses lignes sont paginés. Pour gérer plusieurs pages, consultez Lire les données d'un rapport.
Pour comprendre les valeurs du champ cost, consultez
Interpréter les métriques de coût.
Pour en savoir plus sur les données et comprendre leurs limites, consultez
Comprendre les données.
Libérer de l'espace
L'API App Optimize supprime automatiquement votre rapport 24 heures après sa création. Pour supprimer le rapport plus tôt, suivez les instructions de votre méthode préférée :
gcloud
Utilisez la commande gcloud beta app-optimize reports delete pour supprimer le rapport.
gcloud beta app-optimize reports delete REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
Le code suivant utilise AppOptimizeClient.delete_report() pour supprimer le rapport.
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
Envoyez une requête HTTP DELETE au point de terminaison de la ressource du rapport :
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"
Étape suivante
- En savoir plus sur les rapports.
- Découvrez d'autres façons de gérer les rapports :
- Consultez la présentation de l'API App Optimize.