From 014cfec36458ed95dc756ac090d3448886808ec6 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sun, 1 Nov 2026 17:24:57 -0800 Subject: [PATCH] S3 Vectors: the request body limit is 10 MiB Requests signed for s3vectors have at most 10 MiB of their body hashed for the signature check, so a larger body fails authentication. Checked with 19.6, 25.4 and 33.2 MiB PutVectors bodies. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_011UpvafvK8JpagF94MHWqwK --- S3-Vector-Bucket.md | 4 ++-- S3-Vectors-API.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/S3-Vector-Bucket.md b/S3-Vector-Bucket.md index 08b740b..ef1728f 100644 --- a/S3-Vector-Bucket.md +++ b/S3-Vector-Bucket.md @@ -220,7 +220,7 @@ neuromancer 0.01 {'genre': 'scifi', 'pages': 271, 'summary': 'Cyberspace heist.' | `ListVectors` page | 500 by default, `maxResults` up to 1000 | | `ListVectors` segments | up to 16 | | `ListVectorBuckets` / `ListIndexes` `maxResults` | up to 500 | -| Request body | 32 MiB | +| Request body | 10 MiB | Bucket names are 3 to 63 lowercase letters, digits and hyphens, starting and ending with a letter or digit. Index names use lowercase letters, digits, `-` and `_`, and start with a letter or digit. See [[S3 Vectors API]] for the details. @@ -289,7 +289,7 @@ S3 Vectors: discovered weed-vector at 127.0.0.1:8080 via master 172.17.0.3:9333 | The same, with `500 Internal Server Error for url (http://localhost:8888/lance/v1/table/...)` | `--namespace` was left at its default; point it at the Lance port, e.g. `http://localhost:9101`. | | The same, with `Failed to get AWS credentials: CredentialsNotLoaded` | The engine has no storage credential at all (seen on a SeaweedFS without identities). | | `weed-vector` exits with `Address already in use (os error 98)` | The `--listen` port is taken; see the port clash note above. | -| `PutVectors` fails with `403 AccessDenied: authentication failed` although the credential is right | The request body is over 32 MiB. Send fewer vectors per call. | +| `PutVectors` fails with `403 AccessDenied: authentication failed` although the credential is right | The request body is over 10 MiB. Send fewer vectors per call. | | A plain HTTP request to `/ListVectorBuckets` gets `405` | Only requests signed for the `s3vectors` service reach the vectors API. Use an AWS CLI or SDK `s3vectors` client. | A failed `CreateIndex` leaves no index behind, so it is safe to retry once the engine is fixed. diff --git a/S3-Vectors-API.md b/S3-Vectors-API.md index e398a1f..50045ba 100644 --- a/S3-Vectors-API.md +++ b/S3-Vectors-API.md @@ -65,7 +65,7 @@ s3v.put_vectors(vectorBucketName="media", indexName="movies", vectors=[ * **A batch is all or nothing**: 1 to 500 vectors, and if any vector has the wrong dimension, or a key appears twice in the batch, the whole request fails with `ValidationException` and nothing is written. * **Metadata** is any JSON object: strings, numbers, booleans, arrays and nested objects come back unchanged. Keys may contain characters such as `'`. * **`DeleteVectors`** takes 1 to 500 keys. -* The request body is limited to 32 MiB. A larger `PutVectors` is refused with `403 AccessDenied: authentication failed`, not with a size error. 500 vectors of 4096 dimensions fit (a 9.8 MiB body in our test). +* The request body is limited to 10 MiB. A larger request is refused with `403 AccessDenied: authentication failed`, not with a size error. In our test 500 vectors of 4096 dimensions made a 9.8 MiB body, which was accepted; the same vectors written with more digits per value made a 19.6 MiB body, which was refused. ## Reading vectors