Objetivos
Escrever, implementar e acionar uma função HTTP do Cloud Run que acede ao Spanner.
Custos
Este documento usa funções do Spanner e do Cloud Run, que são componentes faturáveis do Google Cloud.
Para obter informações sobre o custo de utilização do Spanner, consulte os preços do Spanner.
Para informações sobre o custo de utilização das funções do Cloud Run, incluindo invocações gratuitas, consulte os preços das funções do Cloud Run.
Antes de começar
Este documento pressupõe que tem uma instância do Spanner com o nome
test-instance
e uma base de dados com o nomeexample-db
que usa o esquema da aplicação de música. Para obter instruções sobre como criar uma instância e uma base de dados com o esquema da aplicação de música, consulte o guia de início rápido com a consola ou os tutoriais para começar a usar o Go, o Java, o Node.js ou o Python.Ative as APIs Cloud Run Functions e Cloud Build.
Instale e inicialize a CLI gcloud.
Se já tiver a CLI gcloud instalada, atualize-a executando o seguinte comando:
gcloud components update
Prepare o ambiente de programação:
Prepare a candidatura
Clone o repositório da app de exemplo para a sua máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Em alternativa, pode transferir o exemplo como um ficheiro ZIP e extraí-lo.
Altere para o diretório que contém o código de exemplo das funções do Cloud Run para aceder ao Spanner:
Node.js
cd nodejs-docs-samples/functions/spanner/
Python
cd python-docs-samples/functions/spanner/
Go
cd golang-samples/functions/spanner/
Java
cd java-docs-samples/functions/spanner/
Veja o exemplo de código:
Node.js
Python
Go
Java
A função envia uma consulta SQL para obter todos os dados do
Albums
da sua base de dados. A função é executada quando faz um pedido HTTP ao ponto final da função.
Implemente a função
Para implementar a função com um acionador HTTP, execute o seguinte comando no diretório spanner
:
Node.js
gcloud functions deploy get \ --runtime nodejs20 --trigger-http
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão suportada do Node.js para executar
a sua função.
Python
gcloud functions deploy spanner_read_data \ --runtime python312 --trigger-http
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão do Python suportada para executar
a sua função.
Go
gcloud functions deploy HelloSpanner \ --runtime go121 --trigger-http
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão do Go suportada para executar
a sua função.
Java
gcloud functions deploy java-spanner-function \ --entry-point functions.HelloSpanner \ --runtime java17 \ --memory 512MB --trigger-http
Use a flag --runtime
para especificar o ID de tempo de execução de uma
versão Java suportada para executar
a sua função.
A implementação da função pode demorar até dois minutos.
Tenha em atenção o valor url
devolvido quando a implementação da função terminar. Vai usá-lo quando acionar a função.
Pode ver as suas funções implementadas na página Funções do Cloud Run na Google Cloud consola. Também pode criar e editar funções nessa página, bem como obter detalhes e diagnósticos para as suas funções.
Acionar a função
Efetue um pedido HTTP à sua função:
Node.js
curl "https://REGION-PROJECT_ID.cloudfunctions.net/get"
Python
curl "https://REGION-PROJECT_ID.cloudfunctions.net/spanner_read_data"
Go
curl "https://REGION-PROJECT_ID.cloudfunctions.net/HelloSpanner"
Java
curl "https://REGION-PROJECT_ID.cloudfunctions.net/java-spanner-function"
em que REGION
e PROJECT_ID
correspondem aos valores visíveis no seu terminal quando a função
termina a implementação. Deverá ver um resultado que mostra os resultados da consulta SQL, partindo do princípio de que seguiu um tutorial de introdução e preencheu a base de dados:
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
Também pode visitar o URL da função no navegador para ver o resultado da sua consulta SQL.
Limpeza
Para evitar incorrer em cobranças adicionais na sua Google Cloud conta pelos recursos das funções do Spanner e do Cloud Run usados neste documento, faça o seguinte:
Elimine a instância:
gcloud spanner instances delete test-instance
Elimine a função que implementou:
Node.js
gcloud functions delete get
Python
gcloud functions delete spanner_read_data
Go
gcloud functions delete HelloSpanner
Java
gcloud functions delete java-spanner-function