Neste tutorial, mostramos como criar uma função do Cloud Run HTTP que envia uma consulta para o BigQuery.
Antes de começar
Verifique se você 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:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
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.
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:
-
Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) no serviço do Cloud Run -
Consumidor de uso de serviço (
roles/serviceusage.serviceUsageConsumer
) no serviço do Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço -
Usuário de jobs do BigQuery (
roles/bigquery.jobUser
) na identidade do serviço
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 interagir com as APIs do Google 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
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
Substitua PROJECT_NUMBER
pelo número do projeto do Google Cloude PROJECT_ID
pelo ID do projeto do 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 conta de serviço do Cloud Build à 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
Como alternativa, faça o download da amostra como um arquivo zip e extraia-a.
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.
Implante a função
Para implantar a função com um acionador HTTP:
Execute o seguinte comando no diretório que contém o exemplo de código:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
Substitua:
FUNCTION pelo 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 de 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 pela regiãodoGoogle Cloud em que você quer implantar a função. Exemplo:
us-central1
.
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 for concluída, 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
Ainda que o Cloud Run não gere custos quando o serviço não estiver em uso, é possível que receba cobranças pelo armazenamento da imagem do contêiner no Artifact Registry. É possível excluir a imagem do contêiner ou excluir o projeto Google Cloud para evitar cobranças. A exclusão do projeto do Google Cloud interrompe o faturamento de todos os recursos usados nele.
- 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.