Este tutorial mostra-lhe como escrever uma função HTTP do Cloud Run que envia uma consulta para o BigQuery.
Antes de começar
Certifique-se de que configurou um novo projeto para o Cloud Run, conforme descrito na página de configuração.
Ative as APIs Artifact Registry, Cloud Build e Cloud Run Admin API:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
Se estiver ao abrigo de uma política da organização de restrição de domínio que restringe as invocações não autenticadas para o seu projeto, tem de aceder ao serviço implementado conforme descrito em Testar serviços privados.
Funções necessárias
Para receber as autorizações de que precisa para implementar serviços do Cloud Run a partir da origem, peça ao administrador para lhe conceder as seguintes funções de IAM:
-
Programador de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto -
Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer
) no serviço Cloud Run -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço -
Utilizador de tarefas do BigQuery (
roles/bigquery.jobUser
) na identidade do serviço
Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.
Funções da conta de serviço do Cloud Build
O utilizador ou o administrador tem de conceder à conta de serviço do Cloud Build a seguinte função do IAM.
Clique para ver as funções necessárias para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a
conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o
recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função
Cloud Run Builder
(roles/run.builder
) à conta de serviço predefinida do Compute Engine no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Substitua PROJECT_NUMBER
pelo seu Google Cloud
número do projeto e PROJECT_ID
pelo seu Google Cloud
ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto,
consulte o artigo Criar
e gerir projetos.
A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.
Prepare a aplicação
Clone o repositório da aplicação de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Em alternativa, transfira o exemplo como um ficheiro ZIP e extraia-o.
Altere para o diretório que contém o código de exemplo:
cd nodejs-docs-samples/functions/v2/helloBigQuery
Veja o exemplo de código. O exemplo envia uma consulta para palavras que ocorrem, pelo menos, 400 vezes no conjunto de dados especificado e devolve o resultado.
Implemente a função
Para implementar a função com um acionador HTTP:
Execute o seguinte comando no diretório que contém o código de exemplo:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
Substituir:
FUNCTION com o nome da função que está a implementar, por exemplo,
my-bigquery-function
. Pode omitir este parâmetro por completo, mas é-lhe pedido o nome se o omitir.FUNCTION_ENTRYPOINT com o ponto de entrada da sua função no código-fonte. Este é o código que o Cloud Run executa quando a sua função é executada. O valor desta flag tem de ser um nome de função ou um nome de classe totalmente qualificado que exista no seu código-fonte. O ponto de entrada que tem de especificar para a função de exemplo é
helloBigQuery
.BASE_IMAGE com o ambiente de imagem base para a sua função, por exemplo,
nodejs22
. Para ver detalhes sobre as imagens base e os pacotes incluídos em cada imagem, consulte o artigo Imagens base de tempos de execução.REGION com a Google Cloud região onde quer implementar a sua função. Por exemplo,
europe-west1
.
Opcional:
- Se estiver a criar uma função HTTP pública, por exemplo, um webhook,
especifique a flag
--allow-unauthenticated
. Esta flag atribui a função de invocador da IAM do Cloud Run ao identificador especialallUser
. Pode usar o IAM para editar esta definição mais tarde, depois de criar o serviço.
Teste a função
Quando a implementação da função terminar, copie a propriedade
uri
.Visite este URI no seu navegador.
Deve ver uma lista das palavras que correspondem aos critérios da consulta e quantas vezes cada palavra aparece no conjunto de dados de destino.
Limpar
Embora o Cloud Run não cobre quando o serviço não está em utilização, ainda pode ser-lhe cobrado o armazenamento da imagem do contentor no Artifact Registry. Pode eliminar a imagem do contentor ou eliminar o Google Cloud projeto para evitar incorrer em custos. A eliminação do seu Google Cloud projeto interrompe a faturação de todos os recursos usados nesse projeto.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.