Terraform Resources
Provider requirement
Section titled “Provider requirement”S3 Vectors requires AWS provider >= 6.24.0:
terraform { required_version = ">= 1.5.0"
required_providers { aws = { source = "hashicorp/aws" version = ">= 6.24.0" } }}Creating a vector bucket
Section titled “Creating a vector bucket”resource "aws_s3vectors_vector_bucket" "this" { vector_bucket_name = local.vector_bucket_name}The bucket name must be globally unique. This demo uses a random_id prefix:
resource "random_id" "bucket_prefix" { byte_length = 4}
locals { vector_bucket_name = "${random_id.bucket_prefix.hex}-${var.vector_bucket_name}"}Creating a vector index
Section titled “Creating a vector index”resource "aws_s3vectors_index" "this" { vector_bucket_name = aws_s3vectors_vector_bucket.this.vector_bucket_name index_name = var.vector_index_name
dimension = var.vector_dimension # 1024 distance_metric = var.vector_distance_metric # "cosine" data_type = "float32"}Key attributes
Section titled “Key attributes”| Attribute | Type | Description |
|---|---|---|
vector_bucket_name | Output | The bucket name (used in API calls) |
vector_bucket_arn | Output | Full ARN (used in IAM policies) |
index_name | Output | Index name (used in API calls) |
index_arn | Output | Full ARN of the index |
Variables for flexibility
Section titled “Variables for flexibility”variable "vector_dimension" { description = "Dimensionality of vector embeddings" type = number default = 1024
validation { condition = var.vector_dimension >= 1 && var.vector_dimension <= 4096 error_message = "Must be between 1 and 4096." }}
variable "vector_distance_metric" { description = "Distance metric for similarity search" type = string default = "cosine"
validation { condition = contains(["cosine", "euclidean"], var.vector_distance_metric) error_message = "Must be cosine or euclidean." }}