page:guides:spring boot:object client
Configure S3-compatible access for Spring Boot
Summary
Object storage client for a Spring Boot app on Ample. Verified on Spring Boot: 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: ./mvnw -q -DskipTests package (or the Gradle wrapper) producing one application jar, then java -jar on the jvm-21 template (Temurin JDK 21) with server.port read from PORT.
Representative Queries
- Configure S3-compatible access for Spring Boot
- Where can I host Configure S3-compatible access built with Spring Boot?
- I need exact S3 endpoint, credentials, operation requirements and an upload/download verification.
Resource Requirements
- primitive:compute
- primitive:s3-compatible-object-storage
Infrastructure Requirements
- Compute: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
- S3-compatible object storage: Buckets are S3-compatible with issued credentials; PutObject and GetObject are verified by canary. Other S3 operations are not verified.
Prerequisites
- A Spring Boot project (
./mvnw -q -DskipTests package(or the Gradle wrapper) producing one application jar, thenjava -jaron the jvm-21 template (Temurin JDK 21) with server.port read from PORT) - A bucket from
ample bucket createwith credentials passed as encrypted S3_* environment variables - An Ample account token with
servers:write,buckets:read
Workflow Steps
- Build and start:
./mvnw -q -DskipTests package(or the Gradle wrapper) producing one application jar, thenjava -jaron the jvm-21 template (Temurin JDK 21) with server.port read from PORT; 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 <name> --public --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...
- Command:
- Verify: Fetch the live URL and
/p/browser-file-uploadson the example; on failure read the build and runtime logs.- Command:
ample logs <your_log_flags> --kind build
- Command:
Examples
- Spring Boot pattern fixture: Verified object storage client on Spring Boot.
Success Checks
- App responds on its public URL: HTTP GET
/should expectample canary spring boot patterns. - browser-file-uploads check from the example: HTTP GET
/p/browser-file-uploadsshould expect to see the pattern fixture checks.
Limitations
- Verified on the jvm-21 template at s-1vcpu-2gb; other sizes and Spring Boot major versions are not verified.
- Region, compliance attestations and request-duration limits are unknown and not claimed.
- PutObject and GetObject with path-style addressing are verified; other S3 operations are not.
Cost Estimate
- Currency: USD
- Monthly Amount: 5.0
- Basis: size prices from pricing.toml (loaded by the API) at build revision 1ac5595375130d45290090e82ed0f554ccd45405-dirty
- Components:
- App server: s-1vcpu-1gb (quantity: 1.0, monthlyAmount: 5.0)
- Note: Always-on monthly price of the tested sizes; apps auto-pause when idle. Buckets are allocation-priced per quota and not included.
Last Verified At
2026-09-21T02:34:39Z
Formats
Next Actions
- Browse the catalog index: Operation: GET
/v1/catalog - Search published recipes: Operation: POST
/v1/catalog/search - Prepare a deployment plan: Operation: POST
/v1/catalog/plan