diff options
| author | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2026-07-08 15:01:05 -0700 |
|---|---|---|
| committer | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2026-07-08 15:01:05 -0700 |
| commit | 4bd4c14daff4cb8807a91305239cae1e8544f276 (patch) | |
| tree | 37de49c06efa627748f0581f6531b35f28485158 /go.mod | |
| parent | 52eb3389f074e8ac28fa1eae90847fb7536acdd8 (diff) | |
Add Cloudflare R2 file library storage backend
Implement R2FileStore, a FileStore backed by Cloudflare R2 via its
S3-compatible API, selectable with --file-store r2 and configured through
R2_* environment variables.
The store follows the MemFileStore model: a flat keyspace where directories
are derived from key prefixes, with zero-byte marker objects so empty folders
persist, and errors.ErrUnsupported for symlink/alias operations. Because R2
has no append, in-progress .incomplete uploads are routed to a local staging
directory (real O_APPEND and size-based resume) and promoted to a finished R2
object on the terminal upload-commit Rename; all other paths live in R2.
A narrow s3API seam plus an s3Uploader interface make the backend unit-testable
against an in-memory fake without a network. Adds a user setup guide at
docs/r2-file-store.md.
Diffstat (limited to 'go.mod')
| -rw-r--r-- | go.mod | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -4,6 +4,12 @@ go 1.25.4 require ( github.com/alicebob/miniredis/v2 v2.35.0 + github.com/aws/aws-sdk-go-v2 v1.42.1 + github.com/aws/aws-sdk-go-v2/config v1.32.28 + github.com/aws/aws-sdk-go-v2/credentials v1.19.27 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.31 + github.com/aws/aws-sdk-go-v2/service/s3 v1.105.0 + github.com/aws/smithy-go v1.27.3 github.com/go-playground/validator/v10 v10.28.0 github.com/oleksandr/bonjour v0.0.0-20210301155756-30f43c61b915 github.com/redis/go-redis/v9 v9.17.0 @@ -16,6 +22,19 @@ require ( ) require ( + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.14 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.30 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.31 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.13 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.23 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.30 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.31 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.3.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.32.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.37.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.44.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect |