A zero-dependency Go library for AWS S3 and compatible services using REST API with V4 signing.
SimpleS3 is a Go library for interacting with AWS S3 and S3-compatible object storage services using REST API calls with AWS Signature Version 4 signing. It provides a lightweight alternative to the official AWS SDK, offering a complete set of S3 operations with zero external dependencies. The library solves the need for a minimal, idiomatic Go interface to S3 that avoids the bloat and complexity of larger SDKs.
Go developers building applications that require interaction with AWS S3 or S3-compatible storage services, particularly those who prioritize minimal dependencies and clean APIs.
Developers choose SimpleS3 for its zero-dependency design, idiomatic Go API, and comprehensive feature set that matches the official SDK without the overhead. It's particularly valuable for projects that need to work with multiple S3-compatible services or require tight control over their dependency graph.
Simple no frills AWS S3 Golang Library using REST with V4 Signing (without AWS Go SDK)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses only the Go standard library, reducing binary size and eliminating dependency conflicts, as highlighted in the README's key features.
Supports all essential actions like upload, download, delete, list, and multipart uploads with clear examples for each in the API reference.
Easily integrates with MinIO, DigitalOcean Spaces, and other services via the SetEndpoint method, demonstrated in the custom endpoints section.
Offers iterator-based ListAll for Go 1.23+, enabling handling of large buckets without loading all objects into memory, as detailed in the list objects section.
Provides a high-level API for large files with parallel uploads, progress tracking, and resumability, thoroughly explained in the multipart upload documentation.
Focuses on core S3 operations, missing advanced AWS features like S3 Select, Glacier transitions, or event notifications that the official SDK includes.
Requires explicit handling of access keys and secrets, lacking the AWS SDK's automatic credential chain support for environments like AWS profiles or containers.
Development setup involves running a local MinIO instance for comprehensive testing, adding steps compared to simpler mocking or cloud-based testing approaches.
Some features, such as iterator-based listing, require Go 1.23+, which may limit compatibility with projects using older Go versions.