S3Filesystem
Amazon S3、または Cloudflare R2、MinIO、DigitalOcean Spaces、Tigris などの S3 互換ストレージサービスにファイルを保存します。インターフェースの詳細は、WorkspaceFilesystem インターフェースを参照してください。
インストールインストールへの直接リンク
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/s3
pnpm add @mastra/s3
yarn add @mastra/s3
bun add @mastra/s3
使用方法使用方法への直接リンク
Workspace に S3Filesystem を追加して Agent に割り当てます。
import { Agent } from '@mastra/core/agent'
import { Workspace } from '@mastra/core/workspace'
import { S3Filesystem } from '@mastra/s3'
const workspace = new Workspace({
filesystem: new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
}),
})
const agent = new Agent({
id: 'file-agent',
name: 'file-agent',
model: 'anthropic/claude-opus-4-7',
workspace,
})
AWS 認証情報 Provider チェーンAWS 認証情報 Provider チェーンへの直接リンク
認証情報を指定しない場合、S3Filesystem は AWS SDK のデフォルト認証情報 Provider チェーンを使用します。環境変数、~/.aws 設定ファイル、ECS コンテナ認証情報、EC2 インスタンスプロファイル、その他の標準ソースから認証情報を自動検出します。
import { S3Filesystem } from '@mastra/s3'
// SDK discovers credentials from the environment automatically
const filesystem = new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
})
認証情報を自動更新するには、認証情報 Provider 関数を渡します。ECS や Lambda へのデプロイ、または有効期限のある一時認証情報を更新する必要がある SSO / AssumeRole の使用時に便利です。
fromNodeProviderChain() を直接呼び出す場合は、AWS SDK の認証情報 Provider パッケージをインストールします。
- npm
- pnpm
- Yarn
- Bun
npm install @aws-sdk/credential-providers
pnpm add @aws-sdk/credential-providers
yarn add @aws-sdk/credential-providers
bun add @aws-sdk/credential-providers
import { S3Filesystem } from '@mastra/s3'
import { fromNodeProviderChain } from '@aws-sdk/credential-providers'
const filesystem = new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
credentials: fromNodeProviderChain(),
})
Provider 関数は S3Filesystem API の呼び出しにのみ適用されます。Filesystem を E2B Sandbox にマウントする場合、マウント設定は静的な accessKeyId、secretAccessKey、sessionToken の値にしか対応しないため、認証情報の更新はマウントの外部で処理する必要があります。
Cloudflare R2Cloudflare R2への直接リンク
import { S3Filesystem } from '@mastra/s3'
const filesystem = new S3Filesystem({
bucket: 'my-r2-bucket',
region: 'auto',
endpoint: `https://${process.env.R2_ACCOUNT_ID}.r2.cloudflarestorage.com`,
accessKeyId: process.env.R2_ACCESS_KEY_ID,
secretAccessKey: process.env.R2_SECRET_ACCESS_KEY,
})
MinIOMinIOへの直接リンク
import { S3Filesystem } from '@mastra/s3'
const filesystem = new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
endpoint: 'http://localhost:9000',
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
})
TigrisTigrisへの直接リンク
import { S3Filesystem } from '@mastra/s3'
const filesystem = new S3Filesystem({
bucket: 'my-bucket',
region: 'auto',
endpoint: 'https://t3.storage.dev',
accessKeyId: process.env.TIGRIS_ACCESS_KEY_ID,
secretAccessKey: process.env.TIGRIS_SECRET_ACCESS_KEY,
forcePathStyle: false,
})
Tigris は仮想ホスト形式のアドレス指定を使用するため、forcePathStyle を false に設定する必要があります(カスタムエンドポイントを指定した場合のデフォルトは true)。認証情報は Tigris ダッシュボードで作成します。アクセスキーには tid_、シークレットには tsec_ の接頭辞が付きます。
コンストラクターパラメーターコンストラクターパラメーターへの直接リンク
bucket:
region:
credentials?:
@aws-sdk/credential-providers の fromNodeProviderChain() など)を指定できます。accessKeyId / secretAccessKey / sessionToken より優先されます。すべての認証情報オプションを省略すると、SDK のデフォルト認証情報 Provider チェーンを使用します。accessKeyId?:
secretAccessKey と credentials とともに省略した場合は、SDK のデフォルト認証情報 Provider チェーンを使用します。secretAccessKey?:
accessKeyId と credentials とともに省略した場合は、SDK のデフォルト認証情報 Provider チェーンを使用します。sessionToken?:
accessKeyId / secretAccessKey とともに使用します。自動更新する SSO、AssumeRole、コンテナ認証情報には、credentials Provider パラメーターまたは SDK のデフォルト認証情報 Provider チェーンを使用してください。endpoint?:
forcePathStyle?:
prefix?:
id?:
displayName?:
icon?:
description?:
readOnly?:
プロパティプロパティへの直接リンク
id:
name:
provider:
bucket:
readOnly:
メソッドメソッドへの直接リンク
S3Filesystem は WorkspaceFilesystem インターフェースを実装し、標準の Filesystem メソッドをすべて提供します。
readFile(path, options?)- ファイルの内容を読み取りますwriteFile(path, content, options?)- ファイルに内容を書き込みますappendFile(path, content)- ファイルに内容を追記しますdeleteFile(path, options?)- ファイルを削除しますcopyFile(src, dest, options?)- ファイルをコピーしますmoveFile(src, dest, options?)- ファイルを移動または名前変更しますmkdir(path, options?)- ディレクトリを作成しますrmdir(path, options?)- ディレクトリを削除しますreaddir(path, options?)- ディレクトリの内容を一覧表示しますexists(path)- パスが存在するか確認しますstat(path)- ファイルまたはディレクトリのメタデータを取得します
init()initへの直接リンク
Filesystem を初期化し、バケットへのアクセスと認証情報を検証します。
await filesystem.init()
getInfo()getinfoへの直接リンク
この Filesystem インスタンスのメタデータを返します。
const info = filesystem.getInfo()
// { id: '...', name: 'S3Filesystem', provider: 's3', status: 'ready' }
getMountConfig()getmountconfigへの直接リンク
この種類の Filesystem のマウントに対応する Sandbox 向けに、マウント設定を返します。
const config = filesystem.getMountConfig()
// { type: 's3', bucket: 'my-bucket', region: 'us-east-1', ... }
E2B Sandbox にマウントするE2B Sandbox にマウントするへの直接リンク
S3Filesystem を E2B Sandbox にマウントすると、バケットへローカルディレクトリとしてアクセスできます。
import { Workspace } from '@mastra/core/workspace'
import { S3Filesystem } from '@mastra/s3'
import { E2BSandbox } from '@mastra/e2b'
const workspace = new Workspace({
mounts: {
'/data': new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
}),
},
sandbox: new E2BSandbox({ id: 'dev-sandbox' }),
})
マウントの詳細は、E2BSandbox リファレンスを参照してください。