page:guides:gin:object client

Configure S3-compatible access for Gin

Summary

Object storage client for a Gin app on Ample. Verified on Gin: bucket credentials delivered as encrypted S3_* environment variables and a validated PutObject/GetObject round-trip linked to a database row (upload=ok linked=ok). Build and start: CGO_ENABLED=0 go build -o app ./... then ./app on the ubuntu-24.04 template (go.sum committed for a reproducible build).

Resource Requirements

Infrastructure Requirements

Compute

S3-compatible object storage

Prerequisites

  1. A Gin project (CGO_ENABLED=0 go build -o app ./... then ./app on the ubuntu-24.04 template (go.sum committed for a reproducible build))
  2. A bucket from ample bucket create with credentials passed as encrypted S3_* environment variables
  3. An Ample account token with servers:write, buckets:read

Workflow Steps

Build and start

CGO_ENABLED=0 go build -o app ./... then ./app on the ubuntu-24.04 template (go.sum committed for a reproducible build); the server must bind 0.0.0.0 on PORT.

Create the bucket and pass its credentials

Create it once with ample bucket create, then pass endpoint, region, bucket and keys with --env; use path-style addressing. Command: ample deploy . --name --public --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...

Verify

Fetch the live URL and /p/browser-file-uploads on the example; on failure read the build and runtime logs. Command: ample logs --kind build

Limitations

  1. Verified on the ubuntu-24.04 template at s-1vcpu-1gb; other sizes and Gin major versions are not verified.
  2. Region, compliance attestations and request-duration limits are unknown and not claimed.
  3. PutObject and GetObject with path-style addressing are verified; other S3 operations are not.

Cost Estimate

Components

Evidence Summary

Formats