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 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, é necessário ter o 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 o papel do IAM de administrador de Service Usage role (
roles/serviceusage.serviceUsageAdmin), que contém aserviceusage.services.enablepermissão. 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, é necessário ter o 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 o papel do IAM de administrador de Service Usage role (
roles/serviceusage.serviceUsageAdmin), que contém aserviceusage.services.enablepermissão. Saiba como conceder papéis.gcloud services enable cloudfunctions
cloudbuild.googleapis.com - 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. Observe que este arquivo build.gradle inclui uma tarefa personalizada para ajudar você a executar funções localmente.
Consulte helloworld-gradle 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 Google Cloud console 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 Google Cloud console 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: Ela será assim: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 CLI gcloud, use o
logs read comando, seguido por
o 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 Google Cloud console.