Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Sitzungen mit Cloud Firestore verarbeiten

Viele Anwendungen benötigen eine Sitzungsverwaltung zur Authentifizierung und für Nutzereinstellungen. ASP.NET Core wird mit Middleware geliefert, um Sitzungen in einem verteilten Cache zu speichern.

Der standardmäßig verteilte Cache von ASP.NET wird überhaupt nicht verteilt. Sitzungsdaten werden im Arbeitsspeicher des Webservers gespeichert. Wenn nur ein Webserver eine Website bereitstellt, ist diese Strategie in Ordnung. Wenn jedoch viele Webserver eine Website bedienen, können die Nutzer der Website Fehler und verlorene Daten erhalten.

Um Fehler und Datenverlust zu vermeiden, muss eine ASP.NET-Anwendung einen verteilten Cache verwenden, in dem Daten in einem persistenten Datenspeicher gespeichert werden. In dieser Anleitung erfahren Sie, wie Sie Sitzungen in Cloud Run verwalten, indem Sie sie in Firestore speichern und Cookies mit dem Cloud Key Management Service verschlüsseln.

Ziele

  • Stellen Sie die Anwendung in Cloud Run bereit.

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

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 dieser Anleitung können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweis

  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. Firestore, Cloud Run, Cloud Key Management Service, and Cloud Storage APIs aktivieren.

    Aktivieren Sie die APIs

  5. Mit den folgenden Schritten können Sie eine Firebase-Datenbank im nativen Modus erstellen:
    1. Rufen Sie in der Cloud Console die Firestore-Seite auf.
      Zur Firestore-Seite
    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. Mit dieser Standorteinstellung legen Sie den Standardspeicherort für Google Cloud-Ressourcen in Ihrem Cloud-Projekt fest. Er wird für Google Cloud-Dienste in Ihrem Cloud-Projekt verwendet, die eine Standorteinstellung benötigen. Dabei geht es speziell um Ihren standardmäßigen Cloud Storage-Bucket und Ihre App Engine-Anwendung.
    4. Klicken Sie auf Datenbank erstellen.
  6. Öffnen Sie den Quellcode der Anwendung in Cloud Shell.
    Zu Cloud Shell

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

  7. Klicken Sie auf Fortfahren, um den Beispielcode herunterzuladen und in das Anwendungsverzeichnis zu wechseln.
  8. 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 Cloud Console erstellt haben.

    Das gcloud-Befehlszeilentool 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 Verwalten der Anwendung.

Quellcode untersuchen

Das folgende Diagramm zeigt, wie Firestore Sitzungen für die Cloud Run-Anwendung verarbeitet.

Diagramm der Architektur: Nutzer, Cloud Run, Firestore.

Mit der Methode ConfigureServices in der Datei Startup.cs wird die Anwendung so eingerichtet, dass Cloud KMS für die Verschlüsselung und Cloud Storage zum Speichern verschlüsselter Schlüssel verwendet werden.

  1. Klicken Sie in der Cloud Shell auf Editor starten, um den Editor zu starten und sich die Datei Startup.cs anzusehen.

    public void ConfigureServices(IServiceCollection services)
    {
        // Antiforgery tokens require data protection.
        services.AddDataProtection()
            // Store keys in Cloud Storage so that multiple instances
            // of the web application see the same keys.
            .PersistKeysToGoogleCloudStorage(
                Configuration["DataProtection:Bucket"],
                Configuration["DataProtection:Object"])
            // Protect the keys with Google KMS for encryption and fine-
            // grained access control.
            .ProtectKeysWithGoogleKms(
                Configuration["DataProtection:KmsKeyName"]);
        services.AddFirestoreDistributedCache(
                Configuration["FIRESTORE_PROJECT_ID"])
            .AddFirestoreDistributedCacheGarbageCollector();
        services.AddSession();
    }
    

Google Cloud-Projekt einrichten

  1. Bearbeiten Sie im Cloud Shell-Editor die Datei appsettings.json und ersetzen Sie die beiden Instanzen von YOUR-PROJECT-ID durch Ihre Cloud-Projekt-ID. Speichern Sie die Datei.

    {
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "AllowedHosts": "*",
      "DataProtection": {
        "Bucket": "YOUR-PROJECT-ID-bucket",
        "Object": "DataProtectionProviderKeys.xml",
        "KmsKeyName": "projects/YOUR-PROJECT-ID/locations/global/keyRings/dataprotectionprovider/cryptoKeys/masterkey"
      }
    }
    
  2. Erstellen Sie einen neuen Schlüsselbund für den Cloud Key Management Service mit dem Namen dataprotectionprovider:

    gcloud kms keyrings create dataprotectionprovider --location global

  3. Erstellen Sie einen neuen Schlüsselbund für den Cloud Key Management Service mit dem Namen masterkey:

    gcloud kms keys create masterkey --location global --keyring dataprotectionprovider --purpose=encryption

  4. Erstellen Sie einen Cloud Storage-Bucket zum Speichern der verschlüsselten Schlüssel:

    gsutil mb gs://PROJECT_ID-bucket

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.

In dieser Anleitung wird der Server mithilfe von Cloud Run bereitgestellt.

  1. Veröffentlichen Sie in Ihrer Cloud Shell Ihre Anwendung:

    dotnet publish -c Release
    
  2. Verwenden Sie Cloud Build, um einen Docker-Container zu erstellen und in der Container Registry zu veröffentlichen:

    gcloud builds submit --tag gcr.io/PROJECT_ID/sessions bin/Release/netcoreapp2.1/publish

  3. Führen Sie den Container mit Cloud Run aus:

    gcloud beta run deploy sessions --region us-central1 --platform managed --image gcr.io/PROJECT_ID/sessions --allow-unauthenticated

    Notieren Sie sich die URL aus der Ausgabe:

    Service [sessions] revision [sessions-00003-xiz] has been deployed and is serving
    100 percent of traffic at https://sessions-r3f3em7nuq-uc.a.run.app
  4. Um die Live-Anwendung anzuzeigen, rufen Sie die URL auf, die Sie aus dem vorherigen Schritt kopiert haben.

Sitzungen löschen

In der Google Cloud Console können Sie Sitzungsdaten löschen oder eine Strategie zum automatischen Löschen implementieren. Wenn Sie zum Speichern von Sitzungen Lösungen wie Memcache oder Redis verwenden, werden abgelaufene Sitzungen automatisch gelöscht.

Fehler in der Anwendung beheben

Wenn Sie keine Verbindung zu Ihrer Cloud Run-Anwendung herstellen können, prüfen Sie Folgendes:

  1. Ü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.
  2. Weitere Informationen zum Anzeigen von Protokollen finden Sie im Cloud Run-Handbuch.

Bereinigen

Projekt löschen

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte