mcpField
T
tigris-object-operations

tigris-object-operations

github.com/tigrisdataクラウド・DevOps23.3k 回インストール14 週間前に更新
リポジトリ

tigris-object-operations について

CLI とストレージパッケージを使って Tigris のオブジェクトストレージを操作するスキルです。オブジェクト操作やメタデータ、署名付き URL に加え、ブラウザーからのアップロード方法も扱います。

主な機能

  1. 01オブジェクトのアップロードとダウンロード
  2. 02オブジェクトの削除と一覧表示
  3. 03オブジェクトのメタデータ確認
  4. 04署名付き URL の生成
  5. 05ブラウザー側アップロードの設定

活用シーン

  1. 01Tigris ストレージへのファイルのアップロード
  2. 02プレフィックスを指定したオブジェクト一覧
  3. 03文字列・ファイル・ストリーム形式でのダウンロード
  4. 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
署名付き URLgetPresignedUrl(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 オプション

オプション値デフォルト用途
accesspublic/private-オブジェクトの公開範囲
addRandomSuffixbooleanfalse名前の衝突を回避
allowOverwritebooleantrue既存オブジェクトの置き換えを許可
contentTypestring推定MIME タイプ
contentDispositioninline/attachmentinlineダウンロードの動作
multipartbooleanfalse大容量ファイルで有効化
onUploadProgresscallback-アップロードの進行状況を追跡

ダウンロード(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 オプション

オプション値デフォルト用途
contentDispositioninline/attachmentinlineダウンロードの動作
contentTypestringアップロード時の値MIME タイプ
encodingstringutf-8テキストエンコーディング
snapshotVersionstring-スナップショットから読み込み

削除(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 オプション

オプション用途
prefixprefix で始まるキーをフィルタリング
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 のオプション

オプション値デフォルト用途
operationget/put-URL の用途
expiresIn秒3600URL の有効期限
contentTypestring-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を参照してください。

コメント