Introduzione ad API Gateway e App Engine
Questa pagina mostra come configurare API Gateway per gestire e proteggere un servizio di backend App Engine.
Elenco attività
Utilizza il seguente elenco di attività man mano che svolgi il tutorial. Tutte le attività sono necessarie per eseguire il deployment di un gateway API per il tuo servizio di backend App Engine.
- Crea o seleziona un progetto Google Cloud.
- Se non hai ancora eseguito il deployment di App Engine, esegui il deployment di un'app di esempio. Consulta Prima di iniziare.
- Abilita i servizi API Gateway richiesti.
- Configura IAP per proteggere la tua app. Consulta Configurare IAP.
- Crea una specifica OpenAPI che descriva la tua API e configura le route per App Engine. Consulta la sezione Creare una configurazione API.
- Esegui il deployment di un gateway API utilizzando la configurazione API. Consulta Eseguire il deployment di un gateway API.
- Monitorare l'attività nelle tue app. Consulta Monitorare l'attività dell'API.
- Evita che al tuo account Google Cloud vengano addebitati costi. Consulta Pulizia.
Prima di iniziare
Nella console Google Cloud, vai alla pagina Dashboard e seleziona o crea un progetto Google Cloud.
Verifica che la fatturazione sia attivata per il tuo progetto.
Prendi nota dell'ID progetto che vuoi utilizzare per questo tutorial. Nel resto di questa pagina, questo ID progetto è indicato come PROJECT_ID.
Scarica e installa Google Cloud CLI.
Aggiorna i componenti
gcloud
:gcloud components update
Imposta il progetto predefinito. Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud:
gcloud config set project PROJECT_ID
Se non hai eseguito il deployment della tua app App Engine, segui i passaggi descritti nella guida rapida di App Engine per la tua lingua per utilizzare Google Cloud CLI per selezionare o creare un progetto Google Cloud ed eseguire il deployment di un'app di esempio. Prendi nota dell'URL dell'app, nonché della regione e dell'ID progetto in cui è stato eseguito il deployment dell'app.
Attivazione dei servizi richiesti
API Gateway richiede l'abilitazione dei seguenti servizi Google:
Nome | Titolo |
---|---|
apigateway.googleapis.com |
API API Gateway |
servicemanagement.googleapis.com |
API Service Management |
servicecontrol.googleapis.com |
API Service Control |
Per verificare che i servizi richiesti siano abilitati:
gcloud services list
Se non vedi i servizi richiesti nell'elenco, attivali:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Per ulteriori informazioni sui servizi gcloud
, consulta
Servizi gcloud
.
Configurare gli acquisti in-app per proteggere l'app
Per proteggere la tua app App Engine, devi utilizzare
Identity-Aware Proxy (IAP) per assicurarti che le richieste siano autenticate. Questa procedura include la specifica dei membri a cui deve essere concesso il ruolo IAP-secured Web App User
richiesto per il progetto.
Segui i passaggi per abilitare gli acquisti in-app e assicurati di poter accedere alla tua applicazione.
Creazione di una configurazione API
Prima che API Gateway possa essere utilizzato per gestire il traffico verso il backend App Engine di cui hai eseguito il deployment, è necessaria una configurazione API.
Puoi creare una configurazione API utilizzando una specifica OpenAPI contenente annotazioni specializzate per definire il comportamento di API Gateway scelto. Dovrai aggiungere un campo specifico di Google contenente l'URL di ogni app App Engine in modo che API Gateway disponga delle informazioni necessarie per richiamare un'app.
- Crea un file di testo denominato
openapi2-appengine.yaml
. Per praticità, questa pagina fa riferimento alla specifica OpenAPI con questo nome file, ma puoi assegnarne un altro se preferisci. - Elenca ogni app nella sezione
paths
del fileopenapi2-appengine.yaml
, come mostrato di seguito:# openapi2-appengine.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with an App Engine backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: APP_URL jwt_audience: IAP_CLIENT_ID responses: '200': description: A successful response schema: type: string
- Nel campo
title
, sostituisci API_ID con il nome dell'API e optional-string con una breve descrizione a tua scelta. Se l'API non esiste già, il comando per creare la configurazione API creerà anche l'API con il nome specificato. Il valore del campotitle
viene utilizzato per coniare le chiavi API che consentono l'accesso a questa API. Consulta i requisiti per gli ID API per le linee guida per la denominazione delle API. - Nel campo
address
della sezionex-google-backend
, sostituisci APP_URL con l'URL effettivo del servizio App Engine (il percorso completo dell'API chiamata). Ad esempio:https://myapp.an.r.appspot.com/hello
.Sostituisci IAP_CLIENT_ID con l'ID client OAuth che hai creato durante la configurazione dell'IAP.
- Inserisci il seguente comando, dove:
- CONFIG_ID specifica il nome della configurazione API.
- API_ID specifica il nome dell'API. Se l'API non esiste già, questo comando la crea.
- PROJECT_ID specifica il nome del tuo progetto Google Cloud.
- SERVICE_ACCOUNT_EMAIL specifica l'account di servizio utilizzato per firmare i token per i backend con l'autenticazione configurata.
gcloud api-gateway api-configs create CONFIG_ID \ --api=API_ID --openapi-spec=openapi2-appengine.yaml \ --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
Il completamento dell'operazione potrebbe richiedere diversi minuti, poiché la configurazione dell'API viene propagata ai sistemi a valle. La creazione di una configurazione API complessa potrebbe richiedere fino a dieci minuti.
- Una volta creata la configurazione API, puoi visualizzarne i dettagli eseguendo questo comando:
gcloud api-gateway api-configs describe CONFIG_ID \ --api=API_ID --project=PROJECT_ID
Eseguire il deployment di un API Gateway
Ora puoi eseguire il deployment dell'API su API Gateway. Il deployment di un'API su API Gateway definisce anche un URL esterno che i client API possono utilizzare per accedere all'API.
Esegui questo comando per eseguire il deployment della configurazione API appena creata in API Gateway:
gcloud api-gateway gateways create GATEWAY_ID \ --api=API_ID --api-config=CONFIG_ID \ --location=GCP_REGION --project=PROJECT_ID
dove:
- GATEWAY_ID specifica il nome del gateway.
- API_ID specifica il nome dell'API API Gateway associata a questo gateway.
- CONFIG_ID specifica il nome della configurazione API di cui è stato eseguito il deployment nel gateway.
GCP_REGION è la regione Google Cloud per il gateway di cui è stato eseguito il deployment.
PROJECT_ID specifica il nome del tuo progetto Google Cloud.
Al termine, puoi utilizzare il seguente comando per visualizzare i dettagli del gateway:
gcloud api-gateway gateways describe GATEWAY_ID \ --location=GCP_REGION --project=PROJECT_ID
Prendi nota del valore della proprietà defaultHostname
nell'output di questo comando. Si tratta della parte del nome host dell'URL del gateway che utilizzerai per testare il deployment nel passaggio successivo.
Testare il deployment dell'API
Ora puoi inviare richieste all'API utilizzando l'URL generato al momento del deployment del gateway.
Inserisci il seguente comando curl
, dove:
- DEFAULT_HOSTNAME specifica la parte del nome host dell'URL del gateway di cui è stato eseguito il deployment. Il valore di
defaultHostname
è disponibile nell'output del comandogateways describe
mostrato sopra. hello
è il percorso specificato nella configurazione API.
curl https://DEFAULT_HOSTNAME/hello
Ad esempio:
curl https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
Dovresti vedere l'output seguente:
My-AppEngineApp: Access denied for user gateway-1a2b3c@04d5e6f35FgdsT73dFrty-tp.iam.gserviceaccount.com requesting https://my-project.appspot.com/helloGET. If you should have access, contact myldap@google.com and include the full text of this message.
Operazione riuscita. Il gateway gestisce l'accesso al servizio di backend App Engine. Per concedere l'accesso alla tua app App Engine, devi configurare un account di servizio con le autorizzazioni corrette per la tua gateway.
monitora l'attività dell'API
Visualizza i grafici delle attività per la tua API nella pagina API Gateway della console Google Cloud. Fai clic sull'API per visualizzare i relativi grafici delle attività nella pagina Panoramica. La visualizzazione dei dati relativi alle richieste nei grafici può richiedere alcuni minuti.
Esamina i log delle richieste per la tua API nella pagina Esplora log. Un link alla pagina Esplora log è disponibile nella pagina API Gateway della console Google Cloud.
Nella pagina API Gateway:- Seleziona l'API da visualizzare.
- Fai clic sulla scheda Dettagli.
- Fai clic sul link in Log.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa guida rapida, puoi:
In alternativa, puoi anche eliminare il progetto Google Cloud utilizzato per questo tutorial.