In dieser Anleitung wird gezeigt, wie Sitzungen in Cloud Run verarbeitet werden.
Viele Anwendungen benötigen eine Sitzungsverarbeitung zur Authentifizierung und für Nutzereinstellungen.
Das Paket Gorilla Web Toolkit
sessions enthält eine dateisystembasierte Implementierung, um diese Funktion auszuführen. Diese Implementierung eignet sich jedoch nicht für eine Anwendung, die über mehrere Instanzen bereitgestellt werden kann, da sich die Sitzung, die in einer bestimmten Instanz aufgezeichnet wird, von Sitzungen in anderen Instanzen unterscheiden kann. Das Paket gorilla/sessions enthält außerdem eine cookiebasierte Implementierung. Diese Implementierung erfordert jedoch das Verschlüsseln von Cookies und das Speichern der gesamten Sitzung auf dem Client anstelle einer Sitzungs-ID, was für einige Anwendungen möglicherweise zu viel ist.
Ziele
- Anwendung schreiben
- Anwendung lokal ausführen
- Stellen Sie die Anwendung in Cloud Run bereit.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
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
- 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.
-
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
(
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 Firestore API.
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. -
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
(
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 Firestore API.
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. -
Öffnen Sie die Anwendung in der Google Cloud Console über Cloud Shell.
Cloud Shell bietet Ihnen direkt über den Browser Befehlszeilenzugriff auf Ihre Cloud-Ressourcen. Öffnen Sie Cloud Shell im Browser und klicken Sie auf Fortfahren, um den Beispielcode herunterzuladen und ins Anwendungsverzeichnis zu wechseln.
-
Konfigurieren Sie in Cloud Shell die gcloud CLI, um Ihr neues Google Cloud Projekt zu verwenden:
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Projekt einrichten
Klonen Sie das Beispiel-App-Repository in Ihrem Terminalfenster auf Ihren lokalen Computer:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Wechseln Sie in das Verzeichnis, das den Beispielcode enthält:
cd golang-samples/getting-started/sessions
Informationen zur Web-App
In dieser Anwendung werden Begrüßungen in verschiedenen Sprachen für jeden Nutzer angezeigt. Wiederkehrende Nutzer werden immer in derselben Sprache begrüßt.
Bevor sich in der Anwendung die Einstellungen für einen Nutzer speichern lassen, benötigen Sie eine Möglichkeit zum Speichern der Informationen über den aktuellen Nutzer in einer Sitzung. Diese Beispielanwendung verwendet Firestore zum Speichern von Sitzungsdaten.
Die Anwendung beginnt mit dem Import von Abhängigkeiten sowie dem Festlegen eines
app-Typs für einesessions.Store- und eine HTML-Vorlage und der Liste der Begrüßungen.Als Nächstes definiert die Anwendung eine
main-Funktion, die eine neueapp-Instanz erstellt, den Index-Handler registriert und den HTTP-Server startet. Die FunktionnewApperstellt dieapp-Instanz, indem sie die WerteprojectIDundcollectionIDfestlegt und die HTML-Vorlage parst.Der Index-Handler ruft die Sitzung des Nutzers ab. Bei Bedarf erstellt er eine Sitzung. Neuen Sitzungen werden eine zufällige Sprache und 0 Aufrufe zugewiesen. Anschließend wird die Anzahl der Aufrufe um eins erhöht, die Sitzung gespeichert und die HTML-Vorlage schreibt die Antwort.
Das folgende Diagramm zeigt, wie Firestore Sitzungen für die Cloud Run-Anwendung verarbeitet.
Sitzungen löschen
Sie können Sitzungsdaten löschen oder eine automatische Löschstrategie implementieren.Google Cloud Wenn Sie zum Speichern von Sitzungen Lösungen wie Memcache oder Redis verwenden, werden abgelaufene Sitzungen automatisch gelöscht.
Lokal ausführen
Erstellen Sie die Binärdatei
sessionsim Terminalfenster:go buildStarten Sie den HTTP-Server:
./sessionsSehen Sie sich die App in Ihrem Webbrowser an:
Cloud Shell
Klicken Sie in der Symbolleiste von Cloud Shell auf Webvorschau
und wählen Sie Vorschau auf Port 8080 aus.Lokaler Computer
Rufen Sie
http://localhost:8080im Browser auf:Eine dieser fünf Begrüßungen wird angezeigt: "Hello World", "Hallo Welt", "Hola mundo", "Salut le Monde" oder "Ciao Mondo". Die Sprache ändert sich, wenn Sie die Seite in einem anderen Browser oder im Inkognitomodus öffnen. Sie können die Sitzungsdaten in der Google Cloud -Konsole ansehen und bearbeiten.

Drücken Sie im Terminalfenster
Control+C, um den HTTP-Server zu beenden.
In Cloud Run bereitstellen und ausführen
Mit Cloud Run können Sie eine Anwendung erstellen und bereitstellen, die unter hoher Last und mit großen Datenmengen zuverlässig ausgeführt wird.
- Stellen Sie die Anwendung in Cloud Run bereit:
gcloud run deploy firestore-tutorial-go
--source . --allow-unauthenticated --port=8080
--set-env-vars=GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID - Rufen Sie die von diesem Befehl zurückgegebene URL auf, um zu sehen, wie Sitzungsdaten zwischen dem Laden der Seite beibehalten werden.
Die Begrüßung wird nun von einem Webserver bereitgestellt, der in einer Cloud Run-Instanz ausgeführt wird.
Fehler in der Anwendung beheben
Wenn Sie keine Verbindung zu Ihrer Cloud Run-Anwendung herstellen können, prüfen Sie Folgendes:
- Überprüfen Sie, ob die
gcloud-Bereitstellungsbefehle erfolgreich ausgeführt wurden und keine Fehler ausgegeben haben. Wenn Fehler aufgetreten sind (z.–B.message=Build failed), beheben Sie diese und versuchen Sie noch einmal, die Cloud Run-Anwendung bereitzustellen. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf:
Klicken Sie in der Drop-down-Liste Zuletzt ausgewählte Ressourcen auf Cloud Run-Anwendung und dann auf Alle Werte für module_id. Es wird eine Liste der Anfragen abgerufen, die Sie beim Besuch Ihrer Anwendung gestellt haben. Wenn keine Anfragenliste angezeigt wird, bestätigen Sie, dass Sie Alle Werte für module_id aus der Drop-down-Liste ausgewählt haben. Wenn Fehlermeldungen in der Google Cloud Konsole angezeigt werden, prüfen Sie, ob der Code Ihrer Anwendung mit dem Code im Abschnitt zum Schreiben der Webanwendung übereinstimmt.
Sorgen Sie dafür, dass die Firestore API aktiviert ist.
Bereinigen
Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Cloud Run-Instanz löschen
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Klicken Sie zum Löschen der Anwendungsversion auf Löschen.
Nächste Schritte
- Anleitungen für Cloud Run Functions
- Weitere Informationen zu Cloud Run
- Cloud Run testen, um zustandslose Container in einer vollständig verwalteten Umgebung oder im eigenen Google Kubernetes Engine-Cluster auszuführen