Skip to content

S3 Assets

The S3 Assets module (@zumito-team/s3-assets) is a FileManager implementation for any S3-compatible object storage. Works with AWS S3, DigitalOcean Spaces, MinIO, Cloudflare R2, and any service that speaks the S3 protocol.

Terminal window
npm install @zumito-team/s3-assets
zumito.config.ts
import { S3AssetsModule } from '@zumito-team/s3-assets';
export const config = {
bundles: [
{
path: 'node_modules/@zumito-team/s3-assets',
options: {
bucket: 'my-bucket',
region: 'nyc3',
endpoint: 'https://nyc3.digitaloceanspaces.com',
accessKeyId: 'DO00...',
secretAccessKey: '...',
publicUrlBase: 'https://my-bucket.cdn.example.com',
},
},
],
};
import { S3AssetsModule, ServiceContainer, S3FileManager } from '@zumito-team/s3-assets';
new S3AssetsModule({
bucket: 'my-bucket',
region: 'nyc3',
endpoint: 'https://nyc3.digitaloceanspaces.com',
accessKeyId: 'DO00...',
secretAccessKey: '...',
publicUrlBase: 'https://my-bucket.cdn.example.com',
});
const fm = ServiceContainer.getService(S3FileManager);
new S3AssetsModule({
bucket: 'my-space',
region: 'nyc3',
endpoint: 'https://nyc3.digitaloceanspaces.com',
accessKeyId: 'DO00...',
secretAccessKey: '...',
publicUrlBase: 'https://my-space.nyc3.cdn.digitaloceanspaces.com',
});
const fm = ServiceContainer.getService(S3FileManager);
// Upload
const url = await fm.put('uploads/doc.pdf', pdfBuffer, 'application/pdf');
// Download
const data = await fm.get('uploads/doc.pdf');
// Check existence
const ok = await fm.exists('uploads/doc.pdf');
// List by prefix
const files = await fm.list('uploads/');
// Delete
await fm.delete('uploads/doc.pdf');

Pass a pre-configured S3Client for maximum control:

import { S3Client } from '@aws-sdk/client-s3';
const client = new S3Client({ /* custom config */ });
new S3AssetsModule(client);
const fm = ServiceContainer.getService(S3FileManager);
fm.setBucket('my-bucket');
fm.setPublicUrlBase('https://cdn.example.com');
OptionTypeRequiredDefaultDescription
bucketstringyes*Bucket/space name.
regionstringnous-east-1S3 region.
endpointstringnoS3 endpoint URL (required for MinIO/Spaces/R2).
accessKeyIdstringno**Access key.
secretAccessKeystringno**Secret key.
publicUrlBasestringnoBase URL for building public URLs (e.g., CDN).
forcePathStylebooleannotrue if endpoint setForce path-style addressing.

*Not required when passing a custom S3Client (use setBucket() instead). **Not required when passing a custom S3Client.

  • @aws-sdk/client-s3 — AWS S3 SDK v3 (compatible with all S3-compatible providers).
  • @zumito-team/file-manager — FileManager abstract contract.
  • zumito-framework