Questo tutorial mostra come scrivere una funzione Cloud Run HTTP che restituisce i risultati di Spanner.
Obiettivi
Scrivi, esegui il deployment e attiva una funzione HTTP che accede a Spanner.
Costi
Questo documento utilizza Spanner e Cloud Run, che sono componenti fatturabili di Google Cloud.
Per informazioni sul costo dell'utilizzo di Spanner, consulta Prezzi di Spanner.
Per informazioni sul costo dell'utilizzo di Cloud Run, incluse le chiamate senza costi, consulta Prezzi di Cloud Run.
Prima di iniziare
Questo documento presuppone che tu disponga di un'istanza Spanner denominata
test-instancee di un database denominatoexample-dbche utilizza lo schema dell'applicazione musicale . Per istruzioni su come creare un'istanza e un database con lo schema dell'applicazione musicale, consulta la guida rapida sull'uso della console o i tutorial per iniziare a usare Node.js, o Python.Abilita le API Cloud Run e Cloud Build.
Installa e inizializza gcloud CLI.
Se hai già installato gcloud CLI, aggiornala eseguendo il seguente comando:
gcloud components updatePrepara l'ambiente di sviluppo:
Node.js
Consulta la guida alla configurazione di Node.js.
Python
Consulta la guida alla configurazione di Python.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire il deployment dei servizi Cloud Run dall'origine, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) sul tuo progetto - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) sul servizio Cloud Run - Utente account di servizio (
roles/iam.serviceAccountUser) sull'identità di servizio - Spanner Admin (
roles/spanner.admin) sull'istanza Spanner
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.
Ruoli per il account di servizio Cloud Build
Tu o il tuo amministratore dovete concedere al account di servizio Cloud Build il seguente ruolo IAM.
Fai clic per visualizzare i ruoli richiesti per il account di servizio Cloud Build
Cloud Build utilizza automaticamente il
service account predefinito di Compute Engine come account di servizio Cloud Build predefinito per creare il codice sorgente e la
risorsa Cloud Run, a meno che tu non sostituisca questo comportamento. Affinché
Cloud Build possa creare le tue origini, chiedi all'amministratore di concedere
Cloud Run Builder
(roles/run.builder) al account di servizio predefinito di Compute Engine nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Sostituisci PROJECT_NUMBER con il tuo Google Cloud
numero del progetto e PROJECT_ID con il tuo Google Cloud
ID progetto. Per istruzioni dettagliate su come trovare l'ID progetto e il numero di progetto,
consulta Creazione
e gestione dei progetti.
La propagazione della concessione del ruolo Cloud Run Builder al account di servizio predefinito di Compute Engine richiede alcuni minuti per propagarsi.
Ruoli per l'identità di servizio
Devi concedere il seguente ruolo IAM all'identità di servizio che utilizzi per il servizio Cloud Run.
- Lettore database Spanner (
roles/spanner.databaseReader)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Prepara l'applicazione
Clona il repository dell'app di esempio sulla tua macchina locale:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitIn alternativa puoi scaricare l'esempio come file ZIP ed estrarlo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitIn alternativa puoi scaricare l'esempio come file ZIP ed estrarlo.
Passa alla directory che contiene il codice campione di Cloud Run Functions per accedere a Spanner:
Node.js
cd nodejs-docs-samples/functions/spannerPython
cd python-docs-samples/functions/spannerDai un'occhiata al codice campione:
Node.js
Python
La funzione invia una query SQL per recuperare tutti i dati
Albumsdal database. La funzione viene eseguita quando effettui una richiesta HTTP all'endpoint della funzione.
esegui il deployment della funzione
Per il deployment della funzione con un trigger HTTP, esegui questo
comando nella directory spanner:
Node.js
gcloud run deploy nodejs-spanner-function \
--source . \
--region REGION \
--function spannerQuickstart \
--base-image RUNTIME_ID \
--log-httpPython
gcloud run deploy python-spanner-function \
--source . \
--region REGION \
--function spanner_read_data \
--base-image RUNTIME_ID \
--log-httpSostituisci:
REGION con il nome della Google Cloud regione in cui vuoi eseguire il deployment della funzione (ad esempio,
us-west1).RUNTIME_ID con l'ID runtime appropriato (ad esempio,
nodejs22). Consulta Runtime e immagini di base dei linguaggi supportati.
Il deployment della funzione potrebbe richiedere fino a due minuti.
Prendi nota del valore url restituito al termine del deployment della funzione. Lo utilizzerai quando attivi la funzione.
Puoi visualizzare le funzioni di cui è stato eseguito il deployment nella pagina Cloud Run nella Google Cloud console. Puoi anche creare e modificare le funzioni in questa pagina e ottenere dettagli e diagnostica per le tue funzioni.
Attiva la funzione
Invia una richiesta HTTP alla funzione:
curl URL
Sostituisci URL con il valore URL restituito al termine del deployment della funzione.
Dovresti vedere un output che mostra i risultati della query SQL, supponendo che tu abbia seguito un tutorial introduttivo e popolato il database:
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
Puoi anche visitare l'URL della funzione nel browser per visualizzare il risultato della query SQL.
Libera spazio
Per evitare che al tuo Google Cloud account vengano addebitati costi aggiuntivi per le risorse di Spanner e Cloud Run Functions utilizzate in questo documento:
Elimina l'istanza:
gcloud CLI instances delete test-instanceElimina il servizio Cloud Run di cui hai eseguito il deployment in questo tutorial:
Node.js
gcloud run services delete nodejs-spanner-functionPython
gcloud run services delete python-spanner-function
Passaggi successivi
- Scopri di più sulla scrittura di funzioni in Cloud Run Functions.
- Scopri di più sul deployment di funzioni in Cloud Run Functions.
- Scopri di più sull'attivazione di funzioni in Cloud Run Functions.