Criar e implantar uma função HTTP do Cloud Run usando Ruby (1ª geração)
Este guia explica o processo de criação de uma função do Cloud Run usando o ambiente de execução do Ruby. 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 conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
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: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs Cloud Functions e Cloud Build:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable cloudfunctions
cloudbuild.googleapis.com -
Instale a CLI do Google Cloud.
-
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: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs Cloud Functions e Cloud Build:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. 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
app.rbno 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
Dependências no Ruby são gerenciadas com o Bundler (em inglês) e expressas em um arquivo chamado
Gemfile.
Quando você implanta sua função, as funções do Cloud Run faz o download e instala
as dependências declaradas em Gemfile e Gemfile.lock usando bundler.
O Gemfile lista os pacotes obrigatórios para a função junto com
as restrições de versão opcionais. Para uma função do Cloud Run, um desses pacotes precisa ser o gem functions_framework.
Neste exercício, crie um arquivo chamado Gemfile no mesmo diretório que o
app.rb que contém o código da função, com o seguinte conteúdo:
source "https://rubygems.org" gem "functions_framework", "~> 0.7"
Execute o seguinte comando para instalar o gem functions_framework e outras
dependências:
bundle install
Criar e testar localmente
Antes de implantar a função, é possível criá-la e testá-la localmente:
Execute o seguinte comando para usar o executável functions-framework-ruby para iniciar um servidor da Web local executando sua função hello_http:
bundle exec functions-framework-ruby --target hello_http
# ...starts the web server in the foreground
Se a função for criada com sucesso, ela exibirá o URL que você pode visitar no
navegador da Web para ver a função em ação:
http://localhost:8080/. Você verá uma mensagem Hello World!.
Como alternativa, envie solicitações para essa função usando curl de outra
janela de terminal:
curl localhost:8080
# Output: Hello World!
Consulte também Como testar funções na documentação do framework de funções do Ruby.
Implantar a função
Para implantar a função com um gatilho HTTP, execute o seguinte
comando no diretório helloworld:
gcloud functions deploy hello_http --no-gen2 --runtime ruby40 --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 de implantaçã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 hello_httpA aparência será semelhante a esta:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http
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/hello_http?name=NAME
Você verá uma mensagem "Hello
NAME!"
Ver registros
É possível visualizar os registros de funções do Cloud Run na UI do Cloud Logging ou na CLI do Google Cloud.
Conferir os registros com a ferramenta de linha de comando
Para ver os registros da função com a CLI gcloud, use o
comando logs read, seguido pelo
nome da função:
gcloud functions logs read hello_http
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
Ver registros no painel do Logging
Também é possível ver os registros do Cloud Run functions no console doGoogle Cloud .