MinIO S3

MinIO file producer using S3 cloud or local hosted buckets

Overview

S3 support is provided using the MinIO Publisher Transport. Processed event data is saved as files in the MinIO, a high-performance, S3-compatible object storage system.

This setup supports cloud or local MinIO storage and uses predefined file formats for each bucket. Configurable options include:

  1. Custom schemas

  2. Batch size

  3. Object naming formats

  4. Retries

making Joule's application with MinIO suitable for scalable data storage solutions.

Driver details: io.minio:minio:8.5.4

Examples & DSL attributes

The example configures a MinIOPublisher to save event data in a local S3-compatible bucket named marketdata.

Files are stored under the stocks object using a schema defined in marketDataSchema.avsc and are organised by date format. The file format is provided in AVRO.

minioPublisher:
  name: "marketdata-S3Publisher"

  connection:
    endpoint: "https://localhost"
    port: 9000
    credentials:
      access key: "XXXXXX"
      secret key: "YYYYYYYYYYYYYYY"

  bucket:
    bucketId: "marketdata"
    object name: "stocks"
    date format: "yyyyMMdd/HH"
    versioning: ENABLED
    retries: 3

  serializer:
    formatter:
      parquet formatter:
        schema: "./avro/marketDataSchema.avsc"
        temp directory: "./tmp"

  batchSize: 500000  

Attributes schema

Connection attributes schema

Credentials attributes schema

For non-production use cases the access/secret keys can be used to prove data ingestion functionality. When migrating to a production environment implement a provider plugin using the provided JouleProviderPlugin interface, see basic example below.

JouleProviderPlugin interface

The JWTCredentialsProvider implements the JouleProviderPlugin interface, providing methods for initialisation, validation and setting properties, but with no functionality implemented in this case.

It's a template for custom credential providers.

public class JWTCredentialsProvider implements JouleProviderPlugin {
    @Override
    public Provider getProvider() {
        return null;
    }

    @Override
    public void initialize() throws CustomPluginException {
    }

    @Override
    public void validate() throws InvalidSpecificationException {
    }

    @Override
    public void setProperties(Properties properties) {
    }
}

Bucket attributes schema

Additional resources

Last updated