func AssertLogSchema()

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
	}
}