Hoe configureer en test ik Canvas Live Events met HTTPS-levering?

Canvas Data Services biedt twee keuzes voor het leveren van gegevens, beide geïmplementeerd om dezelfde set Live Evenementen van Canvas te ontvangen: HTTPS-eindpunt en AWS SQS-wachtrij. HTTPS en AWS SQS kunnen gelijktijdig worden uitgevoerd.

Dit artikel bespreekt hoe de HTTPS-levering in Canvas Live Evenementen te configureren en te testen. Meer informatie over SQS-levering.

Opmerking: Gegevens van live evenementen worden in dezelfde regio verwerkt als waar de Canvas-instantie waarvandaan deze worden verzonden zich bevindt.

Configuratiegegevens

U kunt een Google Cloud Function implementeren om evenementen van Canvas te ontvangen en ze op te slaan in een Google Cloud Storage bucket.

De volgende stappen zijn nodig om inkomende Canvas Live Evenement-berichten te verwerken via het HTTPS-eindpunt:

  1. Ondertekende JWT-Payloads moeten worden ingesteld op Aan
  2. Het Evenement-bericht moet na ontvangst door de Google Cloud Function worden gedecodeerd met RS256.  
  3. Zodra gedecodeerd bevat de JWT-handtekening een "kid"-eigenschap. Deze eigenschap moet worden vergeleken met een van de "kid"-waarden die zijn opgehaald uit deze openbare URL: https://8axpcl50e4.execute-api.us-east-1.amazonaws.com/main/jwks
  4. Transformeer de payload en sla het resulterende evenement op. Met andere woorden, sla ondertekende en gecodeerde berichten niet te lang op; de "kid"-waarden zullen uiteindelijk verlopen. AWS roteert sleutels eens per maand, op de 30e. De meest recente "kid" is die in het midden.

Koppen van evenementen

Daarnaast zijn er drie soorten koppen wanneer Canvas een evenement genereert:

  1. Aanvraagheader wanneer de gebeurtenis wordt getriggerd in Canvas (ervan uitgaande dat het evenement is gegenereerd op basis van de aanvraag). De gegevens van de aanvraag worden in een een metadata-object van het evenement gezet, bijvoorbeeld methode, aanvraag-id, verwijzer-URl, enzovoorts.
  2. AWS voegt extra gegevens toe aan een evenement-envelop wanneer het deze doorgeeft van de ene service naar de andere (bijvoorbeeld tijdstempel wanneer het evenement is aan SQS is geleverd).
  3. JWT-standaardkop, deze gegevens worden toegevoegd bij de ondertekening van elk evenement.

Verschil tussen HTTPS en AWS SQS

Evenementen die via een HTTPS-eindpunt zijn geleverd hebben een aantal extra eigenschappen. Wanneer via AWS SQS geleverde evenementen worden verzameld via een AWS lambda-functie, bestaat er de mogelijkheid om de evenementen in batches te schrijven - tot 10 evenementberichten per keer. Dit resulteert in bestanden die tot 10 evenementberichten bevatten. Dit in tegenstelling tot bestanden voor evenementen die geleverd worden via het HTTPS-eindpunt. Deze resulteren in één bestand per evenement. Met andere woorden, voor dezelfde set evenementen zal de map voor het HTTPS-eindpunt 10 keer zoveel bestanden bevatten als de map met gegevens die opgehaald zijn via de SQS-wachtrij.