进阶 www.prisma.io 2026-10-12 01:56:59 · 15 阅读

第8章 Prisma 对象存储详解

对象存储 S3 兼容的对象存储桶,内置于 Prisma 项目中。这些存储桶是 S3 兼容的文件存储,与 Prisma Postgres 数据库和 Compute 应用一同位于 Prisma 项目内部。你可以从控制台、CLI 或 REST API 管理这些存储桶;你的应用可以使用任何 S3 客户端或 SDK 来读写其中的对象。

存储桶归属于某个项目。创建时,你可以将其关联到特定的分支(通过分支 ID 或 Git 分支名);若均未指定,则会自动挂载到项目的默认分支。新项目初始时不包含任何存储桶。

命名 每个存储桶有两个名称:

* 你选择的显示名称(1-100 个字符,省略时会自动生成)。该名称会显示在控制台、CLI 和 API 中。 * 由提供商分配的 S3 桶名称,API 返回为 `providerName`,而使用新的访问密钥时返回为 `bucketName`。这是 S3 客户端实际使用的值。该名称是不透明的,永远不会基于显示名称推导得出。

没有重命名功能:API 不提供用于更新存储桶的端点。

访问密钥 访问通过桶范围的访问密钥进行。密钥具有角色,即 `read` 或 `read_write`;尝试用 `read` 密钥进行写操作会因 `AccessDenied` 而失败。密钥的作用域仅限于其所属的桶:泄露的密钥无法访问其他任何存储桶。

创建密钥时,会返回 S3 客户端所需的所有信息:`accessKeyId`、`secretAccessKey`、`endpoint` 和 `bucketName`。`secretAccessKey` 只返回一次,且不会被存储;请立即复制保存。如果丢失了该密钥,请撤销当前密钥并创建一个新的。删除密钥会立即使其失效。

请使用密钥返回时提供的 `endpoint` 值,而不是硬编码主机名。

在应用中使用存储桶 任何 S3 客户端或 SDK 均可使用。在 Prisma Compute 上,Bun 内置的 S3 客户端会从环境变量中读取 `S3_ENDPOINT`、`S3_BUCKET`、`S3_ACCESS_KEY_ID` 和 `S3_SECRET_ACCESS_KEY`,因此上传和生成预签名 GET 链接无需显式配置客户端。请参阅“Compute 上的对象存储”了解具体示例,以及“Composer 中的对象存储”了解带有本地替代桶的声明式 `bucket()` 资源。有关开发期间如何使用存储桶,请参阅“本地存储”。

管理存储桶 使用 CLI(详情请参阅 bucket 参考文档): ```bash bunx prisma bucket create --name my-bucket bunx prisma bucket key create ``` | 命令 | 用途 | | :--- | :--- | | `bucket list` | 列出对象存储桶 | | `bucket create` | 创建存储桶(`--name` 设置显示名称) | | `bucket delete ` | 删除存储桶及其所有访问密钥 | | `bucket key list ` | 列出存储桶的访问密钥 | | `bucket key create ` | 创建访问密钥并打印其一次性凭证 | | `bucket key delete ` | 撤销并删除访问密钥 |

REST API 暴露了相同的操作:列出、创建、获取和删除存储桶,以及列出、创建和删除访问密钥。存储桶创建是同步的;响应返回时状态为 `"status": "ready"`。Prisma MCP 服务器还为 AI 智能体提供了存储桶相关工具(`list_object_store_buckets`、`create_object_store_bucket`、`delete_object_store_bucket`、`create_object_store_bucket_key`、`delete_object_store_bucket_key`)。

在控制台中,每个存储桶都有一个文件浏览器,支持上传、下载及按对象删除;还有一个密钥页面,包含一次性显示的凭证对话框;以及一个设置页面,删除时需输入名称确认。

删除存储桶 删除存储桶会在一次调用中永久移除该存储桶、其中存储的所有对象以及所有访问密钥。即使存储桶非空,删除也会成功,且此操作不可撤销。

定价 存储桶的定价和套餐限制尚未公布。

在 GitHub 上编辑

评论 (0)