Criar e implantar uma função do Cloud Run em HTTP com Ruby
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.
Para mais detalhes, leia Como escrever funções HTTP e Como escrever funções orientadas a eventos.
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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.
- Instale e inicialize o Google Cloud SDK.
- Atualize e instale os componentes
gcloud
com o comando a seguir.gcloud components update
- Prepare seu ambiente de desenvolvimento.
Criar a função
Crie um diretório no seu sistema local para o código de função:
Linux ou macOS
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Crie um arquivo
app.rb
no diretóriohelloworld
com 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 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 a função 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çãohello_http
:bundle exec functions-framework-ruby --target hello_http
Acesse
http://localhost:8080
em um navegador ou executecurl localhost:8080
em outra janela para testar sua função.Saiba mais em Como enviar solicitações para funções locais.
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, execute o seguinte comando no
diretório helloworld
:
gcloud functions deploy ruby-http-function \
--gen2 \
--runtime=ruby33 \
--region=REGION \
--entry-point=hello_http \
--source=. \
--trigger-http \
--allow-unauthenticated
Substitua REGION pelo nome da região do Google Cloud em que você quer implantar a função
(por exemplo, us-west1
).
A flag --allow-unauthenticated
opcional permite que você acesse a função
sem autenticação.
Testar a função implantada
Depois que a função for implantada, observe a propriedade
uri
na saída do comandogcloud functions deploy
ou recupere-a com o seguinte comando:gcloud functions describe ruby-http-function \ --region=REGION
Substitua REGION pelo nome da região do Google Cloud em que você implantou a função (por exemplo,
us-west1
).Acesse este URL no navegador. A função retorna uma mensagem "Hello World!".
Conferir os registros da função
É possível analisar os registros da função com a IU do Cloud Logging ou por meio da 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
:
gcloud functions logs read \
--gen2 \
--limit=10 \
--region=REGION \
ruby-http-function
Substitua REGION pelo nome da região do Google Cloud em que você implantou a função
(por exemplo, us-west1
).
A saída será assim:
LEVEL: I
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.477
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello__http-1" on port 8080.
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.451
LOG: I, [2023-06-01T00:09:41.451784 #1] INFO -- : FunctionsFramework: Serving function "hello_http" on port 8080...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.364
LOG: I, [2023-06-01T00:09:41.363923 #1] INFO -- : FunctionsFramework: Starting server...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.363
LOG: I, [2023-06-01T00:09:41.363855 #1] INFO -- : FunctionsFramework: Looking for function name "hello_http"...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.354
LOG: I, [2023-06-01T00:09:41.354150 #1] INFO -- : FunctionsFramework: Loading functions from "./app.rb"...
Conferir os registros com o painel do Logging
Para ver os registros da função com o painel do Logging, abra a página de visão geral do Cloud Run functions e clique no nome da função na lista. Em seguida, clique na guia Registros.