vango-s3 is the S3-compatible object storage integration for Vango applications.
It implements the upload lifecycle contract described in S3_INTEGRATION_SPEC.md:
CreateUploadIntent(validate constraints + presign PUT + mint signed intent token)- direct or proxied upload to temp key
ClaimUpload(verify token + tenant scope + object constraints + conditional promote)
go get github.com/vango-go/vango-s3store, err := s3store.New(context.Background(), s3store.Config{
Endpoint: os.Getenv("S3_ENDPOINT"),
AccessKeyID: os.Getenv("S3_ACCESS_KEY_ID"),
SecretAccessKey: os.Getenv("S3_SECRET_ACCESS_KEY"),
Bucket: os.Getenv("S3_BUCKET"),
Region: os.Getenv("S3_REGION"),
IntentSecret: os.Getenv("S3_INTENT_SECRET"),
})
if err != nil {
panic(err)
}
defer store.Close()For full API details, behavior contracts, and security notes, use:
S3_INTEGRATION_SPEC.md- package docs in code (
types.go,config.go,test_store.go)
If you customize key roots (TempKeyPrefix / FileKeyPrefix), use the
explicit *WithPrefix key helpers (for example
FinalKeyWithPrefix(...)) so generated keys match claim-time scope checks.
To route lifecycle structured logs (s3_intent_created, s3_claim_attempt,
s3_promote_operation) into your app logger pipeline, set Config.Logger
(otherwise vango-s3 uses slog.Default()).