Crea ed esegui il deployment di una funzione Cloud Run HTTP utilizzando Java (1ª gen.)
Questa guida illustra la procedura per scrivere una funzione Cloud Run utilizzando il runtime Java. Esistono due tipi di funzioni Cloud Run:
- Una funzione HTTP, che richiami da richieste HTTP standard.
- Una funzione basata su eventi, che utilizzi per gestire gli eventi della tua infrastruttura cloud, ad esempio i messaggi in un argomento Pub/Sub o le modifiche in un bucket Cloud Storage.
Il documento mostra come creare una semplice funzione HTTP e compilarla utilizzando Maven o Gradle.
Prima di iniziare
- 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. - Installa e inizializza Google Cloud SDK.
- Aggiorna e installa i componenti di
gcloud:gcloud components update
- Prepara l'ambiente di sviluppo.
Crea una directory sul sistema locale per il codice della funzione:
Linux o Mac OS X:
mkdir ~/helloworld cd ~/helloworldWindows:
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworldCrea la struttura del progetto per contenere la directory di origine e il file sorgente.
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.javaAggiungi i contenuti seguenti al file
HelloWorld.java:Questa funzione di esempio restituisce il saluto "Hello World!".
Crea una directory sul sistema locale per il codice della funzione:
Linux o Mac OS X:
mkdir ~/helloworld-gradle cd ~/helloworld-gradleWindows:
mkdir %HOMEPATH%\helloworld-gradle cd %HOMEPATH%\helloworld-gradleCrea la struttura del progetto per contenere la directory di origine e il file sorgente.
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.javaAggiungi i contenuti seguenti al file
HelloWorld.java:Questa funzione di esempio restituisce il saluto "Hello World!".
Al termine del deployment della funzione, annota la proprietà
httpsTrigger.urlo cercala utilizzando il seguente comando: Dovrebbe avere il seguente aspetto:gcloud functions describe my-first-function
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/my-first-function
Accedi all'URL dal browser. Dovresti visualizzare un messaggio
Hello World!.
Crea una funzione
Questa sezione descrive come creare una funzione.
Maven
Gradle
Specifica le dipendenze
Il passaggio successivo consiste nel configurare le dipendenze:
Maven
Passa alla directory helloworld che hai creato in precedenza e crea un file pom.xml:
cd ~/helloworld
touch pom.xml
Per gestire le dipendenze utilizzando Maven, specifica le dipendenze nella sezione <dependencies> all'interno del file pom.xml del tuo progetto. Per questo esercizio, copia i contenuti seguenti nel file pom.xml.
Per un esempio completo basato su Maven, consulta helloworld.
Gradle
Passa alla directory helloworld-gradle che hai creato in precedenza e crea un file build.gradle:
cd ~/helloworld-gradle
touch build.gradle
Per gestire le dipendenze utilizzando Gradle, specifica le dipendenze nel file build.gradle del tuo progetto. Per questo esercizio, copia i contenuti seguenti nel file build.gradle. Tieni presente che questo file build.gradle include un'attività personalizzata per aiutarti a eseguire le funzioni localmente.
Per un esempio completo basato su Gradle, consulta helloworld-gradle.
Crea build ed esegui test in locale
Prima di eseguire il deployment della funzione, puoi compilarla e testarla localmente:
Maven
Esegui questo comando per verificare che la build della funzione sia stata compilata:
mvn compile
Un'altra opzione è utilizzare il comando mvn package per compilare il codice Java, eseguire i test e pacchettizzare il codice in un file JAR all'interno della directory di destinazione. Puoi scoprire di più sul ciclo di vita delle build Maven qui.
Per testare la funzione, esegui questo comando:
mvn function:run
Gradle
Esegui questo comando per verificare che la build della funzione sia stata compilata:
gradle build
Per testare la funzione, esegui questo comando:
gradle runFunction -Prun.functionTarget=functions.HelloWorld
Se il test viene completato correttamente, viene visualizzato l'URL che puoi visitare nel browser web per vedere la funzione in azione: http://localhost:8080/. Dovresti visualizzare un messaggio Hello World!.
In alternativa, puoi inviare richieste a questa funzione utilizzando curl da un'altra finestra del terminale:
curl localhost:8080
# Output: Hello World!
Esegui il deployment della funzione
Maven
Per il deployment della funzione con un trigger HTTP, esegui questo comando nella directory helloworld:
gcloud functions deploy my-first-function --no-gen2 --entry-point functions.HelloWorld --runtime java17 --trigger-http --memory 512MB --allow-unauthenticated
my-first-function è il nome registrato con cui la funzione verrà identificata nella console Google Cloud e --entry-point specifica il nome completo della classe della funzione.Gradle
Per il deployment della funzione con un trigger HTTP, esegui questo comando nella directory 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 è il nome registrato con cui la funzione verrà identificata nella console Google Cloud e --entry-point specifica il nome completo della classe della funzione.Esegui il test della funzione di cui hai eseguito il deployment
Visualizza i log
I log per Cloud Run Functions sono visualizzabili utilizzando Google Cloud CLI e nell'interfaccia utente di Cloud Logging.
Utilizza lo strumento a riga di comando
Per visualizzare i log per la tua funzione con gcloud CLI, utilizza il comando logs read, seguito dal nome della funzione:
gcloud functions logs read my-first-function
L'output dovrebbe essere simile al seguente:
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 ...
Utilizza la dashboard Logging
Puoi visualizzare i log per Cloud Run Functions anche dalla consoleGoogle Cloud .