tigris-lifecycle-management

v2026.09.24

Use when setting up automatic object expiration, storage tier transitions, TTL-based deletion, or cleanup rules for Tigris buckets

GitHub
安装命令
npx skhub add tigrisdata/tigris-lifecycle-management
Markdown
SKILL.md

Tigris Lifecycle Management

Automate object expiration, storage tier transitions, and cleanup with lifecycle rules. Set policies that automatically delete temporary files, archive old data, and control storage costs.

Prerequisites

Before doing anything else, install the Tigris CLI if it's not already available:

tigris help || npm install -g @tigrisdata/cli

If you need to install it, tell the user: "I'm installing the Tigris CLI (@tigrisdata/cli) so we can work with Tigris object storage."

Quick Reference

OperationCommand
Set rulestigris buckets lifecycle set <bucket> --config lifecycle.json
View rulestigris buckets lifecycle get <bucket>
Remove rulestigris buckets lifecycle delete <bucket>

Setting Lifecycle Rules

tigris buckets lifecycle set my-app-uploads --config lifecycle.json

Rule Format

{
  "Rules": [
    {
      "ID": "rule-name",
      "Filter": { "Prefix": "path/prefix/" },
      "Status": "Enabled",
      "Expiration": { "Days": 30 },
      "Transitions": [
        { "Days": 7, "StorageClass": "STANDARD_IA" },
        { "Days": 90, "StorageClass": "GLACIER" }
      ]
    }
  ]
}
FieldPurpose
IDHuman-readable rule name
Filter.PrefixOnly apply to objects matching this prefix
Status"Enabled" or "Disabled"
Expiration.DaysDelete objects after N days
TransitionsMove objects between storage tiers

Common Patterns

Temporary Upload Cleanup

Delete files in tmp/ after 24 hours:

{
  "Rules": [
    {
      "ID": "cleanup-temp-uploads",
      "Filter": { "Prefix": "tmp/" },
      "Status": "Enabled",
      "Expiration": { "Days": 1 }
    }
  ]
}

Unverified Upload Expiration

Delete unprocessed uploads after 7 days:

{
  "Rules": [
    {
      "ID": "expire-unverified-uploads",
      "Filter": { "Prefix": "uploads/pending/" },
      "Status": "Enabled",
      "Expiration": { "Days": 7 }
    }
  ]
}

Session Data Cleanup

Auto-delete session files after 1 day:

{
  "Rules": [
    {
      "ID": "cleanup-sessions",
      "Filter": { "Prefix": "sessions/" },
      "Status": "Enabled",
      "Expiration": { "Days": 1 }
    }
  ]
}

Log Archival

Move logs to cheaper storage, then delete after 1 year:

{
  "Rules": [
    {
      "ID": "archive-logs",
      "Filter": { "Prefix": "logs/" },
      "Status": "Enabled",
      "Transitions": [
        { "Days": 30, "StorageClass": "STANDARD_IA" },
        { "Days": 90, "StorageClass": "GLACIER" }
      ],
      "Expiration": { "Days": 365 }
    }
  ]
}

Backup Retention

Keep backups for 30 days:

{
  "Rules": [
    {
      "ID": "expire-old-backups",
      "Filter": { "Prefix": "backups/" },
      "Status": "Enabled",
      "Expiration": { "Days": 30 }
    }
  ]
}

Old Asset Versions

Clean up old build artifacts:

{
  "Rules": [
    {
      "ID": "cleanup-old-builds",
      "Filter": { "Prefix": "builds/" },
      "Status": "Enabled",
      "Expiration": { "Days": 14 }
    }
  ]
}

Storage Tiers

TierCostAccessUse For
STANDARDHighestInstantFrequently accessed files
STANDARD_IALowerInstant, retrieval feeInfrequent access (>30 days old)
GLACIERLowestMinutes-hours retrievalArchives, compliance (>90 days old)

When to Transition

ScenarioTransition AtSave
User uploads rarely re-accessed30 days → IA~40% storage cost
Compliance archives90 days → Glacier~80% storage cost
Build artifacts7 days → IA, 30 days → delete~90% with deletion

Multiple Rules Example

Combine rules for a complete lifecycle policy:

{
  "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 }
    }
  ]
}

Application-Level TTL

When lifecycle rules aren't granular enough (e.g., expiration based on metadata, not age), implement TTL in your application:

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

Interaction with Snapshots

  • Lifecycle rules apply to the source bucket, not snapshot copies
  • Objects deleted by lifecycle rules can be recovered from snapshots (if taken before deletion)
  • Consider snapshot frequency when setting expiration policies

Critical Rules

Always: Use lifecycle rules for predictable cleanup patterns | Set expiration on temporary/transient data | Use storage tier transitions for cost savings | Test rules on a non-production bucket first

Never: Rely solely on lifecycle for critical data deletion (add application-level checks) | Set short expiration on buckets with important data without backups | Forget that deleted objects are gone permanently (unless you have snapshots)


Related Skills

  • tigris-backup-export — Backup retention policies
  • tigris-egress-optimizer — Tier transitions for cost savings
  • tigris-snapshots-forking — Point-in-time recovery before deletion

Official Documentation

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

skills/tigris-lifecycle-management

默认分支

main

最新提交

668ea42

Tree SHA

0e26190