Criar e implantar uma função do Cloud Run HTTP usando o Node.js (1ª geração)
Este guia ensina como escrever uma função do Cloud Run usando o ambiente de execução do Node.js. Há dois tipos de funções do Cloud Run:
- Uma função HTTP, que você invoca a partir de solicitações HTTP padrão.
- Uma função direcionada a eventos, que você usa para processar eventos da infraestrutura do Cloud, como mensagens em um tópico do Pub/Sub ou alterações em um bucket do Cloud Storage.
O exemplo mostra como criar uma função HTTP simples.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você é novo no Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, você precisa do papel de criador de projetos
(
roles/resourcemanager.projectCreator), que contém aresourcemanager.projects.createpermissão. Saiba como conceder papéis.
-
Crie um Google Cloud projeto:
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o Google Cloud projeto que você está criando. -
Selecione o Google Cloud projeto que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do Google Cloud projeto.
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
Ative as APIs Cloud Functions e Cloud Build:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter a permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de proprietário (roles/owner). Caso contrário, você pode receber essa permissão pelo papel de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.gcloud services enable cloudfunctions
cloudbuild.googleapis.com -
Instale a Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, você precisa do papel de criador de projetos
(
roles/resourcemanager.projectCreator), que contém aresourcemanager.projects.createpermissão. Saiba como conceder papéis.
-
Crie um Google Cloud projeto:
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o Google Cloud projeto que você está criando. -
Selecione o Google Cloud projeto que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do Google Cloud projeto.
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
Ative as APIs Cloud Functions e Cloud Build:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter a permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de proprietário (roles/owner). Caso contrário, você pode receber essa permissão pelo papel de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.gcloud services enable cloudfunctions
cloudbuild.googleapis.com - Prepare seu ambiente de desenvolvimento.
crie uma função
Crie um diretório no seu sistema local para o código de função:
Linux ou macOS
mkdir ~/helloworld cd ~/helloworldWindows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworldCrie um arquivo
index.jsno diretóriohelloworldcom o seguinte conteúdo:Esse exemplo de função recebe um nome fornecido na solicitação HTTP e retorna uma saudação, ou "Hello World!", quando nenhum nome é fornecido.
Especificar as dependências
As dependências no Node.js são armazenadas em um arquivo chamado package.json.
É possível criar esse arquivo manualmente ou com o comando npm.
Para criar seu arquivo de dependência
package.jsonusandonpm, execute estes comandos:npm init npm install c8 gaxios mocha sinon supertest wait-port --save-dev npm install @google-cloud/functions-framework escape-htmlSe preferir criar seu arquivo
package.jsonmanualmente, crie um arquivopackage.jsonno diretóriohelloworldcom o seguinte conteúdo:
Implantar a função
Para implantar a função com um gatilho HTTP, execute o seguinte
comando no diretório helloworld:
gcloud functions deploy helloHttp --no-gen2 --runtime nodejs22 --trigger-http --allow-unauthenticated
A flag --allow-unauthenticated permite que você atinja a função
sem autenticação.
Para exigir autenticação, omita a sinalização.
Testar a função
Quando a implantação da função estiver concluída, anote a propriedade
httpsTrigger.urlou encontre-a usando o seguinte comando:gcloud functions describe helloHttpA aparência será semelhante a esta:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloHttp
Visite este URL no navegador. Você verá uma mensagem "Hello World!".
Tente passar um nome na solicitação HTTP, por exemplo, usando este URL:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/helloHttp?name=NAME
Você verá uma mensagem "Hello
NAME!"
Ver registros
Os registros do Cloud Run functions são visíveis usando a CLI do Google Cloud e na interface do Cloud Logging.
Usar a ferramenta de linha de comando
Para ver os registros da função com a CLI gcloud, use o
logs read comando, seguido por
o nome da função:
gcloud functions logs read helloHttp
A saída será semelhante a esta:
LEVEL NAME EXECUTION_ID TIME_UTC LOG D helloHttp rvb9j0axfclb 2019-09-18 22:06:25.983 Function execution started D helloHttp rvb9j0axfclb 2019-09-18 22:06:26.001 Function execution took 19 ms, finished with status code: 200
Usar o painel do Logging
Também é possível ver os registros do Cloud Run functions no Google Cloud console.