page:guides:fastify:object client

Configure S3-compatible access for Fastify

Summary

Object storage client for a Fastify app on Ample. Verified on Fastify: 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: npm install, npm run build --if-present, npm run start on the node-22 template.

Resource Requirements

Infrastructure Requirements

  1. Compute
    • Status: verified
    • Summary: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
    • Path: /discover/primitive/compute
  2. S3-compatible object storage
    • Status: verified
    • Summary: Buckets are S3-compatible with issued credentials; PutObject and GetObject are verified by canary. Other S3 operations are not verified.
    • Path: /discover/primitive/s3-compatible-object-storage

Prerequisites

Workflow Steps

  1. Build and start
    npm install, npm run build --if-present, npm run start on the node-22 template; the server must bind 0.0.0.0 on PORT.

  2. 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=...

  3. 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

Examples

Fastify pattern fixture

Success Checks

  1. App responds on its public URL
    Kind: http_get, Path: /, Expect: ample canary fastify patterns

  2. Browser-file-uploads check from the example
    Kind: http_get, Path: /p/browser-file-uploads, Expect: see the pattern fixture checks

Limitations

Cost Estimate

Evidence Summary

Formats

Next Actions

  1. Browse the catalog index
    Action ID: browse-catalog, Method: GET
  2. Search published recipes by intent, stack and constraints
    Action ID: search-recipes, Method: POST
  3. Prepare a side-effect-free deployment plan for an authorized project
    Action ID: plan:page:guides:fastify:object-client, Method: POST
  4. Read the existing agent authentication setup
    Action ID: auth-setup, Method: GET
  5. Browse Fastify
    Action ID: browse:stack:framework-fastify, Method: GET
  6. Browse Connect app to storage
    Action ID: browse:intent:connect-app-to-storage, Method: GET
  7. Browse Browser file uploads
    Action ID: browse:pattern:browser-file-uploads, Method: GET