S3 Compatible Storage
Descripcion
Sección titulada «Descripcion»Este modulo permite realizar operaciones de almacenamiento con cualquier servicio compatible con el protocolo S3 de Amazon. Funciona con proveedores como Linode Object Storage, DigitalOcean Spaces, MinIO, Wasabi, Backblaze B2, Cloudflare R2 y cualquier otro servicio que implemente la API S3.
La implementacion es identica al modulo AWS S3 pero con soporte para endpoints personalizados y la opcion forcePathStyle activada por defecto para compatibilidad. Soporta: listar buckets, listar objetos, descargar, subir (con soporte ACL), eliminar, obtener metadata, copiar y generar URLs prefirmadas.
Configuracion
Sección titulada «Configuracion»| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
| credentials_id | credentials | Si | Cuenta de almacenamiento S3 compatible |
| operation | select | Si | Operacion: listBuckets, listObjects, getObject, putObject, deleteObject, headObject, copyObject, getPresignedUrl |
| bucket | text | Condicional | Nombre del bucket/contenedor |
| key | text | Condicional | Clave/ruta del objeto |
| prefix | text | No | Prefijo para filtrar (carpeta) |
| maxKeys | number | No | Maximo de objetos a listar (1-1000, default: 100) |
| returnAsBase64 | boolean | No | Retornar como Base64 (para binarios) |
| bodyKey | text | No | Campo en datos de entrada con el contenido (default: fileContent) |
| contentType | select | No | Tipo MIME del archivo |
| isBase64 | boolean | No | El contenido viene codificado en Base64 |
| acl | select | No | Permisos: private, public-read, public-read-write, authenticated-read |
| sourceKey | text | Condicional | Clave del objeto origen (para copiar) |
| destinationKey | text | Condicional | Clave de destino (para copiar) |
| destinationBucket | text | No | Bucket destino (vacio = mismo bucket) |
| expiresIn | select | No | Expiracion URL: 300 a 604800 segundos |
| outputKey | text | No | Clave donde almacenar el resultado |
Credenciales
Sección titulada «Credenciales»Tipo de servicio: s3_compatible. Se almacenan en la tabla servicecredentials.
Campos de configuracion:
- endpoint: URL del endpoint del servicio (ej: https://us-east-1.linodeobjects.com)
- accessKeyId: Access Key del servicio
- secretAccessKey: Secret Key del servicio
- region: Region del servicio (default: us-east-1)
- forcePathStyle: Usar path-style (default: true, recomendado para compatibilidad)
{ "nextModule": "siguiente_modulo", "data": { "objects": [ { "key": "archivos/documento.pdf", "size": 98765, "lastModified": "2025-01-15T10:30:00.000Z", "etag": "\"def456\"" } ], "folders": ["archivos/", "backups/"], "isTruncated": false }, "_meta_": { "operation": "listObjects", "bucket": "mi-contenedor", "service": "s3_compatible" }}Ejemplo de Uso
Sección titulada «Ejemplo de Uso»Caso basico - Subir archivo con ACL publico
Sección titulada «Caso basico - Subir archivo con ACL publico»{ "credentials_id": 1, "operation": "putObject", "bucket": "mi-contenedor", "key": "imagenes/foto.jpg", "bodyKey": "fileContent", "contentType": "image/jpeg", "isBase64": true, "acl": "public-read"}API Utilizada
Sección titulada «API Utilizada»- Protocolo S3 via @aws-sdk/client-s3 con endpoint personalizado
- Compatible con: Linode, DigitalOcean Spaces, MinIO, Wasabi, Backblaze B2, Cloudflare R2
- A diferencia del modulo AWS S3, este modulo soporta un endpoint personalizado y forcePathStyle
- El parametro ACL permite controlar los permisos de acceso por objeto (no disponible en todos los proveedores)
- El forcePathStyle esta activado por defecto para maxima compatibilidad con proveedores S3
- Las URLs prefirmadas funcionan con la mayoria de proveedores S3 compatibles
- Algunos proveedores pueden no soportar todas las operaciones (ej: versionado, storage classes)
- El parametro
continueOnErrorpermite que el workflow continue incluso si la operacion falla