In dieser Anleitung wird gezeigt, wie Sie eine HTTP-Funktion bereitstellen. Dazu laden Sie eine ZIP-Datei mit dem Funktionsquellcode in einen Cloud Storage-Bucket hoch und verwenden Terraform zum Bereitstellen der Ressourcen. Terraform ist ein Open-Source-Tool, mit dem Sie Google Cloud-Ressourcen mit deklarativen Konfigurationsdateien bereitstellen können.
In dieser Anleitung wird als Beispiel eine HTTP-Funktion von Node.js verwendet. Sie funktioniert jedoch auch mit Python-, Go- und Java-HTTP-Funktionen. Die Anleitungen sind identisch, unabhängig davon, welche dieser Laufzeiten Sie verwenden.
Ziele
- Anleitung zum Bereitstellen einer HTTP-Funktion mit Terraform
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
For details, see Cloud Run functions pricing.
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweise
- 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 Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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 Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Bereiten Sie die Entwicklungsumgebung vor.
Wenn Sie die gcloud CLI bereits installiert haben, aktualisieren Sie sie mit dem folgenden Befehl:
gcloud components update
Umgebung einrichten
In dieser Anleitung führen Sie Befehle in Cloud Shell aus. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI einschließlich der Google Cloud-Befehlszeile vorinstalliert ist. Auch die Werte für Ihr aktuelles Projekt sind bereits festgelegt. Die Initialisierung von Cloud Shell kann mehrere Minuten dauern:
Anwendung vorbereiten
Führen Sie in Cloud Shell folgende Schritte aus:
Klonen Sie das Repository der Beispielanwendung in Ihre Cloud Shell-Instanz:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Wechseln Sie in das Verzeichnis, das die Beispielcodes für Cloud Run-Funktionen enthält:
cd nodejs-docs-samples/functions
Das in dieser Anleitung verwendete Node.js-Beispiel ist eine grundlegende HTTP-Funktion "Hello World".
Erstellen Sie die Datei main.tf
:
Erstellen Sie im Verzeichnis
nodejs-docs-samples/functions/
einemain.tf
-Datei für die Terraform-Konfiguration:touch main.tf
Kopieren Sie diese Terraform-Konfiguration in Ihre
main.tf
-Datei:Bearbeiten Sie die Datei
main.tf
, um sicherzustellen, dass sie die richtigen Werte für die folgenden Elemente enthält. Sie müssen diese Datei bearbeiten, wenn sich Ihre Konfiguration ändert, z. B. um eine andere Laufzeit zu verwenden oder eine andere Funktion bereitzustellen:- Laufzeit: Ersetzen Sie in diesem Beispiel
nodejs16
durch die neueste Node.js-Laufzeitnodejs20
. - Funktionseinstiegspunkt: In diesem Beispiel ist der Funktionseinstiegspunkt
helloHttp
. - Pfad zum Quellverzeichnis: Ändern Sie in diesem Beispiel
source_dir
inhelloworld/helloworldHttp
. - Die IAM-
member="allUsers"
-Konfiguration ist nicht erfolgreich, wenn Ihr Projekt unter eine Organisationsrichtlinie für Domaineinschränkungen fällt, die die Zuweisung von IAM-Rollen an das HauptkontoallUsers
einschränkt. Seien Sie bei der Produktion vorsichtig und ziehen Sie nach Möglichkeit eine eingeschränktere Mitgliederliste in Betracht.
- Laufzeit: Ersetzen Sie in diesem Beispiel
Terraform initialisieren
Führen Sie im nodejs-docs-samples/functions/
-Verzeichnis, das die main.tf
-Datei enthält, diesen Befehl aus, um die erforderlichen Plug-ins hinzuzufügen und das .terraform
-Verzeichnis zu erstellen:
terraform init
Wenden Sie die Terraform-Konfiguration an:
Stellen Sie die Funktion im nodejs-docs-samples/functions/
-Verzeichnis, das die main.tf
-Datei enthält, bereit. Wenden Sie dazu die Konfiguration an. Geben Sie bei Aufforderung yes
ein:
terraform apply
Funktion testen
Notieren Sie sich nach der Bereitstellung der Funktion das Attribut von URI oder suchen Sie es mit diesem Befehl:
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"
Stellen Sie eine Anfrage an diese URL, um die Nachricht "Hello World" Ihrer Funktion zu sehen. Beachten Sie, dass die Funktion implementiert ist und eine Authentifizierung erfordert. Daher müssen Sie in Ihrer Anfrage Anmeldedaten angeben:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
Bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie alle erstellten Elemente löschen, sodass keine weiteren Kosten anfallen.
Mit Terraform können Sie alle in der Konfigurationsdatei definierten Ressourcen entfernen. Führen Sie dazu den terraform destroy
-Befehl im nodejs-docs-samples/functions/
-Verzeichnis aus, das Ihre main.tf
-Datei enthält:
terraform destroy
Geben Sie yes
ein, damit Terraform Ihre Ressourcen löschen kann.