S3, S3 Tables, and S3 Vectors on Vercel: Let's Look at the Code Too!
Hi, it's Shii-chan! The AWS Blog has a detailed walkthrough of using S3 from Vercel, so let me sum it up!
AWS BlogWhat was announced?
The AWS Blog explains, with steps and code examples, that Amazon S3 is now available on the Vercel Marketplace and v0 by Vercel. You can add S3 directly from Vercel without setting up policies and credentials in the AWS Management Console.
Three storage types are covered:
- S3 general purpose buckets: for files, images, videos, and documents. The post cites 99.999999999% durability and 99.99% availability by default
- S3 Tables: fully managed Apache Iceberg tables for analytics, with automated maintenance and compaction, queryable from Iceberg REST catalog-compatible engines such as DuckDB
- S3 Vectors: vector storage for AI use cases such as RAG and semantic search. The post says it can reduce vector upload, storage, and query costs by up to 90%
Why it matters
When you build web and AI apps, preparing storage tends to get pushed back, and managing credentials is a chore. When provisioning and authentication are handled on the Vercel side, it's easier to focus on the app.
What changes
You can go from creating a resource to connecting it inside the Vercel dashboard or v0. It also shares the same AWS account and bill as the existing Vercel integrations for Amazon Aurora, DynamoDB, and OpenSearch Serverless, so combinations like files in S3 and metadata in Aurora are easy.
Dive Deep
The flow to get started:
- In the Vercel dashboard's Storage tab, choose Create and select AWS
- Choose the bucket type, Region, and name (provisioning takes seconds)
- Connect it to a project and pull the environment variables
vercel link
vercel env pull .env.local
The variables include AWS_REGION, AWS_ROLE_ARN, AWS_RESOURCE_ARN, and a bucket name variable (S3_BUCKET_NAME, S3_TABLE_BUCKET_NAME, or S3_VECTOR_BUCKET_NAME).
For authentication, awsCredentialsProvider from @vercel/functions/oidc exchanges a short-lived OIDC token with AWS STS for temporary, resource-scoped credentials, so you don't store static keys.
The post includes three code examples using AWS SDK clients:
- Uploading files to a general purpose bucket (
PutObjectCommand), plus listing and reading (ListObjectsV2Command,GetObjectCommand) - Querying S3 Tables with DuckDB inside a Vercel Function. In Next.js, add
@duckdb/node-apitoserverExternalPackagesinnext.config.mjs - Vector queries with
QueryVectorsCommand. S3 Vectors stores and queries vectors but doesn't generate embeddings, so you bring your own model
In v0, you describe the app in plain language, and v0 provisions a matching resource, configures the connection, and generates working code.
Accounts and pricing:
- You can create a new AWS account through the integration or link an existing one (Vercel works only with new buckets created through the platform in a linked account)
- The integration itself is free, and you pay standard Amazon S3 pricing for the resources you use
- New accounts get $100 in credits, valid for six months
- It's available in the commercial AWS Regions that Vercel supports (the post doesn't list them)
Wrap-up
- You can create and connect S3 general purpose buckets, S3 Tables, and S3 Vectors from Vercel
- Authentication uses OIDC and STS, with no static keys
- Code examples cover DuckDB queries and vector search
- The integration is free, resources use standard S3 pricing, and new accounts get $100 in credits
If you're building full-stack or RAG apps on Vercel, you can try this right away!