Saltearse al contenido

S3 Compatible Storage

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.

ParametroTipoRequeridoDescripcion
credentials_idcredentialsSiCuenta de almacenamiento S3 compatible
operationselectSiOperacion: listBuckets, listObjects, getObject, putObject, deleteObject, headObject, copyObject, getPresignedUrl
buckettextCondicionalNombre del bucket/contenedor
keytextCondicionalClave/ruta del objeto
prefixtextNoPrefijo para filtrar (carpeta)
maxKeysnumberNoMaximo de objetos a listar (1-1000, default: 100)
returnAsBase64booleanNoRetornar como Base64 (para binarios)
bodyKeytextNoCampo en datos de entrada con el contenido (default: fileContent)
contentTypeselectNoTipo MIME del archivo
isBase64booleanNoEl contenido viene codificado en Base64
aclselectNoPermisos: private, public-read, public-read-write, authenticated-read
sourceKeytextCondicionalClave del objeto origen (para copiar)
destinationKeytextCondicionalClave de destino (para copiar)
destinationBuckettextNoBucket destino (vacio = mismo bucket)
expiresInselectNoExpiracion URL: 300 a 604800 segundos
outputKeytextNoClave donde almacenar el resultado

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"
}
}
{
"credentials_id": 1,
"operation": "putObject",
"bucket": "mi-contenedor",
"key": "imagenes/foto.jpg",
"bodyKey": "fileContent",
"contentType": "image/jpeg",
"isBase64": true,
"acl": "public-read"
}
  • 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 continueOnError permite que el workflow continue incluso si la operacion falla
  • AWS S3 - Operaciones con Amazon S3 nativo
  • Manage S3 - Gestion simplificada de archivos en S3