in util/awsservice/cloudwatchlogs.go [285:303]
func AssertLogSchema(schemaRetriever SchemaRetriever) LogEventValidator {
return func(event types.OutputLogEvent) error {
message := *event.Message
if schemaRetriever == nil {
return errors.New("nil schema retriever")
}
schema, err := schemaRetriever(*event.Message)
if err != nil {
return fmt.Errorf("unable to retrieve schema: %w", err)
}
keyErrors, err := jsonschema.Must(schema).ValidateBytes(context.Background(), []byte(message))
if err != nil {
return fmt.Errorf("failed to execute schema validator: %w", err)
} else if len(keyErrors) > 0 {
return fmt.Errorf("failed schema validation: %v | schema: %s | log: %s", keyErrors, schema, message)
}
return nil
}
}