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 Ressourcen mit deklarativen Konfigurationsdateien bereitstellen können. Google Cloud
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.
Wenn Sie mit Terraform bereitstellen, müssen Sie die gezippte Quelldatei Ihrer Funktion in einen Cloud Storage-Bucket (source_archive_bucket),
hochladen und auch den Cloud Storage-Objektnamen (source_archive_object) in
der Terraform-Konfiguration angeben. Weitere Informationen finden Sie im Terraform-Spezifikationsleitfaden.
Cloud Run Functions kopiert die Quelldatei, die Sie in source_archive_bucket hochladen, in
einen Bucket in Ihrem Projekt. Der Bucket-Name hat das Format gcf-v2-sources-PROJECT_NUMBER-REGION(Cloud Run Functions) oder gcf-sources-PROJECT_NUMBER-REGION Cloud Run Functions (1. Generation). Diese Konfiguration variiert je nach CMEK-Abhängigkeit.
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.
Verwenden Sie den Preisrechner.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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 role
(
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, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage 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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
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 role
(
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, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage 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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
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
Erforderliche Rollen
Nutzer, die Funktionen bereitstellen, müssen die Cloud Functions-Entwickler (
roles/cloudfunctions.developer) IAM-Rolle oder eine Rolle mit denselben Berechtigungen haben. Siehe auch Zusätzliche Konfiguration für die Bereitstellung.Bitten Sie Ihren Administrator, der IAM-Identität, die die Funktion bereitstellt, die Rolle Storage-Administrator (
roles/storage.admin) zu gewähren, um die Berechtigungen für den Zugriff auf den Cloud Storage-Bucket zu erhalten. Weitere Informationen zu Cloud Storage-Rollen und -Berechtigungen finden Sie unter IAM für Cloud Storage.
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/terraform-google-modules/terraform-docs-samples.git
Wechseln Sie in das Verzeichnis, das die Beispielcodes für Cloud Run-Funktionen enthält:
cd terraform-docs-samples/functions/basic
Das in dieser Anleitung verwendete Node.js-Beispiel ist eine grundlegende HTTP-Funktion "Hello World". Hier ist die Datei
main.tf:
Terraform initialisieren
Führen Sie im Verzeichnis terraform-docs-samples/functions/basic mit der Datei main.tf diesen Befehl aus, um die erforderlichen Plug-ins hinzuzufügen und das Verzeichnis .terraform zu erstellen:
terraform init
Wenden Sie die Terraform-Konfiguration an:
Stellen Sie die Funktion im selben Verzeichnis terraform-docs-samples/functions/basic mit der Datei main.tf 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 terraform-docs-samples/functions/basic-Verzeichnis aus, das Ihre main.tf-Datei enthält:
terraform destroy
Geben Sie yes ein, damit Terraform Ihre Ressourcen löschen kann.