HTTP-Cloud Run Functions-Funktion mit Ruby erstellen und bereitstellen
Dieser Leitfaden erläutert den Prozess zum Schreiben einer Cloud Run Functions-Funktion mithilfe der Ruby-Laufzeit. Es gibt zwei Arten von Cloud Run-Funktionen:
- Eine HTTP-Funktion, die Sie über Standard-HTTP-Anfragen aufrufen.
- Eine durch ein Ereignis ausgelöste Funktion, mit der Sie Ereignisse aus Ihrer Cloud-Infrastruktur verarbeiten können, z. B. Nachrichten in einem Pub/Sub-Thema oder Änderungen in einem Cloud Storage-Bucket.
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
Erstellen Sie in Ihrem lokalen System ein Verzeichnis für den Funktionscode:
Linux oder MacOS X
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Erstellen Sie eine
app.rb
-Datei im Verzeichnishelloworld
mit folgendem Inhalt:Diese Beispielfunktion verwendet einen in der HTTP-Anfrage angegebenen Namen und gibt eine Begrüßung bzw. „Hello World!“, wenn kein Name angegeben wird, zurück.
Abhängigkeiten angeben
Abhängigkeiten in Ruby werden mit Bundler verwaltet und in einer Datei namens Gemfile
ausgedrückt.
Wenn Sie die Funktion bereitstellen, lädt Cloud Run Functions die in Gemfile
und Gemfile.lock
deklarierten Abhängigkeiten mithilfe von bundler
herunter und installiert sie.
Unter Gemfile
sind die für Ihre Funktion erforderlichen Pakete sowie optionale Versionseinschränkungen aufgelistet. Bei einer Cloud Run Functions-Funktion muss eines dieser Pakete das Gem functions_framework
sein.
Erstellen Sie für diese Übung eine Datei mit dem Namen Gemfile
im selben Verzeichnis wie die Datei app.rb
, die den Funktionscode enthält:
source "https://rubygems.org"
gem "functions_framework", "~> 0.7"
Führen Sie den folgenden Befehl aus, um das Gem functions_framework
und andere Abhängigkeiten zu installieren:
bundle install
Funktion lokal erstellen und testen
Bevor Sie die Funktion bereitstellen, können Sie sie lokal erstellen und testen:
Führen Sie den folgenden Befehl aus, um die ausführbare Datei
functions-framework-ruby
zu verwenden, um einen lokalen Webserver zu starten, auf dem diehello_http
-Funktion ausgeführt wird:bundle exec functions-framework-ruby --target hello_http
Testen Sie die 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.
Siehe auch Funktionen testen in der Dokumentation zu Ruby Functions Framework.
Funktion bereitstellen
Führen Sie den Befehl im Verzeichnis helloworld
aus, um die Funktion bereitzustellen:
gcloud functions deploy ruby-http-function \
--gen2 \
--runtime=ruby32 \
--region=REGION \
--entry-point=hello_http \
--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.
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 ruby-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
Sie können die Logs Ihrer Funktion über die Cloud Logging-UI oder die Google Cloud CLI prüfen.
Logs mit dem Befehlszeilentool ansehen
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 \
ruby-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: hello-http
TIME_UTC: 2023-06-01 00:09:41.477
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello__http-1" on port 8080.
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.451
LOG: I, [2023-06-01T00:09:41.451784 #1] INFO -- : FunctionsFramework: Serving function "hello_http" on port 8080...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.364
LOG: I, [2023-06-01T00:09:41.363923 #1] INFO -- : FunctionsFramework: Starting server...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.363
LOG: I, [2023-06-01T00:09:41.363855 #1] INFO -- : FunctionsFramework: Looking for function name "hello_http"...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.354
LOG: I, [2023-06-01T00:09:41.354150 #1] INFO -- : FunctionsFramework: Loading functions from "./app.rb"...
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.