HTTP-Cloud Run Functions-Funktion mit Go (1. Generation) erstellen und bereitstellen

In diesem Leitfaden wird der Schreibvorgang für eine Cloud Run Functions-Funktion mit der Go-Laufzeit beschrieben. 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.

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

Vorbereitung

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  8. Installieren und initialisieren Sie die gcloud CLI.
  9. Aktualisieren und installieren Sie gcloud-Komponenten:
    gcloud components update
  10. Bereiten Sie die Entwicklungsumgebung vor.

    Zum Einrichtungsleitfaden für Go

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 hello_http.go-Datei im Verzeichnis helloworld mit folgendem Inhalt:

    
    // Package helloworld provides a set of Cloud Functions samples.
    package helloworld
    
    import (
    	"encoding/json"
    	"fmt"
    	"html"
    	"net/http"
    
    	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
    )
    
    func init() {
    	functions.HTTP("HelloHTTP", HelloHTTP)
    }
    
    // HelloHTTP is an HTTP Cloud Function with a request parameter.
    func HelloHTTP(w http.ResponseWriter, r *http.Request) {
    	var d struct {
    		Name string `json:"name"`
    	}
    	if err := json.NewDecoder(r.Body).Decode(&d); err != nil {
    		fmt.Fprint(w, "Hello, World!")
    		return
    	}
    	if d.Name == "" {
    		fmt.Fprint(w, "Hello, World!")
    		return
    	}
    	fmt.Fprintf(w, "Hello, %s!", html.EscapeString(d.Name))
    }
    

    Diese Beispielfunktion verwendet einen in der HTTP-Anfrage angegebenen Namen und gibt eine Begrüßung oder, wenn kein Name angegeben wird, "Hello World!" zurück.

Abhängigkeiten angeben

Diese Beispielfunktion verwendet nur Go-Standardbibliothekspakete, sodass Sie über den Import der Pakete hinaus keine Abhängigkeiten deklarieren müssen.

Für Funktionen, die Abhängigkeiten außerhalb der Standardbibliothek benötigen, müssen Sie die Abhängigkeiten entweder über eine go.mod-Datei oder ein vendor-Verzeichnis bereitstellen. Weitere Informationen finden Sie unter Abhängigkeiten in Go angeben.

Funktion implementieren

Stellen Sie die Funktion mit einem HTTP-Trigger mit diesem Befehl im Verzeichnis helloworld bereit. Geben Sie je nach verwendeter Version entweder go113 oder go111 als Wert für das Flag --runtime an:

gcloud functions deploy HelloHTTP --no-gen2 --runtime go122 --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. Notieren Sie sich nach der Bereitstellung der Funktion das Attribut von httpsTrigger.url oder suchen Sie es mit diesem Befehl:

    gcloud functions describe HelloHTTP
    

    Dies sollte so aussehen:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP
  2. Rufen Sie diese URL in Ihrem Browser auf oder verwenden Sie cURL, indem Sie folgenden Befehl ausführen:

    curl https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP

    Jetzt sollten Sie die Nachricht "Hello World!" sehen. Übergeben Sie mit folgendem Befehl einen Namen in der HTTP-Anfrage:

    curl -X POST https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP -H "Content-Type:application/json"  -d '{"name":"NAME"}'

    Jetzt sollten Sie die Nachricht "Hallo NAME!" sehen.

Logs ansehen

Logs für Cloud Run Functions-Funktionen können über die Google Cloud CLI und in der Cloud Logging-UI aufgerufen werden.

Befehlszeilentool verwenden

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

gcloud functions logs read HelloHTTP

Die Ausgabe sollte in etwa so aussehen:

LEVEL  NAME        EXECUTION_ID  TIME_UTC                 LOG
D      HelloHTTP  buv9ej2k1a7r  2019-09-20 13:23:18.910  Function execution started
D      HelloHTTP  buv9ej2k1a7r  2019-09-20 13:23:18.913  Function execution took 4 ms, finished with status code: 200

Logging-Dashboard verwenden

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