@gune/storage-s3
v0.1.0
Published
AWS S3 and compatible storage strategy
Readme
@gune/storage-s3
AWS S3 and S3-compatible storage strategy for the Gune Storage system.
Installation
npm install @gune/storage-s3 @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presignerUsage
Standalone
import { S3StorageStrategy } from '@gune/storage-s3';
const storage = new S3StorageStrategy({
region: 'us-east-1',
bucket: 'my-bucket',
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
},
});
// Upload a file
const result = await storage.store(
Buffer.from('Hello World'),
'hello.txt',
{ contentType: 'text/plain' }
);With NestJS
import { StorageModule } from '@gune/storage-nestjs';
import { S3StorageStrategy } from '@gune/storage-s3';
@Module({
imports: [
StorageModule.forRoot({
strategy: new S3StorageStrategy({
region: process.env.AWS_REGION,
bucket: process.env.S3_BUCKET,
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
},
}),
}),
],
})
export class AppModule {}Configuration
S3StorageStrategyConfig
region: AWS region (e.g., 'us-east-1')bucket: S3 bucket namecredentials: AWS credentialsaccessKeyId: AWS access key IDsecretAccessKey: AWS secret access key
endpoint?: Custom endpoint for S3-compatible services (e.g., MinIO, DigitalOcean Spaces)forcePathStyle?: Use path-style URLs (required for some S3-compatible services)
S3-Compatible Services
Works with MinIO, DigitalOcean Spaces, Wasabi, and other S3-compatible storage:
new S3StorageStrategy({
region: 'us-east-1',
bucket: 'my-bucket',
endpoint: 'https://nyc3.digitaloceanspaces.com',
forcePathStyle: false,
credentials: {
accessKeyId: process.env.SPACES_KEY,
secretAccessKey: process.env.SPACES_SECRET,
},
});Features
- File upload to S3 & S3 compatible storage, i.e., Digital Ocean
- Stream support
- Pre-signed URL generation
- File retrieval
- File deletion
- Metadata support
- S3-compatible storage support
License
MIT © BUDDGUN92
