S3파일 시스템
Cloudflare R2, MinIO, DigitalOcean Spaces 및 Tigris와 같은 Amazon S3 또는 S3 호환 스토리지 서비스에 파일을 저장합니다. 인터페이스에 대한 자세한 내용은 다음을 참조하세요.WorkspaceFilesystem Interface.
설치설치에 대한 직접 링크
- 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 자격 증명 공급자 체인AWS 자격 증명 공급자 체인에 대한 직접 링크
자격 증명이 제공되지 않으면 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',
})
자격 증명 자동 새로 고침을 위해 자격 증명 공급자 기능을 전달합니다. 이는 ECS, Lambda 배포에 유용하거나 임시 자격 증명이 만료되어 새로 고쳐야 하는 SSO/AssumeRole을 사용할 때 유용합니다.
호출 시 AWS SDK 자격 증명 공급자 패키지를 설치합니다.fromNodeProviderChain() directly:
- 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 호출에만 적용됩니다. 파일 시스템을 E2B Sandbox에 마운트할 때 마운트 구성은 정적 accessKeyId, secretAccessKey, sessionToken 값만 지원하므로 자격 증명 갱신은 마운트 외부에서 처리해야 합니다.
클라우드플레어 R2클라우드플레어 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,
})
미니IO미니IO에 대한 직접 링크
import { S3Filesystem } from '@mastra/s3'
const filesystem = new S3Filesystem({
bucket: 'my-bucket',
region: 'us-east-1',
endpoint: 'http://localhost:9000',
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
})
티그리스티그리스에 대한 직접 링크
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 체인을 사용하는 AWS 액세스 키 ID입니다.secretAccessKey?:
accessKeyId 및 credentials와 함께 생략하면 SDK 기본 자격 증명 Provider 체인을 사용하는 AWS 비밀 액세스 키입니다.sessionToken?:
accessKeyId/secretAccessKey와 함께 사용하세요. 자동 갱신되는 SSO, AssumeRole 또는 컨테이너 자격 증명에는 credentials Provider 매개변수나 SDK 기본 자격 증명 Provider 체인을 사용하세요.endpoint?:
forcePathStyle?:
prefix?:
id?:
displayName?:
icon?:
description?:
readOnly?:
속성속성에 대한 직접 링크
id:
name:
provider:
bucket:
readOnly:
행동 양식행동 양식에 대한 직접 링크
S3Filesystem은 다음을 구현합니다.WorkspaceFilesystem interface, providing all standard filesystem methods:
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에 대한 직접 링크
파일 시스템을 초기화합니다. 버킷 액세스 및 자격 증명을 확인합니다.
await filesystem.init()
getInfo()getinfo에 대한 직접 링크
이 파일 시스템 인스턴스에 대한 메타데이터를 반환합니다.
const info = filesystem.getInfo()
// { id: '...', name: 'S3Filesystem', provider: 's3', status: 'ready' }
getMountConfig()getmountconfig에 대한 직접 링크
이 파일 시스템 유형 마운트를 지원하는 샌드박스에 대한 마운트 구성을 반환합니다.
const config = filesystem.getMountConfig()
// { type: 's3', bucket: 'my-bucket', region: 'us-east-1', ... }
E2B 샌드박스에 탑재E2B 샌드박스에 탑재에 대한 직접 링크
S3Filesystem은 E2B 샌드박스에 마운트될 수 있으므로 버킷을 로컬 디렉터리로 액세스할 수 있습니다.
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 레퍼런스를 참조하세요.