Skip to main content

Wasabi Hot Cloud Storage

Wasabi Long Term Storage

Synopsis

Creates a target that writes log messages to Wasabi Hot Cloud Storage with support for various file formats and authentication methods. The target handles large file uploads efficiently with configurable rotation based on size or event count. Wasabi provides high-performance, cost-effective cloud storage with no egress fees and predictable pricing.

Schema

- name: <string>
description: <string>
type: wasabis3
pipelines: <pipeline[]>
status: <boolean>
properties:
key: <string>
secret: <string>
region: <string>
endpoint: <string>
part_size: <numeric>
bucket: <string>
buckets:
- bucket: <string>
name: <string>
format: <string>
compression: <string>
extension: <string>
schema: <string>
name: <string>
format: <string>
compression: <string>
extension: <string>
schema: <string>
max_size: <numeric>
batch_size: <numeric>
timeout: <numeric>
field_format: <string>
interval: <string|numeric>
cron: <string>
debug:
status: <boolean>
dont_send_logs: <boolean>

Configuration

The following fields are used to define the target:

FieldRequiredDefaultDescription
nameYTarget name
descriptionN-Optional description
typeYMust be wasabis3
pipelinesN-Optional post-processor pipelines
statusNtrueEnable/disable the target

Wasabi Hot Cloud Storage Credentials

FieldRequiredDefaultDescription
keyY-Wasabi access key ID
secretY-Wasabi secret access key
regionY-Wasabi region (e.g., us-east-1, eu-central-1, ap-northeast-1)
endpointY-Wasabi endpoint URL (format: https://s3.<region>.wasabisys.com)

Connection

FieldRequiredDefaultDescription
part_sizeN5Multipart upload part size in megabytes (minimum 5MB)
timeoutN30Connection timeout in seconds
field_formatN-Data normalization format. See applicable Normalization section

Files

FieldRequiredDefaultDescription
bucketN*-Default Wasabi bucket name (used if buckets not specified)
bucketsN*-Array of bucket configurations for file distribution
buckets.bucketY-Wasabi bucket name
buckets.nameY-File name template
buckets.formatN"json"Output format: json, multijson, avro, parquet
buckets.compressionN-Compression algorithm. See Compression below
buckets.extensionNMatches formatFile extension override
buckets.schemaN*-Schema definition file path (required for Avro and Parquet formats)
nameN"vmetric.{{.Timestamp}}.{{.Extension}}"Default file name template when buckets not used
formatN"json"Default output format when buckets not used
compressionN-Default compression when buckets not used
extensionNMatches formatDefault file extension when buckets not used
schemaN-Default schema path when buckets not used
max_sizeN0Maximum file size in bytes before rotation
batch_sizeN100000Maximum number of messages per file

* = Either bucket or buckets must be specified. When using buckets, schema is conditionally required for Avro and Parquet formats.

note

When max_size is reached, the current file is uploaded to Wasabi and a new file is created. For unlimited file size, set the field to 0.

Scheduler

FieldRequiredDefaultDescription
intervalNrealtimeExecution frequency. See Interval for details
cronN-Cron expression for scheduled execution. See Cron for details

Debug Options

FieldRequiredDefaultDescription
debug.statusNfalseEnable debug logging
debug.dont_send_logsNfalseProcess logs but don't send to target (testing)

Details

The Wasabi Hot Cloud Storage target provides high-performance cloud storage integration with comprehensive file format support. Wasabi is designed as a cost-effective alternative to traditional cloud storage with 80% lower pricing, no egress fees, and no API charges.

Authentication

Requires Wasabi access credentials. Access keys can be created through the Wasabi Console under Access Keys. Sub-users can be created with specific permissions and bucket access for enhanced security.

Endpoint Configuration

The endpoint URL follows the pattern https://s3.<region>.wasabisys.com where <region> is your chosen Wasabi region identifier. Each bucket is associated with a specific region.

Available Regions

Wasabi Hot Cloud Storage is available in the following regions worldwide:

Region CodeLocation
us-east-1US East (N. Virginia)
us-east-2US East (N. Virginia)
us-central-1US Central (Texas)
us-west-1US West (Oregon)
eu-central-1Europe (Amsterdam)
eu-central-2Europe (Frankfurt)
eu-west-1Europe (London)
eu-west-2Europe (Paris)
ap-northeast-1Asia Pacific (Tokyo)
ap-northeast-2Asia Pacific (Osaka)
ap-southeast-1Asia Pacific (Singapore)
ap-southeast-2Asia Pacific (Sydney)
ca-central-1Canada (Toronto)
Loading include...
Loading include...

Templates

The following template variables can be used in file names:

VariableDescriptionExample
{{.Year}}Current year2024
{{.Month}}Current month01
{{.Day}}Current day15
{{.Timestamp}}Current timestamp in nanoseconds1703688533123456789
{{.Format}}File formatjson
{{.Extension}}File extensionjson
{{.Compression}}Compression typezstd
{{.TargetName}}Target namemy_logs
{{.TargetType}}Target typewasabis3
{{.Table}}Bucket namelogs

Multipart Upload

Large files automatically use multipart upload protocol with configurable part size (part_size parameter). Default 5MB part size balances upload efficiency and memory usage.

Multiple Buckets

Single target can write to multiple Wasabi buckets with different configurations, enabling data distribution strategies (e.g., raw data to one bucket, processed data to another).

Schema Requirements

Avro and Parquet formats require schema definition files. Schema files must be accessible at the path specified in the schema parameter during target initialization.

Examples

Basic Configuration

The minimum configuration for a JSON Wasabi target:

targets:
- name: basic_wasabi
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "us-east-1"
endpoint: "https://s3.us-east-1.wasabisys.com"
bucket: "datastream-logs"

Multiple Buckets

Configuration for distributing data across multiple Wasabi buckets with different formats:

targets:
- name: multi_bucket_export
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "eu-central-1"
endpoint: "https://s3.eu-central-1.wasabisys.com"
buckets:
- bucket: "raw-data-archive"
name: "raw-{{.Year}}-{{.Month}}-{{.Day}}.json"
format: "multijson"
compression: "gzip"
- bucket: "analytics-data"
name: "analytics-{{.Year}}/{{.Month}}/{{.Day}}/data_{{.Timestamp}}.parquet"
format: "parquet"
schema: "<schema definition>"
compression: "snappy"

Multiple Buckets with Catch-All

Configuration for routing different log types to specific buckets with a catch-all for unmatched logs:

targets:
- name: multi_bucket_routing
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "us-east-1"
endpoint: "https://s3.us-east-1.wasabisys.com"
buckets:
- bucket: "security-logs"
name: "security-{{.Year}}-{{.Month}}-{{.Day}}.json"
format: "json"
- bucket: "application-logs"
name: "app-{{.Year}}-{{.Month}}-{{.Day}}.json"
format: "json"
bucket: "general-logs"
name: "general-{{.Timestamp}}.json"
format: "json"

Parquet Format

Configuration for daily partitioned Parquet files:

targets:
- name: parquet_analytics
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "ap-northeast-1"
endpoint: "https://s3.ap-northeast-1.wasabisys.com"
bucket: "analytics-lake"
name: "events/year={{.Year}}/month={{.Month}}/day={{.Day}}/part-{{.Timestamp}}.parquet"
format: "parquet"
schema: "<schema definition>"
compression: "snappy"
max_size: 536870912

High Reliability

Configuration with enhanced settings:

targets:
- name: reliable_wasabi
type: wasabis3
pipelines:
- checkpoint
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "us-west-1"
endpoint: "https://s3.us-west-1.wasabisys.com"
bucket: "critical-logs"
name: "logs-{{.Timestamp}}.json"
format: "json"
timeout: 60
part_size: 10

With Field Normalization

Using field normalization for standard format:

targets:
- name: normalized_wasabi
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "ap-southeast-1"
endpoint: "https://s3.ap-southeast-1.wasabisys.com"
bucket: "normalized-logs"
name: "logs-{{.Timestamp}}.json"
format: "json"
field_format: "cim"

Debug Configuration

Configuration with debugging enabled:

targets:
- name: debug_wasabi
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "us-east-2"
endpoint: "https://s3.us-east-2.wasabisys.com"
bucket: "test-logs"
name: "test-{{.Timestamp}}.json"
format: "json"
debug:
status: true
dont_send_logs: true

Cost-Optimized Archive

Configuration optimized for long-term storage with maximum cost efficiency:

targets:
- name: archive_wasabi
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "eu-west-1"
endpoint: "https://s3.eu-west-1.wasabisys.com"
bucket: "log-archive"
name: "archive/{{.Year}}/{{.Month}}/logs-{{.Day}}.json"
format: "json"
compression: "zstd"
max_size: 1073741824

High-Volume Data Lake

Configuration for high-volume analytics data lake:

targets:
- name: data_lake_wasabi
type: wasabis3
properties:
key: "ABCDEFGHIJKLMNOPQRST"
secret: "abcdefghijklmnopqrstuvwxyz0123456789ABCD"
region: "us-central-1"
endpoint: "https://s3.us-central-1.wasabisys.com"
bucket: "enterprise-datalake"
name: "data/year={{.Year}}/month={{.Month}}/day={{.Day}}/hour={{.Hour}}/{{.Timestamp}}.parquet"
format: "parquet"
schema: "<schema definition>"
compression: "snappy"
batch_size: 500000
max_size: 2147483648