Playgrounds / Object storage
Object-storage sandbox
Change a request, predict its result and inspect what remains in the bucket.
This is a local teaching model of selected S3 ideas, not Amazon S3 or an S3 emulator. It makes no network requests and needs no credentials. Your work stays in this tab’s memory and disappears on reload.
Choosing another lesson replaces this practice state with that lesson’s starting point.
The four records
These invented coordinates stay fixed. The query and category filter are yours to change. Distance is the sum of the two squared coordinate differences.
| Passage | Vector | Category |
|---|---|---|
| A | [1, 0] | billing |
| B | [0.8, 0.2] | storage |
| C | [0, 1] | storage |
| D | [-1, 0] | billing |
Request
Run one request at a time. These are playground commands, not AWS CLI syntax. Saved replies use references such as $base.etag.
Running again uses the current state. Restore changes only the editor; Restart restores the whole lesson.
Response
Run the request to see its response.
Raw model response
What to notice
Bucket and application state
This inspector shows the model’s internal state, including changes a caller with a lost reply could not yet know.
Unfinished uploads and application state
Saved successful replies
Request reference and model boundaries
All lessons use one versioning-enabled bucket. Every PUT retains a version; DELETE adds a marker. ETags are content-derived SHA-256 values prefixed with model-, not real S3 ETags. Requests execute sequentially. Unsupported fields are rejected.
| Operation | Fields after op | Result to inspect |
|---|---|---|
| PUT | key, body; optional metadata, ifMatch or ifNoneMatch: "*" | A version, or a rejected precondition |
| GET / LIST | GET: key, optional version. LIST: optional prefix | Body and identity / current names |
| DELETE / DELETE_VERSION | key / key and version | A marker / removal of one version |
| CREATE_UPLOAD | key | An upload ID |
| UPLOAD_PART | upload, part, body | Part ETag |
| COMPLETE_UPLOAD | upload, parts: [{part, etag}]; optional write condition | Selected parts become one object |
| ABORT_UPLOAD | upload | Unfinished work disappears |
| CACHE_GET / TICK | key, optional ttl / seconds | Cached copy / model time |
| APP_CREATE | id, key | A pending application record |
| APP_VALIDATE / APP_PUBLISH / APP_ABANDON | id | Exact-version verification / ready / abandoned |
| PROCESS_EVENT | key, sequence, body; optional stopAfterOutput | Output, completion ledger and latest pointer |
| COST | records, bytesPerRecord, recordsPerObject, scans; optional copies, retryFraction, rates | Full-scan request and byte arithmetic |
| VECTOR_QUERY | query: [x,y]; optional topK, category | Exact distances for four invented records |
saveAs saves a successful reply, such as "saveAs":"base". Later fields can use "$base.etag" or "$base.version". loseReply:true applies a successful operation but withholds its reply; the caller must reconcile. It does not save a response variable.
The model omits IAM, signatures, CORS, network timing, real multipart sizes, checksums, listing pagination, Object Lock, lifecycle scheduling, replication and AWS pricing. Application, cache, cost and vector operations are explicitly local models. It limits text bodies, key counts and history to keep this tab responsive. Use the real-S3 worksheet to test actual service responses.