Eseguire il richiamo con una richiesta HTTPS

Dopo aver creato un servizio o una funzione, Cloud Run fornisce un endpoint HTTPS per il servizio. Puoi attivare l'esecuzione del servizio in risposta alle richieste HTTPS.

Tutti i servizi Cloud Run hanno un URL HTTPS stabile, che rappresenta l'endpoint HTTPS predefinito per il servizio, anche se puoi anche configurare domini personalizzati.

Ecco alcuni casi d'uso:

  • API web RESTful personalizzata
  • Microservizio privato
  • Middleware HTTP o proxy inverso per le applicazioni web
  • Applicazione web pre-confezionata

Creare servizi pubblici

La creazione di un servizio pubblico su Cloud Run richiede quanto segue:

  • Accesso al servizio dalla rete internet pubblica
  • Un URL destinato all'uso pubblico

Per rendere pubblico un servizio, impostalo in modo da consentire l'accesso non autenticato (pubblico) al momento del deploy o in qualsiasi momento dopo il deployment.

URL del servizio

Cloud Run assegna un URL non deterministico basato su hash a tutti i servizi. Se la lunghezza del nome del servizio lo consente, Cloud Run assegna al servizio anche un URL deterministico.

Puoi disattivare questi URL run.app predefiniti.

Puoi recuperare l'URL del servizio facendo clic sul nome del servizio nella console Google Cloud o eseguendo il seguente comando nella gcloud CLI:

gcloud run services describe SERVICE --format 'value(status.url)'

L'URL deterministico ha la priorità quando viene visualizzato.

URL deterministico

L'URL deterministico ti consente di prevedere l'URL del servizio prima che il servizio venga creato, il che può essere utile per la comunicazione tra servizi.

L'URL deterministico è disponibile solo per i segmenti DNS di massimo 63 caratteri. Il segmento DNS contiene il nome del servizio, il numero del progetto e eventuali tag o tag di traffico.

L'URL deterministico di un servizio Cloud Run ha il seguente formato:

https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app

dove:

  • TAG è il tag di traffico facoltativo per la revisione che stai richiedendo.
  • PROJECT_NUMBER è il numero del progetto Google Cloud.
  • SERVICE_NAME è il nome del servizio Cloud Run.
  • REGION è il nome della regione, ad esempio us-central1.

URL non deterministico

Gli URL non deterministici non hanno un formato deterministico, il che significa che, poiché il secondo campo dell'URL è un hash casuale, non puoi prevedere quale sarà l'URL completo prima di implementare i servizi. Tuttavia, dopo aver eseguito il deployment del servizio, l'URL rimane stabile.

L'URL non deterministico di un servizio Cloud Run ha il formato https://[TAG---]SERVICE_IDENTIFIER.run.app, dove TAG fa riferimento al tag di traffico facoltativo per la revisione che richiedi e SERVICE_IDENTIFIER è un identificatore stabile e univoco per un servizio Cloud Run. Non analizzare il valore SERVICE_IDENTIFIER perché non ha un formato fisso e la logica per la generazione di SERVICE_IDENTIFIER è soggetta a modifiche.

Reindirizzamento da HTTP a HTTPS

Cloud Run reindirizza tutte le richieste HTTP a HTTPS, ma termina il protocollo TLS prima che raggiungano il servizio web. Se il tuo servizio genera risorse web che fanno riferimento ad altre risorse web con URL non sicuri (http://), la tua pagina potrebbe essere soggetta ad avvisi o errori relativi a contenuti misti. Utilizza il protocollo https per tutti gli URI web di riferimento o per le direttive proxy dell'account nella richiesta HTTP, ad esempio l'intestazione HTTP X-Forwarded-Proto.

HTTP e HTTP/2

Per impostazione predefinita, Cloud Run esegue il downgrade delle richieste HTTP/2 a HTTP/1 quando vengono inviate al contenitore. Se vuoi impostare esplicitamente il tuo servizio per utilizzare HTTP/2 end-to-end, consulta Utilizzo di HTTP/2.

Creare servizi privati

La creazione di un servizio privato su Cloud Run richiede di limitare l'accesso al servizio sfruttando l'autorizzazione invocatore IAM.

Puoi anche limitare l'accesso a un servizio utilizzando il meccanismo di autenticazione e autorizzazione a livello di applicazione, ad esempio utilizzando Identity Platform.

Testare i servizi privati

Il modo più semplice per testare i servizi privati è utilizzare il proxy Cloud Run in Google Cloud CLI. In questo modo, il servizio privato viene eseguito in proxy su http://localhost:8080 (o sulla porta specificata con --port), fornendo il token dell'account attivo o un altro token specificato. In questo modo puoi utilizzare un browser web o uno strumento come curl. Questo è il modo consigliato per testare in privato un sito web o un'API nel browser.

Puoi eseguire il proxy di un servizio localmente utilizzando la seguente riga di comando in un ambiente Linux, macOS, WSL (opzione preferita) o cygwin:

gcloud run services proxy SERVICE --project PROJECT-ID

Puoi anche testare i servizi privati senza il proxy utilizzando uno strumento come curl, passando un token di autenticazione nell'intestazione Authorization:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

Da servizio privato a servizio privato

Un servizio Cloud Run può chiamare un altro servizio Cloud Run con l'autenticazione di servizio a servizio.

Codice di esempio che richiama un servizio privato

Per esempi di codice che mostrano come ottenere un token ID ed effettuare una richiesta HTTP a un servizio privato, consulta l'argomento Autenticazione di servizio a servizio.

Utilizzo di un middleware per migliorare il servizio

I proxy HTTPS possono scaricare le funzionalità comuni da un servizio HTTP, come la memorizzazione nella cache, la convalida delle richieste o l'autorizzazione. Per i microservizi, molti proxy HTTP fanno parte di una soluzione API Gateway o di un mesh di servizi come Istio.

I prodotti Google Cloud che puoi utilizzare per migliorare il tuo servizio Cloud Run includono:

Richiamare una funzione con una richiesta HTTPS

Per impostazione predefinita, tutte le funzioni create in Cloud Run hanno un URL run.app HTTPS, che può essere utilizzato per attivare una funzione. Le funzioni create con un trigger Eventarc avranno anche un URL HTTPS, a meno che non disattivi questa opzione utilizzando la funzionalità di disattivazione dell'URL run.app.