page:guides:nuxt:object client
Configure S3-compatible access for Nuxt
Summary
Object storage client for a Nuxt app on Ample. Verified on Nuxt: 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: nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template.
Prerequisites
- A Nuxt project (nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template)
- A bucket from
ample bucket createwith credentials passed as encrypted S3_* environment variables - An Ample account token with servers:write, buckets:read
Workload
Build and start
nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template; the server must bind 0.0.0.0 on PORT.
Create the bucket and pass its credentials
ample deploy . --name --public --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...
Verify
ample logs --kind build
Limitations
- Verified on the node-22 template at s-1vcpu-1gb; other sizes and Nuxt 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.
Success Checks
- App responds on its public URL: ample canary nuxt patterns
- Browser-file-uploads check from the example: see the pattern fixture checks
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: Size: s-1vcpu-1gb, Quantity: 1.0, Monthly Amount: 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.
Evidence Summary
- Kind: canary_run
- Summary: Nuxt pattern fixture deployed on Ample (nuxt build then node .output/server/index.mjs (reads HOST and PORT) on the node-22 template); for this guide: bucket credentials delivered as encrypted S3_* environment variables and a validated PutObject/GetObject round-trip linked to a database row (upload=ok linked=ok).
- Observed At: 2026-09-20T03:31:44Z
- Implementation Revision: 03b6402b1b3e19178985f08ea4033804521d85d4-dirty (CLI b75e104)
- Expires At: 2027-03-19T03:31:44Z
Next Actions
- Browse the catalog index: GET /v1/catalog
- Search published recipes by intent, stack, and constraints: POST /v1/catalog/search
- Prepare a side-effect-free deployment plan for an authorized project: POST /v1/catalog/plan
- Read the existing agent authentication setup: GET /mcp/setup
- Browse Nuxt: GET /v1/catalog/nodes/stack%3Aframework-nuxt
- Browse Connect app to storage: GET /v1/catalog/nodes/intent%3Aconnect-app-to-storage
- Browse Browser file uploads: GET /v1/catalog/nodes/pattern%3Abrowser-file-uploads
Tested Configuration
- Template: node-22
- Runtime: node
- Size: s-1vcpu-1gb
- Install: npm install
- Build: npm run build --if-present
- Start: npm run start