HTTP-Cloud Run Functions-Funktion mit Java erstellen und bereitstellen
In diesem Leitfaden wird der Schreibvorgang für eine Cloud Run Functions-Funktion mit der Java-Laufzeit beschrieben. Es gibt zwei Arten von Cloud Run-Funktionen:
- Eine HTTP-Funktion, die Sie über Standard-HTTP-Anfragen aufrufen.
- Eine ereignisgesteuerte Funktion, die durch Ereignisse in Ihrer Cloud-Infrastruktur ausgelöst wird, z. B. Nachrichten in einem Pub/Sub-Thema oder Änderungen in einem Cloud Storage-Bucket.
In diesem Dokument wird gezeigt, wie Sie eine einfache HTTP-Funktion mit Maven oder Gradle erstellen.
Weitere Informationen finden Sie unter HTTP-Funktionen schreiben und Ereignisgesteuerte Funktionen schreiben.
Vorbereitung
- 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.
- Installieren und initialisieren Sie das Google Cloud SDK.
- Aktualisieren und installieren Sie
gcloud
-Komponenten mit dem folgenden Befehl.gcloud components update
-
Bereiten Sie die Entwicklungsumgebung vor.
Funktion erstellen
In diesem Abschnitt wird beschrieben, wie Sie eine Funktion erstellen.
Maven
Erstellen Sie in Ihrem lokalen System ein Verzeichnis für den Funktionscode:
Linux oder Mac OS X:
mkdir ~/helloworld cd ~/helloworld
Windows:
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Erstellen Sie die Projektstruktur, die das Quellverzeichnis und die Quelldatei enthält.
mkdir -p ~/helloworld/src/main/java/functions touch ~/helloworld/src/main/java/functions/HelloWorld.java
Fügen Sie der
HelloWorld.java
-Datei diesen Inhalt hinzu:Diese Beispielfunktion gibt die Begrüßung "Hello World!" aus.
Gradle
Erstellen Sie in Ihrem lokalen System ein Verzeichnis für den Funktionscode:
Linux oder Mac OS X:
mkdir ~/helloworld-gradle cd ~/helloworld-gradle
Windows:
mkdir %HOMEPATH%\helloworld-gradle cd %HOMEPATH%\helloworld-gradle
Erstellen Sie die Projektstruktur, die das Quellverzeichnis und die Quelldatei enthält.
mkdir -p src/main/java/functions touch src/main/java/functions/HelloWorld.java
Fügen Sie der
HelloWorld.java
-Datei diesen Inhalt hinzu:Diese Beispielfunktion gibt die Begrüßung „Hello World!“ aus.
Abhängigkeiten angeben
Im nächsten Schritt werden die Abhängigkeiten eingerichtet:
Maven
Wechseln Sie in das Verzeichnis helloworld
, das Sie oben erstellt haben, und erstellen Sie eine pom.xml
-Datei:
cd ~/helloworld
touch pom.xml
Zum Verwalten von Abhängigkeiten mithilfe von Maven geben Sie die Abhängigkeiten im Abschnitt <dependencies>
der Datei pom.xml Ihres Projekts an. Kopieren Sie für diese Übung die folgenden Inhalte in die Datei pom.xml
.
Unter helloworld finden Sie ein vollständiges Beispiel, das auf Maven basiert.
Gradle
Wechseln Sie in das Verzeichnis helloworld-gradle
, das Sie oben erstellt haben, und erstellen Sie eine build.gradle
-Datei:
cd ~/helloworld-gradle
touch build.gradle
Zum Verwalten von Abhängigkeiten mithilfe von Gradle geben Sie die Abhängigkeiten in der Datei build.gradle Ihres Projekts an. Kopieren Sie für diese Übung die folgenden Inhalte in die Datei build.gradle
. Beachten Sie, dass die Datei build.gradle
eine benutzerdefinierte Aufgabe enthält, damit Sie Funktionen lokal ausführen können.
Unter helloworld finden Sie ein vollständiges Beispiel, das auf Gradle basiert.
Funktion lokal erstellen und testen
Bevor Sie die Funktion bereitstellen, können Sie sie lokal erstellen und testen:
Maven
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihre Funktion erstellt wird:
mvn compile
Eine weitere Option besteht darin, den Befehl
mvn package
zu verwenden, um Ihren Java-Code zu kompilieren, Tests auszuführen und den Code in einer JAR-Datei im Zielverzeichnis zu verpacken. Weitere Informationen zum Maven-Build-LebenszyklusStarten Sie die Funktion mit dem folgenden Befehl:
mvn function:run
Testen Sie Ihre Funktion. Rufen Sie dazu
http://localhost:8080
in einem Browser auf oder führen Siecurl localhost:8080
in einem anderen Fenster aus.Weitere Informationen finden Sie unter Anfragen an lokale Funktionen senden.
Gradle
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihre Funktion erstellt wird:
gradle build
Starten Sie die Funktion mit dem folgenden Befehl:
gradle runFunction -Prun.functionTarget=functions.HelloWorld
Testen Sie Ihre Funktion. Rufen Sie dazu
http://localhost:8080
in einem Browser auf oder führen Siecurl localhost:8080
in einem anderen Fenster aus.Weitere Informationen finden Sie unter Anfragen an lokale Funktionen senden.
Funktion bereitstellen
Führen Sie den folgenden Befehl im Verzeichnis helloworld
aus, wenn Sie maven
verwenden, oder im Verzeichnis helloworld-gradle
für Gradle, um die Funktion bereitzustellen:
gcloud functions deploy java-http-function \
--gen2 \
--entry-point=functions.HelloWorld \
--runtime=java17 \
--region=REGION \
--source=. \
--trigger-http \
--allow-unauthenticated
Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitstellen möchten (z. B. us-west1
).
Mit dem optionalen Flag --allow-unauthenticated
können Sie die Funktion ohne Authentifizierung aufrufen.
java-http-function
ist der registrierte Name, mit dem die Funktion in der Google Cloud Console identifiziert wird. --entry-point
gibt den vollständig qualifizierten Klassennamen (FQN) der Funktion an.
Bereitgestellte Funktion testen
Beachten Sie nach dem Bereitstellen der Funktion das Attribut
uri
in der Ausgabe des Befehlsgcloud functions deploy
oder rufen Sie es mit dem folgenden Befehl ab:gcloud functions describe java-http-function \ --region=REGION
Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B.
us-west1
).Rufen Sie diese URL in Ihrem Browser auf: Die Funktion gibt die Nachricht „Hello World!“ zurück.
Logs der Funktion ansehen
Logs mit dem Befehlszeilentool ansehen
Sie können die Logs Ihrer Funktion über die Cloud Logging-UI oder die Google Cloud CLI prüfen.
Wenn Sie mit der gcloud CLI Logs für Ihre Funktion aufrufen möchten, verwenden Sie den Befehl logs read
:
gcloud functions logs read \
--gen2 \
--limit=10 \
--region=REGION \
java-http-function
Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B. us-west1
).
Die Ausgabe sollte in etwa so aussehen:
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-05-29 23:09:57.708
LOG:
LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-05-29 23:05:53.257
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "my--first--function-1" on port 8080.
LEVEL:
NAME: my-first-function
TIME_UTC: 2023-05-29 23:05:53.248
LOG: 2023-05-29 23:05:53.248:INFO:oejs.Server:main: Started @892ms
Logs mit dem Logging-Dashboard ansehen
Um die Logs für Ihre Funktion mit dem Logging-Dashboard aufzurufen, öffnen Sie die Übersichtsseite zu Cloud Run Functions. Klicken Sie in der Liste auf den Namen Ihrer Funktion und dann auf den Tab Logs.