Von Änderungsbenachrichtigungen für Objekte zu Pub/Sub-Benachrichtigungen migrieren

Dieser Leitfaden richtet sich an Nutzer der eingestellten Funktion Benachrichtigungen über Objektänderungen von Cloud Storage. Pub/Sub-Benachrichtigungen für Cloud Storage ist das empfohlene Tool zum Erstellen von Benachrichtigungen, die Änderungen an Objekten in Ihren Cloud Storage-Buckets verfolgen. Pub/Sub-Benachrichtigungen bieten eine höhere Geschwindigkeit, Flexibilität, Benutzerfreundlichkeit und Kosteneffizienz. In diesem Leitfaden werden die Unterschiede zwischen Benachrichtigungen über Objektänderungen und Pub/Sub-Benachrichtigungen für Cloud Storage erläutert. Außerdem finden Sie hier Migrationsschritte von Benachrichtigungen über Objektänderungen zu Pub/Sub-Benachrichtigungen.

Übersicht über Änderungsbenachrichtigungen für Objekte

Änderungsbenachrichtigungen für Objekte sind ein Legacy-Mechanismus in Cloud Storage, um eine Anwendung über Änderungen an Objekten in einem Bucket zu benachrichtigen. Wenn eine Benachrichtigung über Objektänderungen eingerichtet ist, sendet Cloud Storage HTTP-POST-Anfragen (Webhooks) an eine angegebene Anwendungs-URL, wenn ein Objekt hinzugefügt, aktualisiert oder gelöscht wird. Objektänderungsbenachrichtigungen werden durch Senden einer watchAll-Anfrage an Cloud Storage eingerichtet. Dazu können Sie die JSON API, Clientbibliotheken oder den gsutil-Benachrichtigungsbefehl watchbucket verwenden. Es gibt keinen pull-Mechanismus. Sie benötigen einen öffentlich zugänglichen Domainnamen, der von einem HTTP-Server unterstützt wird, um die Webhook-Nachrichten zu empfangen. Wir empfehlen, für neue Implementierungen Pub/Sub-Benachrichtigungen für Cloud Storage zu verwenden, da sie zuverlässig, skalierbar und flexibel sind.

Weitere Informationen finden Sie unter Benachrichtigungen zu Objektänderungen.

Übersicht über Pub/Sub-Benachrichtigungen

Pub/Sub-Benachrichtigungen für Cloud Storage bieten eine moderne, skalierbare und zuverlässige Möglichkeit, Aktionen als Reaktion auf Änderungen in Ihren Cloud Storage-Buckets auszulösen, indem Ereignisinformationen an ein Pub/Sub-Thema gesendet werden. Pub/Sub ermöglicht die Zustellung von Nachrichten auf Push-Basis als HTTP POST-Anfragen an Webhooks. Wenn Objekte erstellt, aktualisiert oder gelöscht werden, veröffentlicht Cloud Storage Nachrichten mit Objektmetadaten in einem angegebenen Pub/Sub-Thema. Diese Nachrichten können dann von verschiedenen Abonnenten wie Cloud Run-Funktionen, Datenpipelines oder Microservices genutzt werden. So lassen sich flexible und ereignisgesteuerte Architekturen mit mindestens einmaliger Zustellung und robusten Funktionen zur Fehlerbehandlung realisieren.

Weitere Informationen finden Sie unter Pub/Sub-Benachrichtigungen für Cloud Storage.

Vergleich von Benachrichtigungen über Objektänderungen und Pub/Sub-Benachrichtigungen

In der folgenden Tabelle werden Änderungsbenachrichtigungen für Objekte mit Pub/Sub-Benachrichtigungen verglichen:

Funktion Benachrichtigungen über Objektänderungen Pub/Sub-Benachrichtigungen
Purpose Benachrichtigt eine Anwendung direkt über HTTP-POST-Anfragen (Webhooks), wenn sich Objekte in einem Bucket ändern. Sendet Informationen zu Änderungen an Objekten in Cloud Storage-Buckets an ein Pub/Sub-Thema.
Bereitstellungsmechanismus Direkte HTTP-POST-Anfrage (Webhook) an eine angegebene Anwendungs-URL. Nachrichten, die in einem Pub/Sub-Thema veröffentlicht werden, können dann von verschiedenen Abonnenten wie Cloud Run Functions-Funktionen, anderen Anwendungen und Datenpipelines verarbeitet werden.
Zuverlässigkeit Es wird versucht, die Nachricht zuverlässig zuzustellen, die Aktualität wird jedoch nicht garantiert. Benachrichtigungen können sich auf unbestimmte Zeit verzögern. Bietet mindestens einmalige Zustellung. Nachrichten können also mehrmals zugestellt werden, gehen aber nicht verloren. Pub/Sub kümmert sich um die Persistenz und Wiederholungen von Nachrichten.
Skalierbarkeit Weniger skalierbar, da es auf direkten Webhooks basiert, die von Ihrer Anwendung verarbeitet werden müssen. Hoch skalierbar und für die Verarbeitung großer Mengen von Ereignissen konzipiert.
Flexibilität Beschränkt auf die direkte Webhook-Integration. Sehr flexibel. Pub/Sub-Nachrichten können Cloud Run-Funktionen auslösen, in Datenpipelines (Dataflow) einfließen und von anderen Microservices genutzt werden.
Filtern Keine Robuste Filteroptionen auf Pub/Sub-Aboebene, mit denen Abonnenten nur Nachrichten erhalten, die bestimmte Kriterien erfüllen.
Sicherheit Dazu muss der Endpunkt Ihrer Anwendung öffentlich zugänglich sein (HTTPS). Pub/Sub bietet IAM für eine detaillierte Zugriffssteuerung für Themen und Abos. Pub/Sub unterstützt die sichere Zustellung von Nachrichten, unabhängig davon, ob Sie Benachrichtigungen direkt abrufen oder an einen öffentlichen Endpunkt senden lassen.
Komplexität Die Einrichtung für grundlegende Anwendungsfälle kann einfacher sein, die Verwaltung der zuverlässigen Zustellung und Skalierung kann jedoch komplex werden. Erfordert Kenntnisse der Pub/Sub-Konzepte (Themen, Abos), bietet aber eine robustere und besser verwaltbare Lösung für ereignisgesteuerte Architekturen.
Einstellungsstatus Verworfen. Wir empfehlen, für neue Implementierungen Pub/Sub-Benachrichtigungen zu verwenden. Aktiv. Dies ist die primäre und aktiv entwickelte Methode für Cloud Storage-Benachrichtigungen.
Empfohlene Verwendung Nicht für neue Projekte empfohlen. Primär für weniger komplexe Legacy-Integrationen, die Sie nicht migrieren können. Sehr empfehlenswert für die Entwicklung robuster, skalierbarer und ereignisgesteuerter Architekturen, die auf Cloud Storage-Änderungen reagieren.

Gründe für die Migration zu Pub/Sub-Benachrichtigungen

Die Migration von den Legacy-Benachrichtigungen über Objektänderungen zu Pub/Sub für Cloud Storage-Benachrichtigungen ist ein wichtiger Schritt für ein robustes Ereignismanagement. Pub/Sub wird für ereignisgesteuerte Architekturen innerhalb von Google Cloudempfohlen und bietet erhebliche technische und betriebliche Vorteile gegenüber Benachrichtigungen über Objektänderungen.

Die Migration zu Pub/Sub-Benachrichtigungen bietet folgende Vorteile:

  • Zuverlässige Zustellung: Pub/Sub stellt jede veröffentlichte Nachricht mindestens einmal pro Abo zu und sorgt so dafür, dass Ereignisse Ihre Nutzer erreichen. Durch die zuverlässige Übermittlung wird Datenverlust minimiert und die Zuverlässigkeit Ihrer Workflows im Vergleich zum weniger robusten Übermittlungsmodell für Benachrichtigungen über Objektänderungen verbessert.
  • Skalierbarkeit: Pub/Sub-Benachrichtigungen sind für einen hohen Durchsatz konzipiert und können große Mengen von Ereignissen automatisch verarbeiten. Mit Pub/Sub-Benachrichtigungen können Sie Leistungsengpässe vermeiden, die bei Änderungsbenachrichtigungen für Objekte auftreten können, wenn die Datenmenge oder die Ereignishäufigkeit zunimmt.
  • Integration mit Google Cloud -Diensten: Pub/Sub lässt sich nahtlos in mehrere Google Cloud -Dienste einbinden und bietet so Flexibilität beim Erstellen automatisierter Workflows mit Cloud Run Functions, Cloud Run und Dataflow. Außerdem wird die Beobachtbarkeit durch Cloud Logging und Cloud Monitoring verbessert.
  • Granulare Steuerung: Mit Pub/Sub können Sie Nachrichten auf Aboebene filtern. So erhalten Nutzer nur relevante Ereignisse, wodurch unnötige Verarbeitung und unnötiger Netzwerkverkehr reduziert werden.
  • Plattformunterstützung: Pub/Sub-Benachrichtigungen sind der unterstützte Messaging-Dienst. Durch die Migration können Sie eine Technologie verwenden, die fortlaufend verbessert wird, Sicherheitsupdates erhält und über eine umfassende Dokumentation verfügt. Das ist bei den eingestellten Änderungsbenachrichtigungen für Objekte nicht der Fall.

Migrationsschritte

Sowohl Benachrichtigungen über Objektänderungen als auch Pub/Sub-Benachrichtigungen für Cloud Storage können gelegentlich doppelte Nachrichten senden. Daher muss Ihr Code, der die Nachrichten verarbeitet, so konzipiert sein, dass er doppelte Nachrichten sicher verarbeiten kann.

So migrieren Sie von Änderungsbenachrichtigungen für Objekte zu Pub/Sub-Benachrichtigungen:

  1. Verwenden Sie zusätzlich zu Ihren vorhandenen Benachrichtigungen über Objektänderungen Pub/Sub-Benachrichtigungen für Cloud Storage. Informationen zum Konfigurieren von Pub/Sub-Benachrichtigungen finden Sie unter Pub/Sub-Benachrichtigungen für Cloud Storage konfigurieren.

  2. Testen Sie den Workflow für die Verarbeitung von Pub/Sub-Benachrichtigungen Ihrer Anwendung und prüfen Sie, ob er ordnungsgemäß funktioniert. Informationen zum Überwachen von Pub/Sub-Abos finden Sie unter Abos in Pub/Sub überwachen.

  3. Die Verarbeitung von Nachrichten, die über einen Änderungsbenachrichtigungskanal für Objekte empfangen werden, wird beendet. Wenn Sie einen Benachrichtigungskanal beenden möchten, stellen Sie eine stop-Anfrage.

Hinweise zum Pub/Sub-Push-Abo

Pub/Sub-Pull-Abos bieten zwar mehr Flexibilität und Kontrolle, Pub/Sub-Push-Abos ähneln jedoch stark den Änderungsbenachrichtigungen für Objekte. Daher sind Push-Abos ein schnellerer Migrationspfad für Nutzer, die bereits Änderungsbenachrichtigungen für Objekte verwenden. Einen detaillierten Vergleich von Push- und Pull-Abos finden Sie unter Aboart auswählen.

Wenn Sie Push-Abos verwenden und vorhandenen Code für die Benachrichtigungsbearbeitung wiederverwenden möchten, müssen Sie die Unterschiede zwischen den Formaten von Push-Anfragen für Benachrichtigungen zu Objektänderungen und Pub/Sub-Benachrichtigungen sowie die Interpretationen von Antwortcodes berücksichtigen. Die Unterschiede werden in den folgenden Abschnitten beschrieben.

Format der Push-Anfrage

In diesem Abschnitt werden die Unterschiede im Push-Anfrageformat zwischen Änderungsbenachrichtigungen für Objekte und Pub/Sub-Benachrichtigungen beschrieben.

  • Benachrichtigungen über Objektänderungen: Eine Benachrichtigung über Objektänderungen wird als HTTP-POST-Anfrage an die URL Ihrer Anwendung gesendet. Das Format ist wie folgt:

    POST /ApplicationUrlPath
    Accept: * / *
    Content-Length: 1097
    Content-Type: application/json; charset="utf-8"
    Host: ApplicationUrlHost
    X-Goog-Channel-Id: ChannelId
    X-Goog-Channel-Token: ClientToken
    X-Goog-Resource-Id: ResourceId
    X-Goog-Resource-State: ResourceState
    X-Goog-Resource-Uri: https://storage.googleapis.com/storage/v1/b/BucketName/o?alt=json
    
    {
    "kind": "storage#object",
    "id": "BucketName/ObjectName",
    "selfLink": "https://www.googleapis.com/storage/v1/b/BucketName/o/ObjectName",
    "name": "ObjectName",
    "bucket": "BucketName",
    "generation": "1367014943964000",
    "metageneration": "1",
    "contentType": "application/octet-stream",
    "updated": "2013-04-26T22:22:23.832Z",
    "size": "10",
    "md5Hash": "xHZY0QLVuYng2gnOQD90Yw==",
    "mediaLink": "https://content-storage.googleapis.com/storage/v1/b/BucketName/o/ObjectName?generation=1367014943964000&alt=media",
    "owner": {
      "entity": "user-jeffersonloveshiking@gmail.com"
    },
    "crc32c": "C7+82w==",
    "etag": "COD2jMGv6bYCEAE="
    }
    
  • Pub/Sub-Benachrichtigungen: Eine Pub/Sub-Benachrichtigung wird, wenn sie für die Push-Zustellung konfiguriert ist, als HTTP POST-Anfrage zugestellt. Das Feld data enthält die base64-codierte Cloud Storage-Ereignisnutzlast. Wenn das Datenfeld decodiert wird, entspricht es dem Nachrichtentext der Benachrichtigungen über Objektänderungen.

    POST /YourSpecifiedURL
    Accept: * / *
    Content-Length: 1097
    Content-Type: application/json; charset="utf-8"
    Host: ApplicationUrlHost
    {
      "deliveryAttempt": 5,
      "message":
        {"attributes":
          {"notificationConfig":"projects/_/buckets/foo/notificationConfigs/3",
            "eventType": "OBJECT_FINALIZE",
            "payloadFormat": "JSON_API_V1",
            "bucketId": "foo",
            "objectId": "bar",
            "objectGeneration": 123456,
            "eventTime": "2021-01-15T01:30:15.01Z"
          },
        "data": "ewogImtpbm",
        "messageId": "2070443601311540",
        "message_id": "2070443601311540",
        "orderingKey": "key",
        "publishTime": "2021-02-26T19:13:55.749Z",
        "publish_time": "2021-02-26T19:13:55.749Z"
        },
      "subscription": "projects/myproject/subscriptions/mysubscription"
    }
    

Antwortcode

In der folgenden Tabelle werden die Unterschiede bei der Interpretation von Antwortcodes zwischen Änderungsbenachrichtigungen für Objekte und Pub/Sub-Benachrichtigungen beschrieben:

Funktion Antwortcode Interpretation Aktion
Benachrichtigungen über Objektänderungen
102: 200, 201, 202, 204 Erfolg Nachricht verarbeitet
500, 502, 503, 504 Verarbeitung fehlgeschlagen Versuchen Sie es später noch einmal.
Zeitüberschreitungen, fehlgeschlagene Verbindungen, keine Antwort Verarbeitung fehlgeschlagen Versuchen Sie es später noch einmal.
Jeder andere HTTP-Code. Beispiel: 404 Dauerhafter Fehler Nachricht nicht noch einmal senden
Pub/Sub-Benachrichtigungen
102: 200, 201, 202, 204 Erfolg Nachricht bestätigt
Alle anderen Antwortcodes, Zeitüberschreitungen und Verbindungsfehler Fehler Versuchen Sie es später noch einmal.

Nächste Schritte