tigris-object-operations について
CLI とストレージパッケージを使って Tigris のオブジェクトストレージを操作するスキルです。オブジェクト操作やメタデータ、署名付き URL に加え、ブラウザーからのアップロード方法も扱います。
主な機能
- 01オブジェクトのアップロードとダウンロード
- 02オブジェクトの削除と一覧表示
- 03オブジェクトのメタデータ確認
- 04署名付き URL の生成
- 05ブラウザー側アップロードの設定
活用シーン
- 01Tigris ストレージへのファイルのアップロード
- 02プレフィックスを指定したオブジェクト一覧
- 03文字列・ファイル・ストリーム形式でのダウンロード
- 04一時的なアップロード URL やダウンロード URL の作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tigrisdata/ skills --skill tigris-object-operationsインストール後、Claude Code で/tigris-object-operationsを入力して読み込まれたか確認します。
同梱ファイルmetadata.jsonREADME.md
詳細
Tigris オブジェクト操作
前提条件
何よりも先に、まだ利用できない場合は Tigris CLI をインストールしてください。
tigris help || npm install -g @tigrisdata/cli
インストールが必要な場合は、ユーザーに「Tigris オブジェクトストレージを利用できるように、Tigris CLI(@tigrisdata/cli)をインストールしています。」と伝えてください。
概要
Tigris Storage では、オブジェクトの操作として、アップロード(put)、ダウンロード(get)、削除(remove)、一覧表示、メタデータ(head)、署名付き URL を利用できます。
すべてのメソッドは TigrisStorageResponse<T, E> を返します。まず error プロパティを確認してください。
クイックリファレンス
| 操作 | 関数 | 主なパラメーター |
|---|---|---|
| アップロード | put(path, body, options) | path, body, access, contentType |
| ダウンロード | get(path, format, options) | path, format (string/file/stream) |
| 削除 | remove(path, options) | path |
| 一覧表示 | list(options) | prefix, limit, paginationToken |
| メタデータ | head(path, options) | path |
| 署名付き URL | getPresignedUrl(path, options) | path, operation (get/put) |
アップロード(put)
import { put } from "@tigrisdata/storage";
// Simple upload
const result = await put("simple.txt", "Hello, World!");
if (result.error) {
console.error("Error:", result.error);
} else {
console.log("Uploaded:", result.data?.url);
}
// Large file with progress
const result = await put("large.mp4", fileStream, {
multipart: true,
onUploadProgress: ({ loaded, total, percentage }) => {
console.log(`${loaded}/${total} bytes (${percentage}%)`);
},
});
// Prevent overwrite
const result = await put("config.json", config, {
allowOverwrite: false,
});
Put オプション
| オプション | 値 | デフォルト | 用途 |
|---|---|---|---|
| access | public/private | - | オブジェクトの公開範囲 |
| addRandomSuffix | boolean | false | 名前の衝突を回避 |
| allowOverwrite | boolean | true | 既存オブジェクトの置き換えを許可 |
| contentType | string | 推定 | MIME タイプ |
| contentDisposition | inline/attachment | inline | ダウンロードの動作 |
| multipart | boolean | false | 大容量ファイルで有効化 |
| onUploadProgress | callback | - | アップロードの進行状況を追跡 |
ダウンロード(get)
import { get } from "@tigrisdata/storage";
// Get as string
const result = await get("object.txt", "string");
if (result.error) {
console.error("Error:", result.error);
} else {
console.log("Content:", result.data);
}
// Get as file (triggers download in browser)
const result = await get("object.pdf", "file", {
contentDisposition: "attachment",
});
// Get as stream
const result = await get("video.mp4", "stream");
const reader = result.data?.getReader();
// Process stream...
Get オプション
| オプション | 値 | デフォルト | 用途 |
|---|---|---|---|
| contentDisposition | inline/attachment | inline | ダウンロードの動作 |
| contentType | string | アップロード時の値 | MIME タイプ |
| encoding | string | utf-8 | テキストエンコーディング |
| snapshotVersion | string | - | スナップショットから読み込み |
削除(remove)
import { remove } from "@tigrisdata/storage";
const result = await remove("object.txt");
if (result.error) {
console.error("Error:", result.error);
} else {
console.log("Deleted successfully");
}
オブジェクトの一覧表示
import { list } from "@tigrisdata/storage";
// List all objects
const result = await list();
console.log("Objects:", result.data?.items);
// List with prefix (folders)
const result = await list({ prefix: "images/" });
// List with pagination
const allFiles = [];
let currentPage = await list({ limit: 10 });
allFiles.push(...currentPage.data?.items);
while (currentPage.data?.hasMore) {
currentPage = await list({
limit: 10,
paginationToken: currentPage.data?.paginationToken,
});
allFiles.push(...currentPage.data?.items);
}
List オプション
| オプション | 用途 |
|---|---|
| prefix | prefix で始まるキーをフィルタリング |
| delimiter | キーをグループ化(例:フォルダーには「/」) |
| limit | 返すオブジェクトの最大数(デフォルト:100) |
| paginationToken | 前回の一覧の続きから表示 |
| snapshotVersion | スナップショットから一覧表示 |
オブジェクトのメタデータ(head)
import { head } from "@tigrisdata/storage";
const result = await head("object.txt");
if (result.error) {
console.error("Error:", result.error);
} else {
console.log("Metadata:", result.data);
// { path, size, contentType, modified, url, contentDisposition }
}
署名付き URL
import { getPresignedUrl } from "@tigrisdata/storage";
// Presigned URL for GET (temporary access)
const result = await getPresignedUrl("object.txt", {
operation: "get",
expiresIn: 3600, // 1 hour
});
console.log("URL:", result.data?.url);
// Presigned URL for PUT (allow client upload)
const result = await getPresignedUrl("upload.txt", {
operation: "put",
expiresIn: 600, // 10 minutes
});
署名付き URL のオプション
| オプション | 値 | デフォルト | 用途 |
|---|---|---|---|
| operation | get/put | - | URL の用途 |
| expiresIn | 秒 | 3600 | URL の有効期限 |
| contentType | string | - | PUT では必須 |
よくある間違い
| 間違い | 修正方法 |
|---|---|
最初に error を確認しない | result.data の前に必ず if (result.error) を確認してください |
get() で誤った形式を指定する | 'string'、'file'、または 'stream' を使用してください |
multipart: true を指定し忘れる | 100MB を超えるファイルでは有効にしてください |
| ページネーションを無視する | hasMore と paginationToken を使用してください |
クライアントサイドのアップロード
ブラウザーからアップロードする場合は、クライアントパッケージを使用して Tigris に直接アップロードします。
import { upload } from "@tigrisdata/storage/client";
const result = await upload(file.name, file, {
url: "/api/upload", // Your backend endpoint
onUploadProgress: ({ percentage }) => {
console.log(`${percentage}%`);
},
});
初期設定については、file-storageを参照してください。
コメント
Markdown 対応