AWS S3 implementation of File System Access API
npm install @b9g/filesystem-s3AWS S3 implementation of the File System Access API. Provides standards-compliant file system operations backed by Amazon S3 object storage.
- File System Access API implementation for S3
- FileSystemDirectoryHandle and FileSystemFileHandle interfaces
- Streaming read/write via WritableStream
- Compatible with @b9g/filesystem abstractions
- Uses AWS SDK v3 for S3 operations
``bash`
npm install @b9g/filesystem-s3 @b9g/filesystem @aws-sdk/client-s3
`javascript
import { S3Client } from '@aws-sdk/client-s3';
import {
S3FileSystemDirectoryHandle,
S3FileSystemFileHandle,
S3FileSystemAdapter
} from '@b9g/filesystem-s3';
const s3Client = new S3Client({
region: 'us-east-1',
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
}
});
// Create directory handle
const rootDir = new S3FileSystemDirectoryHandle(s3Client, 'my-bucket-name', '');
// Get file handle
const fileHandle = await rootDir.getFileHandle('data/config.json');
const file = await fileHandle.getFile();
const config = JSON.parse(await file.text());
// Write file
const writable = await fileHandle.createWritable();
await writable.write(JSON.stringify({ updated: true }));
await writable.close();
`
- S3FileSystemDirectoryHandle - FileSystemDirectoryHandle for S3S3FileSystemFileHandle
- - FileSystemFileHandle for S3S3FileSystemWritableFileStream
- - WritableStream for S3S3FileSystemAdapter
- - Backend adapter for @b9g/filesystem
Implements FileSystemDirectoryHandle for S3.
Constructor: new S3FileSystemDirectoryHandle(s3Client: S3Client, bucket: string, prefix: string)
Methods:
- getFileHandle(name, options): Get a file handlegetDirectoryHandle(name, options)
- : Get a subdirectory handleremoveEntry(name, options)
- : Remove a file or directoryentries()
- : Async iterator over directory entrieskeys()
- : Async iterator over entry namesvalues()
- : Async iterator over entry handles
Implements FileSystemFileHandle for S3.
Constructor: new S3FileSystemFileHandle(s3Client: S3Client, bucket: string, key: string)
Methods:
- getFile(): Get the file as a File objectcreateWritable()
- : Create a writable stream for the file
Backend adapter for @b9g/filesystem registry.
Constructor: new S3FileSystemAdapter(s3Client: S3Client, bucket: string, config?: FileSystemConfig)`
MIT