cli-anything-tigris 是做什么的?
一个无状态命令行接口,用于 Tigris 对象存储。包装官方 tigris CLI,使每个 Tigris 原语(快照、IAM、作用域凭据、OAuth)都能通过单个对代理友好的入口点使用,并普遍支持 --json。
范围
此封装仅用于官方 Tigris CLI。它通过 tigris 二进制文件执行命令,并假设通过 tigris login 或 Tigris 访问密钥进行身份验证。这不是一个通用的 S3 端点工具,也不管理 MinIO、Cloudflare R2、AWS S3 或任意兼容 S3 的端点。
安装
# 1. 安装底层 Tigris CLI
npm install -g @tigrisdata/cli
# 或:
brew install tigrisdata/tap/tigris
# 2. 进行身份验证(浏览器 OAuth)
tigris login
# 3. 安装此封装
pip install cli-anything-tigris
前提条件:
- Python 3.10+
tigrisCLI 位于 PATH 中(该二进制文件的别名为t3)
用法
基本命令
# 显示帮助
cli-anything-tigris --help
# 启动交互式 REPL
cli-anything-tigris
# 查看当前用户(JSON 输出供代理使用)
cli-anything-tigris --json auth whoami
# 列出存储桶
cli-anything-tigris --json bucket list
# 上传本地文件
cli-anything-tigris --json object put --bucket my-bucket --key path/to/file.txt --file ./local.txt
# 下载对象
cli-anything-tigris --json object get --bucket my-bucket --key path/to/file.txt --output ./out.txt
# 服务端复制
cli-anything-tigris --json object cp t3://my-bucket/src.txt t3://my-bucket/dst.txt
# 创建快照
cli-anything-tigris --json snapshot take my-bucket --name baseline-v1
# 删除存储桶;必须使用 --yes
cli-anything-tigris --json bucket delete --name old-bucket --yes
# 为代理运行创建作用域访问密钥
cli-anything-tigris --json access-key create my-agent-key
cli-anything-tigris --json access-key assign tid_AaBb --bucket my-bucket --role Editor
# 轮换或删除访问密钥;必须使用 --yes
cli-anything-tigris --json access-key rotate tid_AaBb --yes
cli-anything-tigris --json access-key delete tid_AaBb --yes
# 预签名下载 URL(1 小时)
cli-anything-tigris --json presign get --bucket my-bucket --key path/to/file.txt --expires 3600
REPL 模式
当不带子命令调用时,CLI 会进入一个交互式 REPL,支持 Tab 补全和历史记录。
命令组
auth
基于 OAuth 的身份验证。
| 命令 | 描述 |
|---|---|
login | 浏览器 OAuth 登录(tigris login) |
logout | 退出当前会话 |
whoami | 打印已验证的用户/组织 |
bucket
存储桶 CRUD。
| 命令 | 描述 |
|---|---|
list | 列出所有存储桶 |
create --name NAME | 创建存储桶 |
delete --name NAME --yes | 删除空存储桶(必须使用 --yes) |
info NAME | 获取存储桶信息 |
object
对象操作(包装 tigris ls/cp/rm/stat)。
| 命令 | 描述 |
|---|---|
list --bucket B [--prefix P] [--limit N] | 列出对象 |
put --bucket B --key K (--file F | --text T) | 上传对象 |
get --bucket B --key K --output F | 下载对象 |
delete --bucket B --key K | 删除对象 |
info --bucket B --key K | 对象元数据(HEAD / stat) |
cp SRC DST [-r] | 复制。接受 t3:// 或 tigris:// URI。 |
presign
有时限的 URL。
| 命令 | 描述 |
|---|---|
get --bucket B --key K [--expires SEC] | 预签名下载 URL |
put --bucket B --key K [--expires SEC] | 预签名上传 URL |
snapshot
时间点存储桶快照——Tigris 特有的原语。
| 命令 | 描述 |
|---|---|
list BUCKET | 列出存储桶的快照 |
take BUCKET [--name N] | 创建快照 |
access-key
作用域编程凭据——与 snapshot 结合使用以实现每代理隔离。
| 命令 | 描述 |
|---|---|
list | 列出所有访问密钥 |
create NAME | 创建新的访问密钥(密钥仅显示一次) |
get KEY_ID | 显示密钥详情 |
delete KEY_ID --yes | 永久删除密钥(必须使用 --yes) |
assign KEY_ID --bucket B --role R | 将密钥作用域到存储桶和角色 |
rotate KEY_ID --yes | 轮换密钥的密钥(必须使用 --yes) |
iam
策略和组织用户。
| 命令 | 描述 |
|---|---|
policy list | 列出 IAM 策略 |
policy create NAME --document FILE | 从 JSON 文件创建策略 |
user list | 列出组织用户 |
user invite EMAIL [--role R] | 邀请用户 |
输出格式
所有命令都支持双输出模式:
- 人类可读(默认):表格、颜色、格式化文本
- 机器可读(
--json):JSON 信封(或上游 CLI 的--format json输出,原样回显)
针对 AI 代理
当以编程方式使用此 CLI 时:
- 始终传递
--json以获得可解析的输出。 - 检查返回码——0 表示成功,非零表示错误。
- 读取 stderr 以获取错误消息。
object cp接受t3://bucket/key或tigris://bucket/keyURI;服务端复制(t3 → t3)完全跳过往返行程。presign在人类模式下在 stdout 上返回 URL;在 JSON 模式下,它是url字段。- 针对破坏性操作:存储桶删除、访问密钥删除和访问密钥轮换需要显式的
--yes;首先对目标存储桶创建snapshot,然后执行操作,然后保留快照或丢弃它。 - 针对每代理隔离:使用
access-key create+access-key assign --bucket B --role Editor创建一个作用于单个存储桶的密钥;当代理运行结束时,使用access-key delete撤销它。
为什么选择 Tigris
- 全球分布。 数据放置在最常读取的位置附近。
- 无出站费用。 从任何地方拉取工件的代理不会产生按区域带宽费用。
- 快照 + 作用域凭据。 通用兼容 S3 的提供商不提供的原语——每代理隔离的基础。
- 兼容 S3。 可与兼容 S3 的工具一起使用,但此封装本身不是一个通用的 S3/MinIO/R2/AWS 端点管理器。
版本
1.0.0