Neste tutorial, mostramos como escrever uma função do Cloud Run HTTP que envia uma consulta para o BigQuery.
Objetivos
Com este tutorial, você vai:
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, 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.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run Admin API, and Cloud Build APIs.
- Configure o ambiente de desenvolvimento do Cloud Run no seu projeto do Google Cloud .
Se você precisa seguir uma política da organização de restrição de domínio que restringe invocações não autenticadas para seu projeto, será necessário acessar o serviço implantado, conforme descrito em Como testar serviços particulares.
-
Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto -
Consumidor de uso de serviços (
roles/serviceusage.serviceUsageConsumer
) no serviço Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço -
Usuário de jobs do BigQuery (
roles/bigquery.jobUser
) na identidade de serviço
Funções exigidas
Para receber as permissões necessárias para implantar os serviços do Cloud Run a partir da origem, peça ao administrador para conceder a você os seguintes papéis do IAM:
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com APIs doGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Papéis da conta de serviço do Cloud Build
Você ou seu administrador precisa conceder à conta de serviço do Cloud Build o seguinte papel do IAM.
Clique para conferir os papéis necessários para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a
conta de serviço padrão do Compute
Engine como a conta de serviço padrão do Cloud Build para criar seu código-fonte e
recurso do Cloud Run, a menos que você substitua esse comportamento. Para que o Cloud Build crie suas origens, peça ao administrador para conceder o papel
Criador do Cloud Run
(roles/run.builder
) à conta de serviço padrão 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 número do projeto Google Cloude PROJECT_ID
pelo ID do projeto Google Cloud. Para instruções detalhadas sobre como encontrar o ID e o número do projeto,
consulte Criar
e gerenciar projetos.
A concessão do papel de builder do Cloud Run à conta de serviço padrão do Compute Engine leva alguns minutos para se propagar.
Preparar o aplicativo
Clone o repositório de aplicativos de exemplo na máquina local:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Outra opção é fazer o download da amostra como um arquivo zip e extraí-la.
Acesse o diretório que contém o exemplo de código:
cd nodejs-docs-samples/functions/v2/helloBigQuery
Confira o código de amostra. A amostra envia uma consulta para palavras que ocorrem pelo menos 400 vezes no conjunto de dados especificado e retorna o resultado.
Implantar a função
Para implantar a função com um gatilho HTTP:
Execute o seguinte comando no diretório que contém o exemplo de código:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
Substitua:
FUNCTION com o nome da função que você está implantando, por exemplo,
my-bigquery-function
. É possível omitir esse parâmetro inteiramente, mas será solicitado o nome, se você omiti-lo.FUNCTION_ENTRYPOINT: o ponto de entrada da função no código-fonte. Esse é o código que o Cloud Run executa quando é executada. O valor dessa sinalização precisa ser um nome de função ou de classe totalmente qualificada no código-fonte. O ponto de entrada que você precisa especificar para a função de exemplo é
helloBigQuery
.BASE_IMAGE com o ambiente de imagem base da sua função, por exemplo,
nodejs22
. Para detalhes sobre as imagens de base e os pacotes incluídos em cada imagem, consulte Imagens de base dos ambientes de execução.REGION com a Google Cloud região em que você quer implantar a função. Por exemplo,
europe-west1
.
Opcional:
- Se você estiver criando uma função HTTP pública, por exemplo, um webhook,
especifique a flag
--allow-unauthenticated
. Essa flag atribui o papel de invocador do IAM do Cloud Run ao identificador especialallUser
. É possível usar o IAM para editar essa configuração depois de criar o serviço.
Testar a função
Quando a implantação da função terminar, copie a propriedade
uri
.Acesse o URI no seu navegador.
Você verá uma lista das palavras que correspondem aos critérios de consulta e quantas vezes cada palavra aparece no conjunto de dados de destino.
Limpar
Para evitar cobranças extras na sua conta do Google Cloud , exclua todos os recursos implantados com este tutorial.
Excluir o projeto
Se você criou um novo projeto para este tutorial, exclua-o. Se você usou um projeto atual e precisa mantê-lo sem as mudanças adicionadas neste tutorial, exclua os recursos criados para o tutorial.
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir 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.
Excluir recursos do tutorial
Exclua o serviço do Cloud Run que você implantou neste tutorial. Os serviços do Cloud Run não geram custos até receberem solicitações.
Para excluir o serviço do Cloud Run, execute o seguinte comando:
gcloud run services delete SERVICE-NAME
SERVICE-NAME pelo nome do serviço;
Também é possível excluir os serviços do Cloud Run no consoleGoogle Cloud .
Remova a configuração da região padrão do
gcloud
que você adicionou durante a configuração do tutorial:gcloud config unset run/region
Remova a configuração do projeto:
gcloud config unset project