S3
Read and write objects in an S3-compatible bucket from a Telo manifest. Targets AWS S3 today; the same kinds work against any S3-API-compatible backend (MinIO, R2, etc.) given the right endpoint.
Why use this
- Declarative bucket binding —
S3.Bucketcarries credentials and endpoint config once; everyGet/Put/Listreferences it by name. - Stream-friendly —
S3.Putaccepts byte streams (codecs compose), so large uploads don't buffer in memory. - Listing as a first-class operation —
S3.Listreturns paginated keys for iteration inRun.Sequence. - Provider-agnostic — point
S3.Bucketat any S3-API endpoint and the rest of the manifest doesn't change.
Kinds
| Kind | Purpose |
|---|---|
S3.Bucket | Declare an S3 bucket (endpoint, region, credentials). |
S3.Put | Upload bytes or a stream to a key. |
S3.Get | Fetch an object's bytes by key. |
S3.List | List keys under a prefix. |
S3.Delete | Remove an object by key (idempotent). |
S3.PresignedUrl | Mint a time-limited download or upload link for a key (SigV4 query presigning, no network). |
Example
kind: Telo.Application
metadata: { name: s3-app, version: 1.0.0 }
imports:
S3: std/s3@latest
---
kind: S3.Bucket
metadata: { name: Uploads }
name: my-uploads
region: us-east-1
---
kind: S3.Put
metadata: { name: SaveReport }
bucket: { kind: S3.Bucket, name: Uploads }
key: reports/today.json
body: !cel "resources.GenerateReport.bytes"