Ihre erste Funktion: Python

Dieser Leitfaden erläutert den Prozess zum Schreiben einer Cloud Function-Funktion mithilfe der Python-Laufzeit. Es gibt zwei Arten von Cloud Functions-Funktionen:

  • Eine HTTP-Funktion, die Sie über Standard-HTTP-Anfragen aufrufen.
  • Eine Hintergrundfunktion, mit der Sie Ereignisse aus Ihrer Cloud-Infrastruktur verarbeiten können, z. B. Nachrichten in einem Cloud Pub/Sub-Thema oder Änderungen in einem Cloud Storage-Bucket.

Das Beispiel zeigt, wie Sie eine einfache HTTP-Funktion erstellen.

Inhaltsverzeichnis

  1. GCP-Projekt mit dem Cloud SDK erstellen
  2. Funktion erstellen
  3. Abhängigkeiten angeben
  4. Funktion bereitstellen
  5. Funktion testen

GCP-Projekt mit dem Cloud SDK erstellen

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit 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.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Cloud Functions and Cloud Build APIs aktivieren.

    Aktivieren Sie die APIs

  5. Installieren und initialisieren Sie das Cloud SDK.
  6. Aktualisieren und installieren Sie gcloud-Komponenten:
    gcloud components update
  7. Benötigen Sie eine Eingabeaufforderung? Dazu steht die Google Cloud Shell zur Verfügung. Google Cloud Shell ist eine Befehlszeilenumgebung, in der das Google Cloud SDK bereits enthalten ist und daher nicht installiert werden muss. Das Google Cloud SDK ist außerdem auf den virtuellen Maschinen von Google Compute Engine vorinstalliert.

  8. Bereiten Sie die Entwicklungsumgebung vor.

    Zum Einrichtungsleitfaden für Python

Funktion erstellen

  1. 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
    
  2. Erstellen Sie eine main.py-Datei im Verzeichnis helloworld mit folgendem Inhalt:

    from flask import escape
    
    def hello_http(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
        Returns:
            The response text, or any set of values that can be turned into a
            Response object using `make_response`
            <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
        """
        request_json = request.get_json(silent=True)
        request_args = request.args
    
        if request_json and 'name' in request_json:
            name = request_json['name']
        elif request_args and 'name' in request_args:
            name = request_args['name']
        else:
            name = 'World'
        return 'Hello {}!'.format(escape(name))

    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 Python werden mit pip verwaltet und in einer Metadatendatei mit dem Namen requirements.txt ausgedrückt. Diese Datei muss sich im selben Verzeichnis wie die Datei main.py befinden, die den Funktionscode enthält.

  1. Erstellen Sie im Verzeichnis helloworld eine Datei requirements.txt.

  2. Fügen Sie Ihrer Datei requirements.txtdie Abhängigkeit der Funktion hinzu, in diesem Fall das Flask-Paket. Dazu fügen Sie die folgende Zeile ein:

    Flask==1.0.2
    

Funktion bereitstellen

Stellen Sie die Funktion mit einem HTTP-Trigger mit diesem Befehl im Verzeichnis helloworld bereit:

gcloud functions deploy hello_http --runtime python38 --trigger-http --allow-unauthenticated

Mit dem Flag --allow-unauthenticated können Sie die Funktion ohne Authentifizierung aufrufen. Wenn Sie eine Authentifizierung anfordern möchten, lassen Sie das Flag weg.

Funktion testen

  1. Nach Bereitstellung der Funktion notieren Sie sich das Attribut von httpsTrigger.url oder suchen Sie es mit dem folgenden Befehl:

    gcloud functions describe hello_http
    

    Dies sollte so aussehen:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http
  2. Rufen Sie diese URL in Ihrem Browser auf: Jetzt sollten Sie die Meldung "Hello World!" sehen.

    Geben Sie einen Namen in die HTTP-Anfrage ein, z. B. mithilfe der folgenden URL:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http?name=NAME

    Jetzt sollten Sie die Meldung "Hello NAME!" sehen.

Logs ansehen

Befehlszeilentool verwenden

Logs für Cloud Functions-Funktionen können über die Cloud Logging-UI und das gcloud-Befehlszeilentool aufgerufen werden.

Wenn Sie mit dem Tool gcloud Logs für Ihre Funktion aufrufen möchten, verwenden Sie den Befehl logs read, gefolgt vom Namen der Funktion:

gcloud functions logs read hello_http

Die Ausgabe sollte in etwa so aussehen:

LEVEL  NAME        EXECUTION_ID  TIME_UTC                 LOG
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.791  Function execution started
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.798  Function execution took 7 ms, finished with status code: 200

Logging-Dashboard verwenden

Sie können Logs für Cloud Functions auch über die Cloud Console aufrufen.