Cloud Functions-Funktion bereitstellen

In dieser Anleitung erfahren Sie, wie Sie eine Cloud Functions-Funktion aus dem Quellcode bereitstellen.

Beim Bereitstellungsprozess werden die Quellcode- und Konfigurationseinstellungen verwendet und ein ausführbares Image erstellt, das von Cloud Functions automatisch verwaltet wird, um Anfragen an die Funktion zu verarbeiten.

Grundlegendes zur Bereitstellung

Nutzer, die Cloud Functions bereitstellen, müssen die IAM-Rolle Cloud Functions-Entwickler oder eine Rolle mit denselben Berechtigungen haben. Siehe auch Zusätzliche Konfiguration für die Bereitstellung.

Wählen Sie einen Tab für die Anleitung aus, um eine Funktion mit der gcloud CLI oder der Google Cloud Console bereitzustellen.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Verwenden Sie den Befehl gcloud functions deploy, um eine Funktion bereitzustellen:

    gcloud functions deploy YOUR_FUNCTION_NAME \
    [--gen2] \
    --region=YOUR_REGION \
    --runtime=YOUR_RUNTIME \
    --source=YOUR_SOURCE_LOCATION \
    --entry-point=YOUR_CODE_ENTRYPOINT \
    TRIGGER_FLAGS
    

    Das erste Argument, YOUR_FUNCTION_NAME, ist ein Name für Ihre bereitgestellte Funktion. Der Name muss mit einem Buchstaben beginnen, gefolgt von bis zu 62 Buchstaben, Ziffern, Bindestrichen oder Unterstrichen. Das letzte Zeichen muss ein Buchstabe oder eine Ziffer sein.

    • Das Flag --gen2 gibt an, dass Sie die Bereitstellung in Cloud Functions (2. Generation) vornehmen möchten. Dieses Flag wird für die erste Bereitstellung einer Funktion der 2. Generation benötigt. Unter Versionsvergleich von Cloud Functions finden Sie einen Vergleich von Cloud Functions (1. Generation) und Cloud Functions (2. Generation).

    • Das Flag --region gibt die Region an, in der die Funktion bereitgestellt werden soll. Eine Liste der von Cloud Functions unterstützten Regionen finden Sie unter Standorte.

    • Das Flag --runtime gibt an, welche Sprachlaufzeit die Funktion verwendet. Cloud Functions unterstützt mehrere Laufzeiten. Weitere Informationen finden Sie unter Laufzeiten.

    • Das Flag --source gibt den Speicherort des Quellcodes der Funktion an. Weitere Informationen finden Sie in den folgenden Abschnitten.

    • Das Flag --entry-point gibt den Einstiegspunkt für die Funktion in Ihrem Quellcode an. Dies ist der Code, der beim Ausführen der Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist. Weitere Informationen finden Sie unter Funktionseinstiegspunkt.

    • Zum Festlegen des Triggers für Ihre Funktion sind je nach gewünschtem Trigger zusätzliche Flags (TRIGGER_FLAGS oben dargestellt) erforderlich:

    Trigger-Flags Triggerbeschreibung
    --trigger-http Funktion mit einer HTTP(S)-Anfrage auslösen Weitere Informationen finden Sie unter HTTP-Trigger.
    --trigger-topic=YOUR_PUBSUB_TOPIC Lösen Sie die Funktion aus, wenn eine Nachricht im angegebenen Pub/Sub-Thema veröffentlicht wird. Weitere Informationen finden Sie unter Pub/Sub-Trigger.
    --trigger-bucket=YOUR_STORAGE_BUCKET Lösen Sie die Funktion aus, wenn ein Objekt im angegebenen Cloud Storage-Bucket erstellt oder überschrieben wird. Weitere Informationen finden Sie unter Cloud Storage-Trigger.
    --trigger-event-filters=EVENTARC_EVENT_FILTERS (Nur 2. Generation) Lösen Sie die Funktion mit Eventarc aus, wenn ein Ereignis mit den angegebenen Filtern übereinstimmt. Erfordert das Flag --gen2. Weitere Informationen und zusätzliche Optionen finden Sie unter Eventarc-Trigger.
    --trigger-event=EVENT_TYPE
    [--trigger-resource=RESOURCE]
    (Nur 1. Generation) Lösen Sie die Funktion aus, wenn das angegebene Ereignis auftritt. Für einige Ereignistypen ist die Angabe einer Ressource erforderlich. Weitere Informationen finden Sie unter In Cloud Functions unterstützte Trigger (1. Generation).

    Sie können optional weitere Konfigurations-, Netzwerk- und Sicherheitsoptionen angeben, wenn Sie eine Funktion bereitstellen.

    Eine vollständige Referenz zum Bereitstellungsbefehl und seinen Flags finden Sie in der Dokumentation zu gcloud functions deploy.

    Einige Beispiele für Bereitstellungsbefehle finden Sie unter Befehlszeilenbeispiele.

Console

  1. Öffnen Sie die Cloud Functions-Übersichtsseite in der Google Cloud Console:

    Zu Cloud Functions

    Achten Sie darauf, dass das Google Cloud-Projekt ausgewählt ist, für das Sie Cloud Functions bereitstellen möchten.

  2. Klicken Sie auf Funktion erstellen.

  3. Wählen Sie im Feld Umgebung die Option 1. Generation oder 2. Generation aus. Unter Versionsvergleich von Cloud Functions finden Sie einen Vergleich von Cloud Functions (1. Generation) und Cloud Functions (2. Generation).

  4. Geben Sie im Feld Funktionsname einen Namen für die Funktion ein. Der Funktionsname muss mit einem Buchstaben beginnen, gefolgt von bis zu 62 Buchstaben, Ziffern, Bindestrichen oder Unterstrichen. Das letzte Zeichen muss ein Buchstabe oder eine Ziffer sein.

  5. Wählen Sie im Feld Region eine Region aus, in der die Funktion bereitgestellt werden soll.

  6. Führen Sie im Abschnitt Trigger die Schritte basierend auf der ausgewählten Umgebung aus:

    • 1. Generation
      1. Wählen Sie im Abschnitt HTTPS-Authentifizierung die entsprechende Option aus, je nachdem, ob Sie nicht authentifizierte Aufrufe der Funktion zulassen möchten. Standardmäßig ist eine Authentifizierung erforderlich. Weitere Informationen finden Sie unter Für Aufruf authentifizieren.
      2. Wählen Sie im Feld Triggertyp einen Triggertyp aus. Weitere Informationen finden Sie unter In Cloud Functions unterstützte Trigger (1. Generation).
      3. Füllen Sie die zusätzlichen Felder für den ausgewählten Triggertyp aus.
      4. Klicken Sie auf Speichern.
    • 2. Generation
      1. Wählen Sie im Feld Triggertyp den Trigger aus, den Sie verwenden möchten:
        • Wählen Sie für einen HTTPS-Trigger die entsprechende Option aus, je nachdem, ob Sie nicht authentifizierte Aufrufe der Funktion zulassen möchten. Jede Funktion der zweiten Generation hat einen Endpunkt für HTTP(S)-Trigger. Standardmäßig ist eine Authentifizierung erforderlich. Weitere Informationen finden Sie unter Für Aufruf authentifizieren.
        • Wählen Sie für eine ereignisgesteuerte Funktion eine der folgenden Optionen aus: Cloud Pub/Sub, Cloud Storage, Cloud Firestore oder Anderer Trigger. Weitere Informationen finden Sie unter Eventarc-Trigger.
        • Wenn Sie die Pflichtfelder ausgefüllt haben, klicken Sie auf Trigger speichern.
  7. Maximieren Sie optional den Abschnitt Laufzeit, Build... am Ende der Seite für zusätzliche Konfigurations- und Sicherheitsoptionen. eine

  8. Klicken Sie auf Weiter, um zum Schritt Code zu gelangen.

  9. Wählen Sie im Feld Laufzeit die Sprachlaufzeit aus, die Ihre Funktion verwendet. Cloud Functions unterstützt mehrere Laufzeiten. Weitere Informationen finden Sie unter Laufzeiten.

  10. Geben Sie im Feld Einstiegspunkt den Einstiegspunkt für die Funktion in Ihrem Quellcode ein. Dies ist der Code, der beim Ausführen der Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein vollständig qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist. Weitere Informationen finden Sie unter Funktionseinstiegspunkt.

  11. Wählen Sie im Feld Quellcode die entsprechende Option für die Bereitstellung des Funktionsquellcodes aus. Weitere Informationen finden Sie in den folgenden Abschnitten.

  12. Klicken Sie auf Bereitstellen.

Wenn die Bereitstellung erfolgreich abgeschlossen wurde, werden Funktionen mit einem grünen Häkchen auf der Cloud Functions-Übersichtsseite in der Google Cloud Console angezeigt:

Bereitgestellte Funktionen in der Cloud Console

Die anfängliche Bereitstellung einer Funktion kann einige Minuten dauern, während die zugrunde liegende Infrastruktur bereitgestellt wird. Die erneute Bereitstellung einer vorhandenen Funktion ist schneller und der eingehende Traffic wird automatisch zur neuesten Version migriert.

Vom lokalen Computer bereitstellen

In diesem Abschnitt wird beschrieben, wie Sie eine Funktion aus dem Quellcode auf Ihrem lokalen Computer bereitstellen.

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Folgen Sie der oben beschriebenen Bereitstellungsanleitung mit dem Befehl gcloud functions deploy.

    Geben Sie für das Flag --source einen lokalen Dateisystempfad zum Stammverzeichnis des Funktionsquellcodes an. Weitere Informationen finden Sie unter Quellverzeichnisstruktur. Das aktuelle Arbeitsverzeichnis wird verwendet, wenn dieses Flag weggelassen wird.

    Optional können Sie auch das Flag --stage-bucket verwenden, um einen Cloud Storage-Bucket anzugeben, in den der Quellcode als Teil der Bereitstellung hochgeladen werden soll.

    Beim Hochladen Ihres Quellcodes schließt Cloud Functions unnötige Dateien über die Datei .gcloudignore aus.

Console

  1. Folgen Sie der oben beschriebenen Bereitstellungsanleitung in der Google Cloud Console, bis Sie zum Feld Quellcode gelangen.
  2. Wählen Sie im Feld Quellcode die Option ZIP-Datei hochladen aus.
  3. Klicken Sie im Feld Ziel-Bucket auf Durchsuchen, um einen Cloud Storage-Bucket auszuwählen, in dem der Quellcode als Teil der Bereitstellung hochgeladen werden soll.
  4. Klicken Sie im Feld ZIP-Datei auf Durchsuchen, um eine ZIP-Datei zum Hochladen aus Ihrem lokalen Dateisystem auszuwählen. Die Quelldateien Ihrer Funktion müssen sich im Stammverzeichnis der ZIP-Datei befinden. Siehe Quellverzeichnisstruktur.
  5. Klicken Sie auf Bereitstellen.

Über Cloud Storage bereitstellen

In diesem Abschnitt wird beschrieben, wie Sie eine Funktion aus dem Quellcode in einem Cloud Storage-Bucket bereitstellen. Der Quellcode muss als ZIP-Datei gepackt werden.

Damit Cloud Functions aus einem Cloud Storage-Bucket lesen kann, muss der Bereitstellungs-Agent die Berechtigung storage.objects.get haben:

  • In Cloud Functions (1. Generation) müssen Sie dem Konto, das die Bereitstellung ausführt, diese Berechtigung erteilen.
  • In Cloud Functions (2. Generation) benötigt der Cloud Functions-Dienst-Agent diese Berechtigung. Wenn sich der Quell-Bucket im selben Projekt wie Ihre Funktion befindet, wird sie automatisch gewährt. Wenn sich der Bucket in einem anderen Projekt befindet, müssen Sie die Berechtigung dem Dienst-Agent manuell zuweisen.

Informationen zum Steuern des Zugriffs auf Buckets finden Sie in der Cloud Storage-Dokumentation unter IAM-Berechtigungen verwenden.

Mit dieser Berechtigung können Sie jetzt eine Funktion in Cloud Storage bereitstellen:

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Folgen Sie der oben beschriebenen Bereitstellungsanleitung mit dem Befehl gcloud functions deploy.

    Geben Sie für das Flag --source einen Cloud Storage-Pfad an, der mit gs:// beginnt. Das Objekt im Pfad muss eine ZIP-Datei sein, die den Quellcode der Funktion enthält. Die Quelldateien Ihrer Funktion müssen sich im Stammverzeichnis der ZIP-Datei befinden. Siehe Quellverzeichnisstruktur.

Console

  1. Folgen Sie der oben beschriebenen Bereitstellungsanleitung in der Google Cloud Console, bis Sie zum Feld Quellcode gelangen.
  2. Wählen Sie im Feld Quellcode die Option ZIP aus Cloud Storage aus.
  3. Klicken Sie im Feld Cloud Storage-Speicherort auf Durchsuchen, um eine ZIP-Datei aus Cloud Storage auszuwählen. Die Quelldateien Ihrer Funktion müssen sich im Stammverzeichnis der ZIP-Datei befinden. Siehe Quellverzeichnisstruktur.
  4. Klicken Sie auf Bereitstellen.

Aus Quell-Repository bereitstellen

In diesem Abschnitt wird beschrieben, wie Sie eine Funktion aus dem Quellcode in Cloud Source Repositories bereitstellen. Bei der Bereitstellung aus Cloud Source Repositories können Sie auch Code bereitstellen, der in einem GitHub- oder Bitbucket-Repository gehostet wird.

Bevor Sie Code aus Cloud Source Repositories bereitstellen können, müssen Sie ein Repository einrichten und optional mit Ihrem GitHub- oder Bitbucket-Repository verbinden.

Damit Cloud Functions aus einem Quell-Repository lesen kann, benötigt der Cloud Functions-Dienst-Agent die IAM-Rolle „Quell-Repository-Leser“ (roles/source.reader) für das Repository. Wenn sich das Quell-Repository im selben Projekt wie Ihre Funktion befindet, ist diese Berechtigung automatisch enthalten. Befindet sich das Quell-Repository in einem anderen Projekt, müssen Sie die Berechtigung manuell erteilen.

Anschließend können Sie eine Funktion aus dem Repository bereitstellen:

gcloud

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Folgen Sie der oben beschriebenen Bereitstellungsanleitung mit dem Befehl gcloud functions deploy.

    Geben Sie für das Flag --source einen Quell-Repository-Verweis auf den Speicherort Ihres Funktionsquellcodes an. Weitere Informationen finden Sie unter Quellverzeichnisstruktur. Die grundlegende Referenz für Cloud Source Repositories hat folgendes Format:

    https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_NAME
    

    Im obigen Pfad ist PROJECT_ID Ihre Google Cloud-Projekt-ID und REPOSITORY_NAME der Name Ihres Quell-Repositorys. Bei diesem Pfad wird Quellcode aus dem Stammverzeichnis des Repositorys für die Überarbeitung mit dem Tag master verwendet.

    Für die Bereitstellung aus einer anderen Überarbeitung als master hängen Sie an den obigen Pfad eine der folgenden Optionen an:

    • /revisions/REVISION_NAME
    • /moveable-aliases/MOVEABLE_ALIAS
    • /fixed-aliases/FIXED_ALIAS

    Wenn Sie Quellcode aus einem anderen Verzeichnis als dem Repository-Stammverzeichnis bereitstellen möchten, geben Sie eine Überarbeitung, einen beweglichen Alias oder einen festen Alias an und hängen Sie /paths/PATH_TO_YOUR_SOURCE_DIRECTORY an den Pfad an.

Console

  1. Folgen Sie der oben beschriebenen Bereitstellungsanleitung in der Google Cloud Console, bis Sie zum Feld Quellcode gelangen.
  2. Wählen Sie im Feld Quellcode die Option Cloud Source Repository aus.
  3. Geben Sie im Feld Repository den Namen des Quell-Repositorys ein.
  4. Wählen Sie im Feld Branch / Tag Branch oder Tag aus, je nachdem, wo Sie das Deployment durchführen möchten.
  5. Geben Sie den Branch- oder Tag-Namen ein, sofern angegeben.
  6. Geben Sie im Feld Verzeichnis mit Quellcode den Pfad zum Verzeichnis in Ihrem Repository ein, das den Funktionsquellcode enthält. Weitere Informationen finden Sie unter Quellverzeichnisstruktur.
  7. Klicken Sie auf Bereitstellen.

Über den Inline-Editor der Google Cloud Console bereitstellen

In diesem Abschnitt wird beschrieben, wie Sie mit dem bereitgestellten Inline-Editor eine Funktion direkt in der Google Cloud Console schreiben und bereitstellen.

  1. Folgen Sie der oben beschriebenen Bereitstellungsanleitung in der Google Cloud Console, bis Sie zum Feld Quellcode gelangen.
  2. Wählen Sie im Feld Quellcode den Inline-Editor aus.
  3. Verwenden Sie den bereitgestellten Editor, um Quelldateien nach Bedarf zu erstellen oder zu bearbeiten, siehe Quellverzeichnisstruktur.
    • Im linken Bereich werden die Quelldateien aufgelistet. Dort können Sie Dateien erstellen, umbenennen und löschen.
    • Im rechten Bereich befindet sich ein Texteditor, in dem Sie den Dateiinhalt bearbeiten können.
  4. Klicken Sie auf Bereitstellen.

Befehlszeilenbeispiele

Dieser Abschnitt enthält Bereitstellungsbefehle für einige Beispielbereitstellungsszenarien.

Weitere Informationen zu den verschiedenen von Cloud Functions unterstützten Triggern finden Sie unter Cloud Functions-Trigger.

HTTP-Funktion aus lokalem Quellcode

Angenommen, Sie haben eine HTTP-Funktion:

  • Die Funktion verwendet Node.js 16.
  • Der Quellcode befindet sich im aktuellen Arbeitsverzeichnis (.).
  • Der Einstiegspunkt im Code heißt myHttpFunction.

Verwenden Sie den folgenden Befehl, um die Funktion in Cloud Functions (2. Generation) mit dem Namen my-http-function in der Region us-central1 bereitzustellen:

gcloud functions deploy my-http-function \
  --gen2 \
  --region=us-central1 \
  --runtime=nodejs16 \
  --source=. \
  --entry-point=myHttpFunction \
  --trigger-http

Pub/Sub-Funktion aus Quellcode in Cloud Storage

Angenommen, Sie haben eine ereignisgesteuerte Funktion:

  • Die Funktion verarbeitet Pub/Sub-Nachrichtenveröffentlichungsereignisse.
  • Die Funktion verwendet Python 3.9.
  • Der Quellcode befindet sich in Cloud Storage unter dem Pfad. gs://my-bucket/my_function_source.zip
  • Der Einstiegspunkt im Code heißt pubsub_handler.

So stellen Sie die Funktion in Cloud Functions (2. Generation) mit dem Namen my-pubsub-function in der Region europe-west1 bereit und lassen die Funktion durch Nachrichten im Pub/Sub-Thema my-topic auslösen: Verwenden Sie den folgenden Befehl:

gcloud functions deploy my-pubsub-function \
  --gen2 \
  --region=europe-west1 \
  --runtime=python39 \
  --source=gs://my-bucket/my_function_source.zip \
  --entry-point=pubsub_handler \
  --trigger-topic=my-topic

Cloud Storage-Funktion aus lokalem Quellcode

Angenommen, Sie haben eine ereignisgesteuerte Funktion:

  • Die Funktion verarbeitet Cloud Storage-Ereignisse beim Löschen von Objekten.
  • Die Funktion verwendet Java 11.
  • Der Quellcode befindet sich lokal unter dem Pfad ./functions/storage-function.
  • Der Einstiegspunkt im Code heißt myproject.StorageFunction.

So stellen Sie die Funktion in Cloud Functions (2. Generation) mit dem Namen my-storage-function in der Region asia-northeast1 bereit und lassen die Funktion durch Ereignisse im Cloud Storage-Bucket my-bucket auslösen: Verwenden Sie den folgenden Befehl:

gcloud functions deploy my-storage-function \
  --gen2 \
  --region=asia-northeast1 \
  --runtime=java11 \
  --source=./functions/storage-function \
  --entry-point=myproject.StorageFunction \
  --trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
  --trigger-event-filters="bucket=my-bucket"

Weitere Informationen