📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

在 Agent 沙箱中使用 TiDB Cloud Filesystem



此工作流可为临时的编码 agent 提供一个持久、共享的工作区,而无需将用户完整的 TiDB Cloud CLI 配置复制到沙箱中。当沙箱的本地磁盘是一次性的,但 agent 需要使用来自先前会话或其他工作节点的产物、仓库状态或文件,并且不希望为每个沙箱都重新构建这些状态时,可以使用此工作流。

工作原理

受信任的机器只需预配一次 Filesystem。沙箱仅接收 Filesystem 所有者令牌和 Region 代码,因此它可以使用普通文件操作,以及数据平面、挂载、Git、日志(Journal)和 Vault 工作流,而无需执行 ti configure、复制 ~/.ti/ 目录或使用 TiDB Cloud API keys。这也避免了通用对象存储 API 所需的、与应用相关的上传和下载逻辑。该令牌用于标识 Filesystem。当 agent 只需要部分选定的 Secret 时,请使用 Vault 委派令牌而不是所有者令牌。

前提条件

  • 在受信任的机器上安装并配置 TiDB Cloud CLI。
  • 在沙箱中使用发布安装程序安装 TiDB Cloud CLI。
  • 在受信任的机器上安装 jq
  • 使用安全的 Secret 管理器或加密的沙箱输入来传输令牌。

第 1 步:在受信任的机器上进行预配

umask 077 ti fs create-file-system --wait > ./filesystem.json export FILE_SYSTEM_ID="$(jq -r '.file_system_id' ./filesystem.json)" export TI_FS_TOKEN="$(jq -r '.fs_token' ./filesystem.json)"

将令牌存储到 Secret 管理器中,记录 FILE_SYSTEM_ID 以便进行控制平面清理,并记录创建 Filesystem 时使用的 Region 代码。在安全存储令牌后,删除 filesystem.json

第 2 步:注入最小化的沙箱环境

使用以下内容配置沙箱的 Secret/环境变量机制:

TI_FS_TOKEN=<owner-token> TI_REGION_CODE=<filesystem-region-code>

沙箱不需要 TIDB_CLOUD_PUBLIC_KEYTIDB_CLOUD_PRIVATE_KEYti configure,也不需要从 ~/.ti/ 复制文件。

第 3 步:验证直接访问

在沙箱中:

printf 'sandbox ready\n' | ti fs copy-file \ --from-stdin \ --to-remote /sandbox/status.txt ti fs read-file --path /sandbox/status.txt

预期输出:

sandbox ready

第 4 步:可选地挂载 Filesystem

在使用 FUSE 的 Linux 上:

mkdir -p "$HOME/workspace" ti fs mount-file-system \ --mount-path "$HOME/workspace" \ --driver fuse cat "$HOME/workspace/sandbox/status.txt"

在 macOS 上,省略 --driver fuse 以使用 WebDAV,这不需要安装 FUSE。当你需要 Git 工作区、层或在线刷写等 FUSE 特有能力时,请安装 macFUSE 并选择 FUSE。有关平台要求和挂载路径限制,请参见挂载 TiDB Cloud Filesystem

挂载后,你可以在相同的 FS 环境中使用 ti fs-gitti fs-journal 和由所有者授予权限的 ti fs-vault 命令。当 agent 只需要部分选定的 Secret 字段时,请向其提供委派的 TI_VAULT_TOKEN,而不是所有者令牌。

清理

停止写入方并卸载。优雅的 FUSE 卸载会自动刷写并处理待完成的工作:

ti fs unmount-file-system --mount-path "$HOME/workspace"

对于 FUSE 挂载,当你需要在保持挂载在线的同时验证远端持久性时,请单独使用 ti fs drain-file-system --mount-path "$HOME/workspace"。WebDAV 不支持 drain-file-system。更多信息,请参见刷写或卸载。然后回到受信任的机器上:

ti fs delete-file-system \ --file-system-id "$FILE_SYSTEM_ID"

安全与运维说明

  • TI_FS_TOKEN 视为所有者凭证。
  • 不要将其放入镜像、仓库、命令行参数或操作日志中。
  • 删除沙箱不会删除远端 Filesystem。
  • 优雅的卸载会刷写待处理的 FUSE 写入;不经卸载直接删除沙箱则不会。

后续内容

文档内容是否有帮助?