亚马逊AWS官方博客
Amazon S3 现已在 Vercel Marketplace 和 v0 by Vercel 上推出
在 Vercel 上构建 Web 和人工智能应用程序的开发人员现在可以直接从 Vercel Marketplace 和 v0 添加 Amazon S3 存储资源,将 S3 的耐用性、可扩展性和性能与 Vercel 预置工作流程的便利性相结合。从今天起,包括 Amazon S3 表类数据存储服务和 Amazon S3 Vectors 在内的 Amazon Simple Storage Service(Amazon S3)将在 Vercel Marketplace 和 v0 by Vercel 上原生提供,涵盖三种不同的工作负载:日常存储、分析和人工智能。
为什么这很重要
数百万开发人员在 Vercel 上构建、部署和扩展 Web 和人工智能应用程序。存储对于提高应用程序的性能至关重要,但之前对其进行预置需要导航到 AWS 管理控制台来配置策略和凭证。现在,S3 存储直接集成到 Vercel 开发人员体验中,资源预置和连接配置自动处理。再加上 Amazon Aurora、Amazon DynamoDB 和 Amazon OpenSearch 无服务器的现有集成,您可以在 Vercel 中获得完整的应用程序堆栈(从数据库层到对象、向量和开放表存储),所有这些都集中在一个 AWS 账户中,只需一张账单。
每个应用程序的存储
- S3 通用存储桶:存储几乎无限量的对象,包括用于数据湖、云原生应用程序和移动应用程序的文件、图像、视频和文档。S3 提供最耐用的云端存储,默认情况下旨在提供 99.999999999%(11 个 9)的数据耐用性和 99.99% 的可用性。
- S3 表类数据存储服务:完全托管的 Apache Iceberg 存储针对分析进行了优化,具有自动表维护和压缩功能。可以直接从任何兼容 Iceberg REST 目录 API 的引擎(包括 DuckDB)中查询 S3 表类数据存储服务。
- S3 Vectors:专为检索增强生成(RAG)和语义搜索等人工智能应用程序构建的向量存储和查询,可将上传、存储和查询向量的成本降低多达 90%。

图 1 – Vercel Marketplace 上的 AWS 页面。
开始使用
在 Vercel 控制面板中,转到“存储”选项卡,然后选择“创建”。选择 AWS,选择您的 S3 存储桶类型,选择“区域”,然后创建存储桶。预置需要几秒钟。

图 2 – 通过选择区域和名称,在 Vercel 中创建 Amazon S3 通用存储桶。
将存储桶连接到项目,然后使用 Vercel CLI 拉取环境变量:
vercel link
vercel env pull .env.local
该集成注入了 AWS_REGION、AWS_ROLE_ARN、AWS_RESOURCE_ARN 以及 S3_BUCKET_NAME、S3_TABLE_BUCKET_NAME 或 S3_VECTOR_BUCKET_NAME 等存储桶名称。在运行时,来自 @vercel/functions/oidc 的 awsCredentialsProvider 与 AWS Security Token Service(AWS STS)交换短期的 OIDC 令牌,换取限于您的资源的临时凭证。任何地方都不存储任何静态密钥。
使用 S3 进行对象存储
这个 Next.js 路由将文件上传到通用存储桶:
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
import { awsCredentialsProvider } from "@vercel/functions/oidc";
const s3 = new S3Client({
region: process.env.AWS_REGION,
credentials: awsCredentialsProvider({
roleArn: process.env.AWS_ROLE_ARN,
}),
});
export async function POST(request) {
const formData = await request.formData();
const file = formData.get("file");
await s3.send(new PutObjectCommand({
Bucket: process.env.S3_BUCKET_NAME,
Key: file.name,
Body: Buffer.from(await file.arrayBuffer()),
ContentType: file.type,
}));
return Response.json({ success: true });
}
在同一个客户端上使用 ListObjectsV2Command 和 GetObjectCommand 来列出和读取对象。
使用 S3 表类数据存储服务进行分析
S3 表类数据存储服务提供专为分析而构建的 S3 存储,旨在随着数据量的增长自动优化查询性能。它们提供完全托管的 Apache Iceberg 表,具有自动表维护和压缩功能,并且可以与任何兼容 Apache Iceberg REST Catalog 的引擎一起使用。您可以在 Vercel 函数中使用 DuckDB 进行轻量级查询。此示例通过其 ARN 附加表存储桶并运行聚合查询:
import { DuckDBInstance } from "@duckdb/node-api";
import { awsCredentialsProvider } from "@vercel/functions/oidc";
const creds = await awsCredentialsProvider({
roleArn: process.env.AWS_ROLE_ARN,
})();
const db = await DuckDBInstance.create();
const conn = await db.connect();
await conn.run("INSTALL aws; LOAD aws; INSTALL httpfs; LOAD httpfs; INSTALL iceberg; LOAD iceberg;");
await conn.run(`
CREATE SECRET s3cred (
TYPE s3,
KEY_ID '${creds.accessKeyId}',
SECRET '${creds.secretAccessKey}',
SESSION_TOKEN '${creds.sessionToken}',
REGION '${process.env.AWS_REGION}'
);
`);
await conn.run(`
ATTACH '${process.env.AWS_RESOURCE_ARN}' AS s3tables (
TYPE iceberg,
ENDPOINT_TYPE s3_tables
);
`);
const rows = await (await conn.run(`
SELECT town_city, AVG(median_price) AS avg_price
FROM s3tables."${process.env.S3_TABLES_NAMESPACE}".town_monthly
GROUP BY town_city
ORDER BY avg_price DESC
LIMIT 10
`)).getRowObjects();
如果您在 Next.js 路由中运行 DuckDB,请将 @duckdb/node-api 添加到 next.config.mjs 中的 serverExternalPackages 中,这样原生绑定就不会捆绑在一起。
使用 S3 Vectors 进行向量搜索
S3 Vectors 为智能体、人工智能推理以及存储在 Amazon S3 中的内容的语义搜索提供专用、成本优化的向量存储服务。S3 Vectors 在没有单独向量数据库的情况下为存储和查询向量提供原生支持,但它不生成向量。使用您选择的模型创建嵌入,然后在索引中查询最接近的匹配项:
import { S3VectorsClient, QueryVectorsCommand } from "@aws-sdk/client-s3vectors";
import { awsCredentialsProvider } from "@vercel/functions/oidc";
const vectors = new S3VectorsClient({
region: process.env.AWS_REGION,
credentials: awsCredentialsProvider({
roleArn: process.env.AWS_ROLE_ARN,
}),
});
export async function POST(request) {
const { embedding } = await request.json();
const result = await vectors.send(new QueryVectorsCommand({
vectorBucketName: process.env.S3_VECTOR_BUCKET_NAME,
indexName: "documents",
queryVector: { float32: embedding },
topK: 5,
returnMetadata: true,
}));
return Response.json({ matches: result.vectors });
}
使用 v0 by Vercel 构建
在 v0 中,描述您想要构建的内容,它会提供正确的资源。要求构建“用户使用 AWS 上传图像的照片库”就会得到通用存储桶,要求构建“回答我的 PDF 中问题的支持机器人”就会得到 S3 Vectors,要求构建“我的点击流数据的分析控制面板”就会得到 S3 表类数据存储服务。然后 v0 会配置连接并生成工作代码。

图 3 – v0 使用连接的 Amazon S3 Vectors 和预览面板中的应用程序,根据自然语言提示生成 PDF 支持机器人。
将 S3 与 AWS 数据库相结合
Vercel 上的每个 AWS 服务共享相同的账户和身份验证模型,因此您无需额外设置即可将它们组合在一起。例如,将文件元数据存储在 Aurora 中,而文件存储在 S3 中,或者将文档文本存储在 DynamoDB 中,而嵌入存储在 S3 Vectors 中,用于 RAG 检索。
将 Vercel 与您的 AWS 账户结合使用
您可以通过集成创建一个新的 AWS 账户,该账户支持用于构建和测试的 S3 功能。您还可以关联现有的 AWS 账户,进而使用您的全套 S3 和 AWS 功能并保留当前账单。如果您关联现有的 AWS 账户,Vercel 仅用于您通过该平台创建的新存储桶。由于每个 S3 资源都存在于您自己的 AWS 账户中,因此您可以保留 AWS 原生工具和单一存储管理位置。
定价和可用性
集成不收取任何费用,您需要为使用的资源按标准 Amazon S3 定价付费。通过 Vercel 创建的新的 AWS 账户将获得 100 美元的服务抵扣金,有效期为六个月。Amazon S3,包括 S3 表类数据存储服务和 S3 Vectors,可从 v0 和 Vercel Marketplace 获得,适用于 Vercel 支持的所有商业 AWS 区域。要开始使用,请访问 v0 或 Vercel Marketplace 上的 AWS 页面。
加入对话
如果您想调用 API、搜索文档、查找区域可用性并查看有关此新功能的故障排除,请尝试在首选人工智能工具中使用 AWS MCP 服务器和插件。分享您对 AWS re:Post for Amazon S3 的反馈。
— Daniel