Criar e implantar uma função HTTP do Cloud Run usando Java (1ª geração)
Este guia explica o processo de criação de uma função do Cloud Run usando o ambiente de execução Java. 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 documento mostra como criar uma função HTTP simples e criá-la usando Maven (em inglês) ou Gradle (em inglês).
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Functions and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Functions and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.- Instale e inicialize o Google Cloud SDK.
- Atualize e instale os componentes
gcloud:gcloud components update
- Prepare seu ambiente de desenvolvimento.
crie uma função
Nesta seção, descrevemos como criar funções.
Maven
Crie um diretório no seu sistema local para o código de função:
Linux ou Mac OS X:
mkdir ~/helloworld cd ~/helloworldWindows:
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworldCrie a estrutura do projeto para conter o diretório de origem e o arquivo de origem.
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.javaAdicione o seguinte conteúdo ao arquivo
HelloWorld.java:Esta função de exemplo gera a saudação "Hello World!"
Gradle
Crie um diretório no seu sistema local para o código de função:
Linux ou Mac OS X:
mkdir ~/helloworld-gradle cd ~/helloworld-gradleWindows:
mkdir %HOMEPATH%\helloworld-gradle cd %HOMEPATH%\helloworld-gradleCrie a estrutura do projeto para conter o diretório de origem e o arquivo de origem.
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.javaAdicione o seguinte conteúdo ao arquivo
HelloWorld.java:Esta função de exemplo gera a saudação "Hello World!"
Especificar as dependências
A próxima etapa é configurar as dependências:
Maven
Altere o diretório para o diretório helloworld criado acima e crie
um arquivo pom.xml:
cd ~/helloworld
touch pom.xml
Para gerenciar dependências usando o Maven, especifique as dependências
na seção <dependencies> dentro do arquivo pom.xml
(em inglês) do projeto. Para este exercício, copie o conteúdo a seguir
no arquivo pom.xml.
Consulte helloworld (em inglês) para uma amostra completa com base no Maven.
Gradle
Altere o diretório para o diretório helloworld-gradle criado acima e
crie um arquivo build.gradle:
cd ~/helloworld-gradle
touch build.gradle
Para gerenciar dependências usando o Gradle, especifique as dependências
no arquivo build.gradle
(em inglês) do projeto. Para este exercício, copie o conteúdo a seguir
no arquivo build.gradle. Este arquivo build.gradle inclui uma
tarefa personalizada para ajudar você a executar funções localmente.
Consulte helloworld-gradle (em inglês) para ver uma amostra completa com base no Gradle.
Criar e testar localmente
Antes de implantar a função, é possível criá-la e testá-la localmente:
Maven
Execute o seguinte comando para confirmar se a função foi criada:
mvn compile
Outra opção é usar o comando mvn package para compilar o código
Java, executar todos os testes e empacotar o código em um arquivo JAR no diretório
de destino. Saiba mais sobre o ciclo de vida da
versão do Maven (em inglês).
Para testar a função, execute o seguinte comando:
mvn function:run
Gradle
Execute o seguinte comando para confirmar se a função foi criada:
gradle build
Para testar a função, execute o seguinte comando:
gradle runFunction -Prun.functionTarget=functions.HelloWorld
Se o teste for concluído com êxito, ele exibirá o URL que pode ser acessado 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!
Implantar a função
Maven
Para implantar a função com um gatilho HTTP, execute o seguinte comando no diretório helloworld:
gcloud functions deploy my-first-function --no-gen2 --entry-point functions.HelloWorld --runtime java17 --trigger-http --memory 512MB --allow-unauthenticated
my-first-function é o nome registrado pelo qual sua função
será identificada no console do Google Cloud , e --entry-point especifica
o nome de classe totalmente qualificado da função (FQN).Gradle
Para implantar a função com um gatilho HTTP, execute o seguinte comando no diretório helloworld-gradle:
gcloud functions deploy my-first-function --no-gen2 --entry-point functions.HelloWorld --runtime java17 --trigger-http --memory 512MB --allow-unauthenticated
my-first-function é o nome registrado pelo qual sua função
será identificada no console do Google Cloud , e --entry-point especifica
o nome de classe totalmente qualificado da função (FQN).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: A aparência será semelhante a esta:gcloud functions describe my-first-function
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/my-first-function
Visite este URL no navegador. Você verá uma mensagem
Hello World!.
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 ferramenta gcloud CLI, use o comando
logs read, seguido pelo
nome da função:
gcloud functions logs read my-first-function
A saída será semelhante a esta:
LEVEL NAME EXECUTION_ID TIME_UTC LOG D my-first-function k2bqgroszo4u 2020-07-24 18:18:01.791 Function execution started D my-first-function k2bqgroszo4u 2020-07-24 18:18:01.958 Function execution took 168 ms, finished with status code: 200 ...
Usar o painel do Logging
Também é possível ver os registros do Cloud Run functions no console doGoogle Cloud .