// the find
minio/minio-go
MinIO Go client SDK for S3 compatible object storage
The official Go client SDK for MinIO and any S3-compatible storage (AWS, GCS, Cloudflare R2, etc.). It covers the full S3 API surface — bucket operations, multipart uploads, presigned URLs, SSE, lifecycle rules, replication — and is maintained by the MinIO team, so it tracks new MinIO-specific extensions as they ship.
The credentials package is genuinely well thought out: chain-based resolution, IAM role support, STS web identity, and LDAP identity all work without you wiring anything special. Multipart upload is handled transparently in PutObject — you set a threshold and it just works, including resumable uploads via ListIncompleteUploads. The signer package implements both SigV2 and SigV4 with streaming chunked encoding, which matters when talking to non-AWS endpoints that don't tolerate sloppy auth. Test coverage is solid — functional tests, unit tests per API file, and a dedicated 200-OK-with-error test that catches the S3 spec's worst quirk.
Star count (under 3k) is misleadingly low given how widely this is used — it's the reference implementation, not a hobby project — but it does mean the issue tracker moves slowly for non-MinIO bugs. The MinIO-specific extensions (fan-out, snowball, RDMA, annotations, QoS) are mixed in with the standard S3 surface with no clear separation, so you have to read carefully to know what will break against AWS or R2. The functional_tests.go is a single 7000-line file that requires a live server to run, making CI setup non-trivial for contributors. No context-aware streaming backpressure on GetObject — if your consumer is slow, you eat the memory.