Creare e leggere un report
Scopri come creare un report dell'API App Optimize delle tue Google Cloud spese, monitorare la generazione del report e leggere i dati risultanti quando sono pronti. In questa guida rapida, puoi utilizzare l'API REST o la libreria client Python.
Prima di iniziare
Gli esempi in questa guida richiedono un Google Cloud progetto con risorse attive da analizzare. L'API App Optimize ha bisogno di dati di fatturazione e utilizzo per produrre risultati significativi; i report eseguiti su progetti nuovi o vuoti saranno vuoti.
In questa guida, il progetto identificato come
PROJECT_IDfornisce l'ambito dei dati e ospita la risorsa report.L'API App Optimize supporta la creazione di report in un progetto che analizzano i dati di un altro progetto o di applicazioni in limiti a livello di singolo progetto o cartella. Per generare un report su un'applicazione App Hub, che può essere composta da più progetti, devi disporre delle autorizzazioni di monitoraggio e fatturazione richieste per tutti i progetti associati all'applicazione per creare il report.
Assicurati che l'API App Optimize sia abilitata per il progetto che utilizzerai per creare e gestire la risorsa report.
-
Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
Verify that you have the permissions required to complete this guide.
Seleziona la scheda relativa a come intendi utilizzare gli esempi in questo documento:
gcloud
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Per informazioni sulla configurazione dell'autenticazione per un ambiente di produzione, consulta Configura le Credenziali predefinite dell'applicazione per il codice in esecuzione su Google Cloud nella documentazione sull'autenticazione di Google Cloud .
Python
- Installa la libreria client Python per l'API App Optimize.
-
Per utilizzare gli esempi di Python in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea le credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud .
Per informazioni sulla configurazione dell'autenticazione per un ambiente di produzione, consulta Configura le Credenziali predefinite dell'applicazione per il codice in esecuzione su Google Cloud nella documentazione sull'autenticazione di Google Cloud .
-
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Per informazioni sulla configurazione dell'autenticazione per un ambiente di produzione, consulta Configura le Credenziali predefinite dell'applicazione per il codice in esecuzione su Google Cloud nella documentazione sull'autenticazione di Google Cloud .
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare e leggere un report utilizzando questa guida rapida, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto con risorse attive:
-
Amministratore ottimizzazione app (
roles/appoptimize.admin) -
Visualizzatore (
roles/viewer) (o un altro ruolo che concedebilling.resourceCosts.get)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più sui ruoli e sulle autorizzazioni richiesti per l'API App Optimize, consulta Controllo dell'accesso con IAM.
crea un report
Questo esempio crea un report della spesa totale all'interno del PROJECT_ID che hai scelto. Il report suddivide i costi per ogni Google Cloud prodotto utilizzato, come Compute Engine e Cloud Storage, e per lo SKU e la località specifici. Il report copre gli ultimi tre giorni di dati.
Per creare la risorsa report, segui le istruzioni per il metodo che preferisci:
gcloud
Utilizza il comando gcloud beta app-optimize reports create per
creare il report.
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
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .REPORT_ID: un ID univoco per il nuovo report, ad esempiomy-first-report
Il comando attende il completamento dell'operazione di creazione del report e poi restituisce la risorsa report creata.
Python
Il seguente codice Python utilizza AppOptimizeClient.create_report()
per creare un report.
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)
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .REPORT_ID: un ID univoco per il nuovo report, ad esempiomy-first-report.
Il metodo operation.result() attende il completamento dell'operazione di creazione del report.
REST
Invia una richiesta POST HTTP al percorso della risorsa projects.locations.reports dell'API REST.
Per inviare la richiesta, utilizza il seguente comando
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"Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .REPORT_ID: un ID univoco per il nuovo report, ad esempiomy-first-report
L'API restituisce un oggetto operazione a lunga esecuzione (LRO), che rappresenta il processo di generazione del report. Ecco un esempio di risposta:
{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }Lo stato
"done": falseindica che il report è ancora in fase di generazione. Prendi nota diOPERATION_ID, poiché lo utilizzerai nel passaggio successivo.Poiché la generazione del report può richiedere tempo, devi eseguire il polling dell'LRO finché non indica che il processo di generazione è completato e che i dati del report sono pronti per il download.
Per controllare lo stato del processo di generazione, invia una richiesta HTTP
GETal nome della risorsa dell'operazione:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Esamina la risposta. Se
"done"èfalse, attendi 5-15 secondi e ripeti questo passaggio. Se"done"ètrue, il report è pronto.Di seguito è riportato un esempio di risposta al termine dell'operazione:
{ "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" } }
Leggere i dati del report
Per recuperare i dati del report, segui le istruzioni per il metodo che preferisci:
gcloud
Utilizza il seguente comando gcloud beta app-optimize reports read per
recuperare i dati del report.
gcloud beta app-optimize reports read REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
Il seguente codice Python utilizza AppOptimizeClient.read_report() per
recuperare i dati del report.
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 volta completata l'operazione LRO, utilizza il metodo personalizzato :read dell'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 risposta dell'API contiene le righe di dati del report e le definizioni delle colonne. Di seguito è riportato un esempio di risposta corretta:
{
"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": ""
}
I report con molte righe sono paginati. Per gestire più pagine, vedi Leggere i dati di un report.
Per comprendere i valori nel campo cost, consulta
Interpretazione delle metriche di costo.
Per saperne di più sui dati e comprenderne i limiti, vedi
Informazioni sui dati.
Esegui la pulizia
L'API App Optimize elimina automaticamente il report 24 ore dopo la sua creazione. Per eliminare il report prima, segui le istruzioni per il metodo che preferisci:
gcloud
Utilizza il comando gcloud beta app-optimize reports delete per rimuovere il report.
gcloud beta app-optimize reports delete REPORT_ID \
--project=PROJECT_ID \
--location=global
Python
Il seguente codice utilizza AppOptimizeClient.delete_report() per rimuovere il report.
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
Invia una richiesta HTTP DELETE all'endpoint della risorsa del report:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"
Passaggi successivi
- Scopri di più sui report.
- Esplora altri modi per gestire i report:
- Consulta la panoramica dell'API App Optimize.