Erste Schritte mit Go


Diese Anleitung richtet sich an alle Nutzer, die sich für das Erstellen von Anwendungen in der Cloud interessieren, z. B. Software- oder Webentwickler, die die grundlegenden Konzepte der Anwendungsentwicklung im Zusammenhang mit Google Cloud kennenlernen möchten.

Lernziele

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Die Anleitungen in diesem Dokument wurden so gestaltet, dass Ihre Ressourcennutzung innerhalb der Limits der Stufe Immer kostenlos von Google Cloud bleibt. Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweise

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

    Go to project selector

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

  6. Mit den folgenden Schritten können Sie eine Firebase-Datenbank im nativen Modus erstellen:
    1. Rufen Sie in der Google Cloud Console die Seite Firestore-Datenbank erstellen auf.

      Firestore-Datenbank erstellen

    2. Klicken Sie im Bildschirm Firestore-Modus auswählen auf Nativen Modus auswählen.
    3. Wählen Sie einen Standort für Ihre Firestore-Datenbank aus. Die Speicherorteinstellung ist der standardmäßige Speicherort für Google Cloud-Ressourcen in Ihrem Google Cloud-Projekt. Dieser Speicherort wird für Google Cloud-Dienste in Ihrem Google Cloud-Projekt verwendet, die eine Standorteinstellung erfordern, insbesondere für Ihren standardmäßigen Cloud Storage-Bucket und Ihre Cloud Run-Anwendung.
    4. Klicken Sie auf Datenbank erstellen.
  7. Enable the Artifact Registry, Cloud Run Admin, Cloud Build, Cloud Storage, Cloud Logging, and Error Reporting APIs.

    Enable the APIs

  8. Klonen Sie das Beispiel-Repository und öffnen Sie die Beispielanwendung in Cloud Shell:
    Cloud Shell aufrufen

    Cloud Shell bietet Ihnen direkt über den Browser Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.

  9. Klicken Sie auf Fortfahren, um den Beispielcode herunterzuladen und in das Anwendungsverzeichnis zu wechseln.
  10. Konfigurieren Sie in Cloud Shell das gcloud-Tool, um das neue Google Cloud-Projekt zu verwenden:

    # Configure gcloud for your project
    gcloud config set project PROJECT_ID

    Ersetzen Sie PROJECT_ID durch die Google Cloud-Projekt-ID, die Sie mit der Google Cloud Console erstellt haben.

    Die Google Cloud CLI ist die primäre Methode zum Interagieren mit Google Cloud-Ressourcen über die Befehlszeile. In dieser Anleitung verwenden Sie das gcloud-Tool zum Bereitstellen und Überwachen der Anwendung.

App ausführen

  1. Erstellen Sie die Anwendung, die automatisch Abhängigkeiten herunterlädt:
    go build
    
  2. Führen Sie die App aus:
    GOOGLE_CLOUD_PROJECT=PROJECT_ID ./bookshelf
    
    Ersetzen Sie PROJECT_ID durch die Google Cloud-Projekt-ID, die Sie erstellt haben.
  3. Klicken Sie in Cloud Shell auf Webvorschau und wählen Sie dann Vorschau auf Port 8080 aus. Ein neues Fenster mit der ausgeführten Anwendung wird geöffnet.

Anwendung in Cloud Run bereitstellen

Google Cloud bietet mehrere Optionen zum Ausführen des Codes. In diesem Beispiel verwenden Sie Cloud Run zum Bereitstellen einer skalierbaren Anwendung in Google Cloud. Bei Cloud Run müssen Sie keine Server verwalten und automatisch skalieren, um Trafficspitzen zu unterstützen.

  1. Führen Sie den Container mit Cloud Run aus:
    gcloud run deploy bookshelf --region us-central1 --allow-unauthenticated \
    --set-env-vars="GOOGLE_CLOUD_PROJECT=PROJECT_ID" --source .

    Ihre Anwendung kann jetzt unter der URL angezeigt werden, die in der Ausgabe von gcloud run angezeigt wird:

    Service [bookshelf] revision [bookshelf-00001] has been deployed and is serving 100 percent of traffic.
    Service URL: https://bookshelf-swsmmh5s5a-uc.a.run.app
    
  2. Kopieren Sie die URL in Ihren Webbrowser, um die Anwendung anzuzeigen. Startseite: Bookshelf-Anwendung

Weitere Informationen zur Bereitstellung in Cloud Run finden Sie in der Dokumentation zu Cloud Run.

Daten mit Firestore dauerhaft speichern

Sie können keine Informationen auf Ihren Cloud Run-Instanzen speichern, da sie beim Neustart der Instanz verloren gehen und beim Erstellen neuer Instanzen nicht vorhanden sind. Stattdessen verwenden Sie eine Datenbank, aus der Ihre Instanzen lesen bzw. in die sie schreiben.

Google Cloud bietet mehrere Optionen zum Speichern von Daten. In diesem Beispiel verwenden Sie Firestore zum Speichern der Daten für jedes Buch. Firestore ist eine vollständig verwaltete, serverlose NoSQL-Dokumentendatenbank, in der Sie Daten speichern und abfragen können. Firestore skaliert automatisch, um die Anwendungsanforderungen zu erfüllen; wenn Sie die Anwendung nicht nutzen, skaliert Firestore auf null. Fügen Sie jetzt das erste Buch hinzu.

  1. Zum Erstellen eines Buchs für die bereitgestellte Anwendung klicken Sie auf Add book (Buch hinzufügen).

    Buch zur Bookshelf-Anwendung hinzufügen
  2. Geben Sie im Feld Titel Moby Dick ein.
  3. Geben Sie im Feld Autor Herman Melville ein.
  4. Klicken Sie auf Speichern. Die Bookshelf-Anwendung enthält jetzt einen Eintrag.

    Eintrag in Bookshelf-Anwendung: Moby Dick
  5. Klicken Sie zum Aktualisieren der Firestore-Seite in der Google Cloud Console auf Aktualisieren . Die Daten sind in Firestore zu sehen. In der Bookshelf-Anwendung wird jedes Buch als Firestore-Dokument mit einer eindeutigen ID gespeichert. All diese Dokumente werden in einer Firestore-Sammlung gespeichert. In dieser Anleitung wird die Sammlung „books“ genannt. Beispiel für Firestore-Dokument

Firestore speichert die Bücher mithilfe der Firestore-Clientbibliothek. Hier ein Beispiel zum Abrufen eines Firestore-Dokuments:


// newFirestoreDB creates a new BookDatabase backed by Cloud Firestore.
// See the firestore package for details on creating a suitable
// firestore.Client: https://godoc.org/cloud.google.com/go/firestore.
func newFirestoreDB(client *firestore.Client) (*firestoreDB, error) {
	ctx := context.Background()
	// Verify that we can communicate and authenticate with the Firestore
	// service.
	err := client.RunTransaction(ctx, func(ctx context.Context, t *firestore.Transaction) error {
		return nil
	})
	if err != nil {
		return nil, fmt.Errorf("firestoredb: could not connect: %w", err)
	}
	return &firestoreDB{
		client:     client,
		collection: "books",
	}, nil
}

// Close closes the database.
func (db *firestoreDB) Close(context.Context) error {
	return db.client.Close()
}

// Book retrieves a book by its ID.
func (db *firestoreDB) GetBook(ctx context.Context, id string) (*Book, error) {
	ds, err := db.client.Collection(db.collection).Doc(id).Get(ctx)
	if err != nil {
		return nil, fmt.Errorf("firestoredb: Get: %w", err)
	}
	b := &Book{}
	ds.DataTo(b)
	return b, nil
}

Weitere Informationen zum Verwenden von Firestore finden Sie unter Daten in Firestore hinzufügen.

Datei-Uploads in Cloud Storage speichern

Nachdem Sie ein Buch hinzugefügt haben, soll nun auch noch ein Bild des Buchcovers hinzugefügt werden. Dateien können nicht in Instanzen gespeichert werden. Eine Datenbank ist auch nicht der richtige Ort für Bilddateien. Verwenden Sie stattdessen Cloud Storage.

Cloud Storage ist der primäre Blob-Speicher für Google Cloud. Sie können mit Cloud Storage Anwendungs-Assets hosten, die Sie in der Google Cloud freigeben möchten. Zur Verwendung von Cloud Storage müssen Sie einen Cloud Storage-Bucket – einen Basiscontainer für Daten – erstellen.

  1. Wechseln Sie in der Google Cloud Console zum Cloud Storage-Browser.

    Zum Cloud Storage-Browser

  2. Klicken Sie auf Bucket erstellen.
  3. Geben Sie im Dialogfeld Bucket erstellen einen Namen für den Bucket ein, indem Sie die Google Cloud-Projekt-ID vor dem String _bucket einfügen, sodass der Name YOUR_PROJECT_ID_bucket lautet. Der Name unterliegt den Anforderungen für Bucket-Namen. Bei allen übrigen Feldern können die Standardwerte übernommen werden.
  4. Klicken Sie auf Erstellen.
  5. Nach dem Erstellen des Buckets müssen Objekte öffentlich zugänglich gemacht werden, damit Nutzer sie aufrufen können. Informationen dazu, wie Sie Objekte öffentlich zugänglich machen, finden Sie unter Daten öffentlich machen.
  6. Klicken Sie auf Buch bearbeiten und wählen Sie ein Bild als Buchcover zum Hochladen aus. Sie können beispielsweise dieses urheberrechtsfreie Bild verwenden:
    Buchcover: Moby Dick
  7. Klicken Sie auf Speichern. Sie werden zur Startseite weitergeleitet, auf der sich ein Eintrag für Ihre Bookshelf-Anwendung befindet.
    Eintrag in Bookshelf-Anwendung: Moby Dick

Die Bookshelf-Anwendung sendet hochgeladene Dateien über die Cloud Storage-Clientbibliothek an Cloud Storage.


// uploadFileFromForm uploads a file if it's present in the "image" form field.
func (b *Bookshelf) uploadFileFromForm(ctx context.Context, r *http.Request) (url string, err error) {
	f, fh, err := r.FormFile("image")
	if err == http.ErrMissingFile {
		return "", nil
	}
	if err != nil {
		return "", err
	}

	if b.StorageBucket == nil {
		return "", errors.New("storage bucket is missing: check bookshelf.go")
	}
	if _, err := b.StorageBucket.Attrs(ctx); err != nil {
		if err == storage.ErrBucketNotExist {
			return "", fmt.Errorf("bucket %q does not exist: check bookshelf.go", b.StorageBucketName)
		}
		return "", fmt.Errorf("could not get bucket: %w", err)
	}

	// random filename, retaining existing extension.
	name := uuid.Must(uuid.NewV4()).String() + path.Ext(fh.Filename)

	w := b.StorageBucket.Object(name).NewWriter(ctx)

	// Warning: storage.AllUsers gives public read access to anyone.
	w.ACL = []storage.ACLRule{{Entity: storage.AllUsers, Role: storage.RoleReader}}
	w.ContentType = fh.Header.Get("Content-Type")

	// Entries are immutable, be aggressive about caching (1 day).
	w.CacheControl = "public, max-age=86400"

	if _, err := io.Copy(w, f); err != nil {
		return "", err
	}
	if err := w.Close(); err != nil {
		return "", err
	}

	const publicURL = "https://storage.googleapis.com/%s/%s"
	return fmt.Sprintf(publicURL, b.StorageBucketName, name), nil
}

Weitere Informationen zur Verwendung von Cloud Storage finden Sie in der Einführung in Cloud Storage.

Anwendung mit Google Cloud Observability überwachen

Sie haben Ihre Anwendung bereitgestellt und Bücher erstellt und bearbeitet. Diese Ereignisse können Sie für Ihre Nutzer mit Application Performance Management überwachen.

Logs mit Cloud Logging überwachen

  1. Rufen Sie in der Google Cloud den Log-Explorer auf.

    Zum Log-Explorer

    Hier können Sie die Anwendung in Echtzeit überwachen. Bei Problemen mit Ihrer Anwendung ist dies einer der ersten Anlaufpunkte.

    Stackdriver-Loganzeige
  2. Wählen Sie in der Drop-down-Liste Ressource die Option Überarbeitung in Cloud Run, Bookshelf aus.

Fehler mithilfe von Error Reporting überwachen

  1. Rufen Sie in der Google Cloud Console die Seite Fehlerberichte auf.
    Zur Seite „Error Reporting“
    In Error Reporting werden Fehler und Ausnahmen in der Anwendung hervorgehoben. Sie können auch diesbezügliche Benachrichtigungen einrichten.
  2. Rufen Sie im Browser die URL /errors in der Anwendung auf.
    YOUR_CLOUD_RUN_URL/errors

    Dadurch wird eine neue Testausnahme generiert und an Google Cloud Observability gesendet.

  3. Kehren Sie in der Google Cloud Console zur Seite Error Reporting zurück. Nach kurzer Zeit ist der neue Fehler zu sehen. Klicken Sie auf Automatische Aktualisierung, damit Sie die Seite nicht manuell aktualisieren müssen.

    Fehlermeldung von Error Reporting

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte