S3Filesystem
Stocke des fichiers dans Amazon S3 ou dans des services de stockage compatibles S3 tels que Cloudflare R2, MinIO, DigitalOcean Spaces et Tigris. Pour plus de détails sur l'interface, consultez l'interface WorkspaceFilesystem.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/s3
pnpm add @mastra/s3
yarn add @mastra/s3
bun add @mastra/s3
UtilisationLien direct vers Utilisation
Ajoutez un S3Filesystem à un Workspace et attribuez-le à un 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,
})
Chaîne de Providers d'identifiants AWSLien direct vers Chaîne de Providers d'identifiants AWS
Lorsqu'aucun identifiant n'est fourni, S3Filesystem utilise la chaîne de Providers d'identifiants par défaut du SDK AWS. Celle-ci détecte automatiquement les identifiants à partir des variables d'environnement, des fichiers de configuration ~/.aws, des identifiants de conteneurs ECS, des profils d'instances EC2 et d'autres sources standard.
import { S3Filesystem } from '@mastra/s3'
// SDK discovers credentials from the environment automatically
const filesystem = new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
})
Transmettez une fonction de Provider d'identifiants pour actualiser automatiquement les identifiants. Cela est utile pour les déploiements sur ECS ou Lambda, ainsi que lors de l'utilisation de SSO/AssumeRole, où les identifiants temporaires expirent et doivent être renouvelés.
Installez le package de Providers d'identifiants du SDK AWS lorsque vous appelez directement fromNodeProviderChain() :
- 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(),
})
Les fonctions de Provider s'appliquent uniquement aux appels d'API de S3Filesystem. Lors du montage du système de fichiers dans une Sandbox E2B, la configuration de montage prend uniquement en charge les valeurs statiques accessKeyId, secretAccessKey et sessionToken ; l'actualisation des identifiants doit donc être gérée en dehors du montage.
Cloudflare R2Lien direct vers Cloudflare 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,
})
MinIOLien direct vers MinIO
import { S3Filesystem } from '@mastra/s3'
const filesystem = new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
endpoint: 'http://localhost:9000',
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
})
TigrisLien direct vers Tigris
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 utilise un adressage de type hôte virtuel ; forcePathStyle doit donc être défini sur false (la valeur par défaut est true lorsqu'un endpoint personnalisé est fourni). Créez les identifiants depuis le tableau de bord Tigris. Les clés d'accès sont préfixées par tid_ et les secrets par tsec_.
Paramètres du constructeurLien direct vers Paramètres du constructeur
bucket:
region:
credentials?:
fromNodeProviderChain() de @aws-sdk/credential-providers). Prend le pas sur accessKeyId/secretAccessKey/sessionToken. Lorsque toutes les options d'identifiants sont omises, la chaîne de Providers d'identifiants par défaut du SDK est utilisée.accessKeyId?:
secretAccessKey et credentials, la chaîne de Providers d'identifiants par défaut du SDK est utilisée.secretAccessKey?:
accessKeyId et credentials, la chaîne de Providers d'identifiants par défaut du SDK est utilisée.sessionToken?:
accessKeyId/secretAccessKey uniquement lorsque vous transmettez manuellement un ensemble complet d'identifiants temporaires. Pour l'actualisation automatique des identifiants SSO, AssumeRole ou de conteneur, utilisez le paramètre Provider credentials ou la chaîne de Providers d'identifiants par défaut du SDK.endpoint?:
forcePathStyle?:
prefix?:
id?:
displayName?:
icon?:
description?:
readOnly?:
PropriétésLien direct vers Propriétés
id:
name:
provider:
bucket:
readOnly:
MéthodesLien direct vers Méthodes
S3Filesystem implémente l'interface WorkspaceFilesystem et fournit toutes les méthodes standard d'un système de fichiers :
readFile(path, options?)- Lit le contenu d'un fichierwriteFile(path, content, options?)- Écrit du contenu dans un fichierappendFile(path, content)- Ajoute du contenu à un fichierdeleteFile(path, options?)- Supprime un fichiercopyFile(src, dest, options?)- Copie un fichiermoveFile(src, dest, options?)- Déplace ou renomme un fichiermkdir(path, options?)- Crée un répertoirermdir(path, options?)- Supprime un répertoirereaddir(path, options?)- Répertorie le contenu d'un répertoireexists(path)- Vérifie si un chemin existestat(path)- Récupère les métadonnées d'un fichier ou d'un répertoire
init()Lien direct vers init
Initialise le système de fichiers. Vérifie l'accès au bucket et les identifiants.
await filesystem.init()
getInfo()Lien direct vers getinfo
Renvoie les métadonnées de cette instance de système de fichiers.
const info = filesystem.getInfo()
// { id: '...', name: 'S3Filesystem', provider: 's3', status: 'ready' }
getMountConfig()Lien direct vers getmountconfig
Renvoie la configuration de montage pour les Sandboxes prenant en charge le montage de ce type de système de fichiers.
const config = filesystem.getMountConfig()
// { type: 's3', bucket: 'my-bucket', region: 'us-east-1', ... }
Montage dans des Sandboxes E2BLien direct vers Montage dans des Sandboxes E2B
S3Filesystem peut être monté dans des Sandboxes E2B afin de rendre le bucket accessible comme un répertoire local :
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' }),
})
Consultez la référence d'E2BSandbox pour en savoir plus sur le montage.