Wie konfiguriere und teste ich Canvas Live-Ereignisse mit HTTPS-Übertragung?

Canvas Data Services bietet zwei Möglichkeiten für die Datenbereitstellung, die beide für den Empfang der gleichen Gruppe von Live-Ereignissen von Canvas eingesetzt werden: HTTPS-Endpunkt und AWS-SQS-Warteschlange. HTTPS als auch AWS SQS können gleichzeitig ausgeführt werden.

Dieser Artikel beschreibt, wie Sie die HTTPS-Übertragung in Canvas Live-Ereignissen konfigurieren und testen. Erfahren Sie mehr über die SQS-Bereitstellung.

Hinweis: Die Daten von Live-Ereignissen werden in der gleichen Region verarbeitet wie die Canvas-Instanz, von der sie gesendet werden.

Details zur Konfiguration

Sie können eine Funktion von Google Cloud implementieren, um Ereignisse von Canvas zu empfangen und sie in einem Storage-Bucket von Google Cloud zu speichern.

Die folgenden Schritte sind erforderlich, um eingehende Nachrichten zu Canvas Live-Ereignissen über den HTTPS-Endpunkt zu verarbeiten:

  1. Signierte JWT-Payloads sollten auf Ein gesetzt werden.
  2. Die Nachricht über das Ereignis sollte, sobald sie von der Google-Cloud-Funktion empfangen wurde, mit RS256 dekodiert werden.  
  3. Nach der Dekodierung enthält die JWT-Signatur die Eigenschaft „kid“. Diese Eigenschaft sollte mit einem der „kid“-Werte abgeglichen werden, die von dieser öffentlichen URL abgerufen wurden: https://8axpcl50e4.execute-api.us-east-1.amazonaws.com/main/jwks
  4. Transformieren Sie die Nutzdaten und speichern Sie das daraus resultierende Ereignis. Mit anderen Worten, speichern Sie signierte und verschlüsselte Nachrichten nicht zu lange, da die „kid“-Werte irgendwann ablaufen werden. AWS rotiert die Schlüssel einmal im Monat am 30. Der aktuellste „kid“-Wert ist der in der Mitte.

Ereignis-Header

Darüber hinaus gibt es drei Arten von Headern, wenn Canvas ein Ereignis erzeugt:

  1. Header der Anfrage, wenn ein Ereignis in Canvas ausgelöst wird (vorausgesetzt, das Ereignis wurde auf der Grundlage der Anfrage erzeugt). Die Daten aus der Anfrage werden in ein Ereignis-Metadatenobjekt aufgenommen, z. B. Methode, Anfrage-ID, Referrer URl usw.
  2. AWS fügt zusätzliche Daten zu einer Ereignissendung hinzu, wenn es diesen von einem Service an einen anderen weitergibt (z. B. Zeitstempel, wann das Ereignis an SQS übermittelt wurde).
  3. JWT-Standard-Header, diese Daten werden hinzugefügt, wenn wir jedes Ereignis signieren.

Unterschied zwischen HTTPS und AWS SQS

Die über den HTTPS-Endpunkt gelieferten Ereignisse weisen einige zusätzliche Eigenschaften auf. Wenn die von AWS SQS gelieferten Ereignisse über eine AWS-Lambda-Funktion gesammelt werden, besteht die Möglichkeit, die Ereignisse in Stapeln zu schreiben – bis zu 10 Ereignismeldungen auf einmal. Dies führt zu Dateien mit bis zu 10 Ereignismeldungen, im Gegensatz zu den Dateien für Ereignisse, die über den HTTPS-Endpunkt geliefert werden, was zu einer Datei pro Ereignis führt. Mit anderen Worten: Für die gleiche Anzahl von Ereignissen enthält der Ordner für den HTTPS-Endpunkt 10 Mal so viele Dateien wie der Ordner mit den über die SQS-Warteschlange abgerufenen Daten.