Crie e implemente uma função HTTP do Cloud Run com Java (1.ª geração)
Este guia explica o processo de escrita de uma função do Cloud Run usando o tempo de execução do Java. Existem dois tipos de funções do Cloud Run:
- Uma função HTTP, que invoca a partir de pedidos HTTP padrão.
 - Uma função orientada por eventos, que usa para processar eventos da sua infraestrutura do Google Cloud, como mensagens num tópico Pub/Sub ou alterações num contentor do Cloud Storage.
 
O documento mostra como criar uma função HTTP simples e criá-la através do Maven ou do Gradle.
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.
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
      (
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
      (
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 SDK do Google Cloud.
 - Atualize e instale os componentes do 
gcloud:gcloud components update
 - Prepare o seu ambiente de desenvolvimento.
 Crie um diretório no seu sistema local para o código da 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 ficheiro de origem.
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.javaAdicione os seguintes conteúdos ao ficheiro
HelloWorld.java:Esta função de exemplo produz a saudação "Olá mundo!"
Crie um diretório no seu sistema local para o código da 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 ficheiro de origem.
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.javaAdicione os seguintes conteúdos ao ficheiro
HelloWorld.java:Esta função de exemplo produz a saudação "Olá mundo!"
Quando a implementação da função terminar, tome nota da propriedade
httpsTrigger.urlou encontre-a através do seguinte comando: Deve ter este aspeto:gcloud functions describe my-first-function
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/my-first-function
Visite este URL no seu navegador. Deverá ver uma mensagem
Hello World!.
Crie uma função
Esta secção descreve como criar uma função.
Maven
Gradle
Especifique dependências
O passo seguinte é configurar as dependências:
Maven
Mude o diretório para o diretório helloworld que criou acima e crie um ficheiro pom.xml:
 cd ~/helloworld
 touch pom.xml
Para gerir dependências através do Maven, especifique as dependências na secção <dependencies> no ficheiro pom.xml do seu projeto. Para este exercício, copie o seguinte conteúdo
para o ficheiro pom.xml.
Consulte helloworld para ver um exemplo completo baseado no Maven.
Gradle
Mude o diretório para o diretório helloworld-gradle que criou acima e
crie um ficheiro build.gradle:
 cd ~/helloworld-gradle
 touch build.gradle
Para gerir as dependências através do Gradle, especifique-as no ficheiro build.gradle do seu projeto. Para este exercício, copie o seguinte conteúdo
para o ficheiro build.gradle. Tenha em atenção que este ficheiro build.gradle inclui uma tarefa personalizada para ajudar a executar funções localmente.
Consulte helloworld-gradle para ver um exemplo completo baseado no Gradle.
Crie e teste localmente
Antes de implementar a função, pode criá-la e testá-la localmente:
Maven
Execute o seguinte comando para confirmar que a função é criada:
mvn compile
Outra opção é usar o comando mvn package para compilar o código Java, executar quaisquer testes e agrupar o código num ficheiro JAR no diretório de destino. Pode saber mais sobre o ciclo de vida de compilação do Maven aqui.
Para testar a função, execute o seguinte comando:
mvn function:run
Gradle
Execute o seguinte comando para confirmar que a função é 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, é apresentado o URL que pode visitar no seu navegador de Internet para ver a função em ação:
http://localhost:8080/. Deverá ver uma mensagem Hello World!.
Em alternativa, pode enviar pedidos para esta função através de curl a partir de outra janela de terminal:
curl localhost:8080
# Output: Hello World!
Implemente a função
Maven
Para implementar a função com um acionador 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 registado pelo qual a sua função
vai ser identificada na Google Cloud consola e --entry-point especifica
o nome da classe totalmente qualificado (FQN) da sua função.Gradle
Para implementar a função com um acionador 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 registado pelo qual a sua função
vai ser identificada na Google Cloud consola e --entry-point especifica
o nome da classe totalmente qualificado (FQN) da sua função.Teste a função implementada
Ver registos
Os registos das funções do Cloud Run são visíveis através da CLI gcloud e na IU do Cloud Logging.
Use a ferramenta de linha de comandos
Para ver os registos da sua função com a CLI gcloud, use o comando
logs read, seguido do nome da função:
gcloud functions logs read my-first-function
O resultado deve ser semelhante ao seguinte:
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 ...
Use o painel de controlo de registo
Também pode ver os registos das funções do Cloud Run a partir da Google Cloud consola.