Skip to content

Does tiny-oss natively support object storage systems compatible with the S3 protocol? #58

Closed

Description

@Alex1990

Some common open object storages:

Activity

  1. github-actions commented on Sep 18, 2026

    @github-actions
    Contributor

    Yes — via the tiny-oss/aws entry. RustFS and Ceph RGW both speak the S3 API with AWS Signature Version 4, which is exactly what that entry implements. No provider-specific entry is needed: point endpoint at the store and set pathStyle: true (these stores address buckets in the URL path, like the official SDK's forcePathStyle).

    import { put } from 'tiny-oss/aws';
    
    await put(
      {
        accessKeyId: '...',
        accessKeySecret: '...',
        region: 'us-east-1',        // match the store's configured signing region
        bucket: 'my-bucket',
        endpoint: 's3.example.com', // no protocol prefix
        secure: true,               // false for plain-HTTP local deployments
        pathStyle: true,
      },
      'hello-world',
      blob,
    );

    This is the documented, tested path — see README § S3-compatible stores (MinIO, Cloudflare R2, Google Cloud Storage, …). The endpoint overrides the amazonaws.com default (src/aws/host.ts) and pathStyle puts the bucket in the URL path (src/aws/request.ts), so every operation (put, multipart, list, copy, signed URLs) works unchanged.

    Store notes:

    • RustFS — S3 API is SigV4 and supports path-style addressing.
    • Ceph RGW — SigV4 (AWS4-HMAC-SHA256); use the RGW endpoint with pathStyle: true to avoid DNS-style bucket subdomains.

    Closing as answered. If you'd like RustFS/Ceph named explicitly in the README examples, reopen or file a small docs issue — the general mechanism already covers them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions