Chapter 114 · Storing And Querying Vectors
Subchapter 114.1
references/limits-and-patterns.mdMarkdown3 KBView on GitHub
For current limits: search AWS docs for "S3 Vectors limitations and restrictions"
Use S3 Vectors for large, long-term vector data that doesn’t require the high-throughput performance of in-memory vector databases. S3 Vectors provides a cost-optimized data foundation with query performance optimized for long-term storage and infrequent access of data. You also benefit from a storage architecture with strong consistency guarantees, ensuring subsequent queries always include your most recently added data.
S3 Vectors delivers subsecond latency for infrequent queries and as low as 100ms for more frequent queries.
Per-tenant index (recommended for isolation):
Single index with metadata filtering (simpler):
tenant_id metadataFor large-scale ingestion (millions of vectors):
ServiceUnavailableException"S3 Vectors limitations and restrictions" for current per-call and per-second limitsTo create a vector bucket with SSE-KMS:
aws s3vectors create-vector-bucket \
--vector-bucket-name <BUCKET_NAME> \
--encryption-configuration '{"sseType":"aws:kms","kmsKeyArn":"arn:aws:kms:<REGION>:<ACCOUNT>:key/<KEY_ID>"}'You MUST use the full KMS key ARN (not alias or key ID). The KMS key policy MUST grant
kms:GenerateDataKey and kms:Decrypt to the S3 Vectors service principal indexing.s3vectors.amazonaws.com.
Encryption cannot be changed after bucket or index creation.
For full KMS policy examples, search AWS docs for "S3 Vectors data encryption KMS".
When migrating from another vector DB (pgVector, AOSS, etc.):
cosine and euclidean — if source used dotProduct,
use cosine on normalized vectors as equivalent