@unikvs/s3.bun
S3 互換のオブジェクトストレージにバイト列を保存する @unikvs/s3.bun の使い方を説明します。
概要
@unikvs/s3.bun は S3 互換のオブジェクトストレージにバイト列を保存するストレージプラグインです。Bun 専用 クラウドや S3 互換ストレージへの永続化に使います。
nameは"S3"で、isOpenで開閉状態を確認します。open()でクライアントを作成し、close()で参照を外します。- このストレージは、コンストラクターで指定したバケットに対してすべての操作を行い、キーをオブジェクトキーとしてそのまま使います。
インストールは次のコマンドで行います。
npm install @unikvs/s3.bunpnpm add @unikvs/s3.bunyarn add @unikvs/s3.bunbun add @unikvs/s3.bunnub add @unikvs/s3.bunaube add @unikvs/s3.bun別途 S3 互換のオブジェクトストレージが必要です。
使い方
S3 は IStorage を実装しています。UniKvs には persist() で渡します。
import { S3 } from "@unikvs/s3.bun";
S3
S3 互換ストレージに保存するストレージです。利用者は open() で開き、使い終わったら close() で閉じます。
コンストラクターの引数は次のとおりです。
S3StorageOptions
Bun の S3Options から bucket を除いた設定型です。バケット名はコンストラクターの第 1 引数で指定します。
以下は、値を保存して読み戻す例です。
import { S3 } from "@unikvs/s3.bun";
import * as unikvs from "unikvs";
const kvs = new unikvs.Builder<{ file: unikvs.Value<Uint8Array> }>()
.persist(new S3("my-bucket"))
.build();
await kvs.open();
await kvs.set("file", new Uint8Array([0, 1, 2]));
const data = await kvs.get("file");
console.log(data); // Uint8Array(3) [0, 1, 2]
await kvs.close();
データ型
| 操作 | 対応するデータ型 |
|---|---|
write・read |
Uint8Array<ArrayBuffer> |
getWritable・getReadable のチャンク |
Uint8Array<ArrayBuffer> |
write・readにはバイト列 (Uint8Array<ArrayBuffer>) を使います。- ストリームの読み書きに対応し、チャンクは
Uint8Array<ArrayBuffer>です。 - 書き込みストリームのパートサイズは実行時変数の
@unikvs/s3.bun:partSize(なければ@unikvs/s3:partSize) で変えられます。 clear()はバケット内のオブジェクトを列挙してすべて削除します。
エラー
このパッケージが投げるエラーは次のとおりです。
StorageNotOpenError
未オープンで close() したときに投げます。
意味
S3 クライアントがオープンされていないのに close() を呼び出しました。
対処方法
close() の前に open() を呼び出してください。
InvalidPartSizeError
@unikvs/core の共通エラーです。書き込みストリームのパートサイズが非整数または非正数のときに投げます。
actualunknown
指定されたパートサイズの値です。
unknown意味
実行時変数のパートサイズ (@unikvs/s3.bun:partSize または @unikvs/s3:partSize) が正の整数ではありません。@unikvs/core の共通エラーです。
対処方法
パートサイズに正の整数 (バイト単位) を指定してください。
StorageAbortedError
@unikvs/core の共通エラーです。書き込みストリームの取得前にシグナルが中断済みのときに投げます。
keystring
アップロードしようとしたキーです。
string意味
getWritable() の呼び出し時点で AbortSignal が既に中断されています。@unikvs/core の共通エラーです。
対処方法
中断されていないシグナルを渡すか、要求前にシグナルの状態を確認してください。
UnsupportedRuntimeError
@unikvs/core の共通エラーです。Bun 以外のランタイムで開こうとしたときに投げます。
意味
このストレージは Bun でのみ動作します。@unikvs/core の共通エラーです。
対処方法
Bun ランタイムで実行してください。