Este tutorial mostra-lhe como escrever uma função HTTP do Cloud Run que envia uma consulta para o BigQuery.
Objetivos
Neste tutorial, vai:
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização prevista,
use a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run Admin API, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Configure o ambiente de programação do Cloud Run no seu Google Cloud projeto.
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.
-
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
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:
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 interagir com Google Cloud APIs, como as bibliotecas cliente da nuvem, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a concessão de funções, consulte as autorizações de implementação e 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.gitEm 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/helloBigQueryVeja o exemplo de código. O exemplo envia uma consulta de 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,
nodejs24. 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 do 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.
É apresentada uma lista das palavras que correspondem aos critérios da consulta e o número de vezes que cada palavra aparece no conjunto de dados de destino.
Limpar
Para evitar custos adicionais na sua conta Google Cloud , elimine todos os recursos que implementou com este tutorial.
Elimine o projeto
Se criou um novo projeto para este tutorial, elimine-o. Se usou um projeto existente e precisa de o manter sem as alterações que adicionou neste tutorial, elimine os recursos que criou para o tutorial.
A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.
Para eliminar o 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.
Elimine recursos de tutoriais
Elimine o serviço do Cloud Run que implementou neste tutorial. Os serviços do Cloud Run não incorrem em custos até receberem pedidos.
Para eliminar o seu serviço do Cloud Run, execute o seguinte comando:
gcloud run services delete SERVICE-NAME
Substitua SERVICE-NAME pelo nome do seu serviço.
Também pode eliminar serviços do Cloud Run a partir da Google Cloud consola.
Remova a configuração da região predefinida
gcloudque adicionou durante a configuração do tutorial:gcloud config unset run/regionRemova a configuração do projeto:
gcloud config unset project