O Canvas Data Services oferece duas opções para entrega de dados, ambas implantadas para receber o mesmo conjunto de eventos ao vivo do Canvas: endpoint HTTPS e fila AWS SQS. Tanto o HTTPS quanto o AWS SQS podem ser executados simultaneamente.
Este artigo aborda como configurar e testar a entrega HTTPS em eventos ao vivo do Canvas. Saiba mais sobre a entrega via SQS .
Observação: os dados de eventos ao vivo são processados na mesma região da instância do Canvas da qual são emitidos.
Detalhes da configuração
Você pode implementar uma Função do Google Cloud para receber eventos do Canvas e armazená-los em um bucket do Google Cloud Storage.
Os seguintes passos são necessários para processar mensagens de eventos ao vivo do Canvas recebidas através do endpoint HTTPS:
- As cargas úteis JWT assinadas devem ser definidas como Ativadas.
- A mensagem do evento, uma vez recebida pela Função do Google Cloud, deve ser decodificada usando RS256.
- Após decodificada, a assinatura JWT conterá uma propriedade "kid". Essa propriedade deve ser comparada com um dos valores "kid" obtidos neste URL público: https://8axpcl50e4.execute-api.us-east-1.amazonaws.com/main/jwks
- Transforme a carga útil e armazene o evento resultante. Em outras palavras, não armazene mensagens assinadas e codificadas por muito tempo, pois os valores "kid" eventualmente expirarão. A AWS rotaciona as chaves uma vez por mês, no dia 30. O "kid" mais recente é o do meio.
Além disso, existem três tipos de cabeçalhos quando o Canvas gera um evento:
- Cabeçalho da requisição quando um evento é acionado no Canvas (presumindo que o evento foi gerado com base na requisição). Os dados da requisição são inseridos em um objeto de metadados do evento, como método, ID da requisição, URL de referência, etc.
- A AWS adiciona dados adicionais a um envelope de evento quando o passa de um serviço para outro (por exemplo, o carimbo de data/hora em que o evento foi entregue ao SQS).
- Cabeçalho padrão JWT; esses dados são adicionados quando assinamos cada evento.
Diferença entre HTTPS e AWS SQS
Os eventos entregues pelo endpoint HTTPS possuem algumas propriedades adicionais. Quando os eventos entregues pelo AWS SQS são coletados por meio de uma função AWS Lambda, existe a possibilidade de gravá-los em lotes — até 10 mensagens de evento por vez. Isso resulta em arquivos com até 10 mensagens de evento, em comparação com os arquivos para eventos entregues pelo endpoint HTTPS, que terão um arquivo por evento. Em outras palavras, para o mesmo conjunto de eventos, a pasta do endpoint HTTPS terá 10 vezes mais arquivos do que a pasta contendo os dados recuperados pela fila do SQS.