关于 tigris-lifecycle-management
用于通过 Tigris CLI 管理 Tigris 对象存储生命周期的技能,可按前缀设置对象过期和存储层转换规则。适合维护上传、日志、会话及备份等数据的清理与归档策略。
主要功能
- 01按前缀设置生命周期规则
- 02配置对象到期删除
- 03在存储层之间转换对象
- 04查看或删除现有规则
适用场景
- 01自动清理临时上传和会话文件
- 02归档旧日志并设置后续删除
- 03为备份和构建产物设置保留期
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tigrisdata/ skills --skill tigris-lifecycle-management安装后在 Claude Code 中输入/tigris-lifecycle-management确认已加载。
附带文件metadata.jsonREADME.md
详细介绍
Tigris 生命周期管理
使用生命周期规则自动执行对象过期、存储层转换和清理。设置策略,自动删除临时文件、归档旧数据并控制存储成本。
前置条件
开始任何操作之前,如果尚未安装 Tigris CLI,请先安装:
tigris help || npm install -g @tigrisdata/cli
如果需要安装,请告知用户:“我正在安装 Tigris CLI(@tigrisdata/cli),以便使用 Tigris 对象存储。”
快速参考
| 操作 | 命令 |
|---|---|
| 设置规则 | tigris buckets lifecycle set <bucket> --config lifecycle.json |
| 查看规则 | tigris buckets lifecycle get <bucket> |
| 移除规则 | tigris buckets lifecycle delete <bucket> |
设置生命周期规则
tigris buckets lifecycle set my-app-uploads --config lifecycle.json
规则格式
{
"Rules": [
{
"ID": "rule-name",
"Filter": { "Prefix": "path/prefix/" },
"Status": "Enabled",
"Expiration": { "Days": 30 },
"Transitions": [
{ "Days": 7, "StorageClass": "STANDARD_IA" },
{ "Days": 90, "StorageClass": "GLACIER" }
]
}
]
}
| 字段 | 用途 |
|---|---|
ID | 易于理解的规则名称 |
Filter.Prefix | 仅对匹配此前缀的对象应用规则 |
Status | "Enabled" 或 "Disabled" |
Expiration.Days | N 天后删除对象 |
Transitions | 在不同存储层之间移动对象 |
常见模式
清理临时上传文件
24 小时后删除 tmp/ 中的文件:
{
"Rules": [
{
"ID": "cleanup-temp-uploads",
"Filter": { "Prefix": "tmp/" },
"Status": "Enabled",
"Expiration": { "Days": 1 }
}
]
}
未验证上传文件过期
7 天后删除尚未处理的上传文件:
{
"Rules": [
{
"ID": "expire-unverified-uploads",
"Filter": { "Prefix": "uploads/pending/" },
"Status": "Enabled",
"Expiration": { "Days": 7 }
}
]
}
清理会话数据
1 天后自动删除会话文件:
{
"Rules": [
{
"ID": "cleanup-sessions",
"Filter": { "Prefix": "sessions/" },
"Status": "Enabled",
"Expiration": { "Days": 1 }
}
]
}
日志归档
将日志移至更低成本的存储,然后在 1 年后删除:
{
"Rules": [
{
"ID": "archive-logs",
"Filter": { "Prefix": "logs/" },
"Status": "Enabled",
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" },
{ "Days": 90, "StorageClass": "GLACIER" }
],
"Expiration": { "Days": 365 }
}
]
}
备份保留
保留备份 30 天:
{
"Rules": [
{
"ID": "expire-old-backups",
"Filter": { "Prefix": "backups/" },
"Status": "Enabled",
"Expiration": { "Days": 30 }
}
]
}
旧版资源
清理旧的构建产物:
{
"Rules": [
{
"ID": "cleanup-old-builds",
"Filter": { "Prefix": "builds/" },
"Status": "Enabled",
"Expiration": { "Days": 14 }
}
]
}
存储层
| 层级 | 成本 | 访问 | 适用场景 |
|---|---|---|---|
STANDARD | 最高 | 即时 | 经常访问的文件 |
STANDARD_IA | 较低 | 即时,需支付检索费用 | 不常访问的数据(存放超过 30 天) |
GLACIER | 最低 | 检索需数分钟至数小时 | 归档、合规数据(存放超过 90 天) |
何时进行转换
| 场景 | 转换时间 | 节省 |
|---|---|---|
| 用户上传后很少再次访问的文件 | 30 天 → IA | 存储成本约降低 40% |
| 合规归档 | 90 天 → Glacier | 存储成本约降低 80% |
| 构建产物 | 7 天 → IA,30 天 → 删除 | 删除后成本约降低 90% |
多规则示例
组合多条规则,制定完整的生命周期策略:
{
"Rules": [
{
"ID": "cleanup-temp",
"Filter": { "Prefix": "tmp/" },
"Status": "Enabled",
"Expiration": { "Days": 1 }
},
{
"ID": "archive-uploads",
"Filter": { "Prefix": "uploads/" },
"Status": "Enabled",
"Transitions": [
{ "Days": 90, "StorageClass": "STANDARD_IA" }
]
},
{
"ID": "expire-backups",
"Filter": { "Prefix": "backups/" },
"Status": "Enabled",
"Expiration": { "Days": 30 }
},
{
"ID": "archive-logs",
"Filter": { "Prefix": "logs/" },
"Status": "Enabled",
"Transitions": [
{ "Days": 30, "StorageClass": "STANDARD_IA" },
{ "Days": 90, "StorageClass": "GLACIER" }
],
"Expiration": { "Days": 365 }
}
]
}
应用级 TTL
当生命周期规则不够精细时(例如,过期时间取决于元数据而非文件年龄),请在应用中实现 TTL:
import { put, list, remove, head } from "@tigrisdata/storage";
// Store with expiration metadata
await put("tokens/abc123.json", data, {
contentType: "application/json",
// Store expiry as part of the key or track in your database
});
// Cleanup job: delete expired objects
async function cleanupExpired(prefix: string, maxAgeMs: number) {
const result = await list({ prefix });
const now = Date.now();
for (const item of result.data?.items ?? []) {
const age = now - new Date(item.modified).getTime();
if (age > maxAgeMs) {
await remove(item.path);
}
}
}
// Run daily
cleanupExpired("tokens/", 24 * 60 * 60 * 1000); // 24 hours
与快照的交互
- 生命周期规则适用于源存储桶,不适用于快照副本
- 生命周期规则删除的对象可以从快照中恢复(前提是快照在删除前创建)
- 设置过期策略时,请考虑快照频率
关键规则
始终: 对可预测的清理模式使用生命周期规则 | 为临时/短期数据设置过期时间 | 使用存储层转换来节省成本 | 先在非生产存储桶上测试规则
切勿: 仅依赖生命周期规则删除关键数据(还应添加应用级检查) | 未备份重要数据就为存储桶设置较短的过期时间 | 忘记已删除的对象会永久消失(除非你有快照)
相关技能
- tigris-backup-export — 备份保留策略
- tigris-egress-optimizer — 通过存储层转换节省成本
- tigris-snapshots-forking — 删除前进行时间点恢复
官方文档
评论
支持 Markdown