@quadcore-lib/storage-s3
v0.1.0
Published
Driver de `@quadcore-lib/storage-server` que sube/firma/borra archivos en S3 o compatibles (AWS S3, Cloudflare R2, MinIO), en reemplazo de `LocalStorageDriver` para producción.
Readme
@quadcore-lib/storage-s3
Driver de @quadcore-lib/storage-server que sube/firma/borra archivos en S3 o compatibles (AWS S3, Cloudflare R2, MinIO), en reemplazo de LocalStorageDriver para producción.
Instalación
npm install @quadcore-lib/storage-s3Uso
import { QuadcoreStorageModule } from '@quadcore-lib/storage-server';
import { S3StorageDriver } from '@quadcore-lib/storage-s3';
QuadcoreStorageModule.forRoot({
driver: new S3StorageDriver({
bucket: 'mi-bucket',
region: 'us-east-1',
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
// publicBaseUrl: 'https://cdn.tienda.com', // si el bucket está detrás de un CDN
}),
keyPrefix: 'products',
maxSizeBytes: 5 * 1024 * 1024,
allowedMimeTypes: ['image/png', 'image/jpeg', 'image/webp'],
});Para Cloudflare R2 o MinIO (o cualquier endpoint compatible con la API de S3):
new S3StorageDriver({
bucket: 'mi-bucket',
region: 'auto', // R2 usa 'auto'; MinIO puede usar cualquier valor
endpoint: 'https://<account-id>.r2.cloudflarestorage.com', // o http://localhost:9000 en MinIO
forcePathStyle: true, // requerido por MinIO y por algunos setups de R2
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
});API
| Export | Descripción |
|---|---|
| S3StorageDriver | Implementa StorageDriver (put, getSignedUrl, remove) de @quadcore-lib/storage-server sobre AWS SDK v3. |
| S3StorageOptions | bucket, region (requeridos); endpoint, forcePathStyle, accessKeyId, secretAccessKey, publicBaseUrl, defaultExpiresInSeconds (opcionales). |
put() sube el buffer al bucket y devuelve la url pública (publicBaseUrl si está seteada, si no la URL del bucket/endpoint). getSignedUrl() genera una URL firmada temporal vía @aws-sdk/s3-request-presigner (default 3600s). Las keys pasan por la misma validación que LocalStorageDriver (vacía, null byte, absoluta o con .. → 400), por paridad entre drivers.
Requisitos
@quadcore-lib/storage-server(trae la interfazStorageDrivery el módulo que consume este driver).@nestjs/common>=10(peer).- Credenciales de S3/R2/MinIO con permisos
PutObject,GetObject,DeleteObjectsobre el bucket.
