Skip to main content
Version: 0.4 (Latest)

S3-Compatible Storage

All S3-compatible providers use ds_type: "s3". Provider differentiation is handled through endpoint_url in the AWS profile.

Supported providers: Amazon S3, OVH S3, MinIO, Wasabi, DigitalOcean Spaces, Backblaze B2, and any S3-compatible object storage.

Configuration​

Uses ~/.aws/config and ~/.aws/credentials:

{
"s3_01": {
"ds_type": "s3",
"auth_mode": "profile",
"info": {
"directory": "s3://your-bucket-name/lakexpress/exports",
"profile": "your-aws-profile"
}
}
}

~/.aws/config:

[profile your-aws-profile]
region = us-east-1

~/.aws/credentials:

[your-aws-profile]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
FieldRequiredDescription
ds_typeYesMust be "s3"
auth_modeYesMust be "profile"
directoryYesFull S3 URL (e.g., s3://bucket/path)
profileYesAWS profile name from ~/.aws/credentials

Usage​

# AWS S3
./LakeXpress config create -a credentials.json --lxdb_auth_id lxdb_mssql \
--source_db_auth_id source_postgres \
--target_storage_id s3_01

# OVH S3
./LakeXpress config create -a credentials.json --lxdb_auth_id lxdb_mssql \
--source_db_auth_id source_postgres \
--target_storage_id s3_02

# MinIO
./LakeXpress config create -a credentials.json --lxdb_auth_id lxdb_mssql \
--source_db_auth_id source_postgres \
--target_storage_id s3_03

Path Structure​

s3://bucket-name/base_path/schema_name/table_name/part-00000.parquet

With --sub_path:

s3://bucket-name/base_path/sub_path/schema_name/table_name/part-00000.parquet

Required IAM Permissions (AWS S3)​

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-bucket-name/*",
"arn:aws:s3:::your-bucket-name"
]
}
]
}

Backward Compatibility​

Custom storage types ending in _s3 (e.g., minio_s3, custom_s3) still work, but ds_type: "s3" is preferred.

Troubleshooting​

ProblemSolution
Access denied / credential errorsVerify credentials: aws s3 ls s3://your-bucket --profile your-profile. Check IAM includes s3:PutObject. Verify region.
Slow uploadsEnable S3 Transfer Acceleration. Use S3 in the same region as your source database.
Copyright © 2026 Architecture & Performance.