Saltar a contenido

Acción: S3 / Almacenamiento en la Nube (s3_api)

Este nodo permite que una automatización lea, escriba, elimine o administre archivos y carpetas en un bucket S3 (Amazon S3 o cualquier servicio compatible como MinIO, Wasabi, Backblaze B2, etc.). Se usa para guardar evidencias, descargar configuraciones, archivar grabaciones y cualquier flujo que requiera interacción con almacenamiento en la nube.

¿Cuándo usarlo?

  • Cuando una automatización debe subir evidencias o capturas (fotos de cámaras, logs de eventos) a un bucket S3.
  • Cuando necesitás descargar un archivo de configuración o plantilla desde S3 para procesarlo en el flujo.
  • Cuando querés archivar grabaciones de video o reportes de acceso en almacenamiento externo.
  • Cuando un flujo de auditoría requiere eliminar archivos vencidos de un bucket de retención.
  • Cuando necesitás listar o buscar archivos para tomar decisiones dinámicas en el flujo.
  • Cuando usás MinIO u otro S3 compatible instalado on-premise dentro de la instalación.

Si lo que necesitás es enviar el archivo por email, combiná este nodo con el nodo Acción: Enviar Email. Si el archivo viene de una URL de cámara o sensor, primero usá un nodo HTTP para obtenerlo y luego súbelo con este nodo.


Cómo configurarlo

Paso 0) Abrir la parametrización

  • En el canvas de automatizaciones, hacé doble click sobre el nodo S3 API.
  • Se abre un modal con dos pestañas: Form y JSON Editor. Usá Form salvo que seas usuario avanzado.

alt text


Paso 1) Configurar las credenciales AWS

El nodo requiere credenciales de tipo AWS para conectarse al bucket.

  • Usá el selector de credenciales para elegir una credencial existente o crear una nueva.
  • Las credenciales almacenan de forma segura:
Campo Descripción Ejemplo
Access Key ID Clave de acceso de AWS o del servicio S3 compatible AKIAIOSFODNN7EXAMPLE
Secret Access Key Clave secreta correspondiente wJalrXUtnFEMI/K7MDENG/...
Region Región del bucket (para AWS) o cualquier valor (para S3 compatibles) us-east-1, eu-west-1
Endpoint URL del servidor S3 (obligatorio solo para servicios compatibles) https://minio.instalacion.com

Para Amazon S3 oficial, dejá el campo Endpoint vacío — el sistema usa la URL estándar de AWS. Para MinIO u otros S3 compatibles, el Endpoint es obligatorio.

alt text


Paso 2) Force Path Style (solo para S3 compatibles)

El switch Force Path Style cambia el formato de la URL con que el nodo accede al bucket.

Estado URL generada Cuándo usarlo
Apagado https://mi-bucket.s3.amazonaws.com/archivo.jpg Amazon S3 estándar
Encendido https://minio.host.com/mi-bucket/archivo.jpg MinIO, Backblaze, Wasabi, Cloudflare R2
  • Por defecto está apagado (compatible con AWS).
  • Si usás un servidor S3 propio (MinIO, etc.), activalo.

Paso 3) Elegir la acción

El campo Action define qué operación realiza el nodo sobre el bucket. Hay 12 operaciones disponibles:

Operaciones sobre Buckets

Acción Qué hace Campos adicionales requeridos
List Buckets Lista todos los buckets accesibles con las credenciales Ninguno
Create Bucket Crea un bucket nuevo con el nombre indicado Bucket Name
Delete Bucket Elimina un bucket (debe estar vacío) Bucket Name
Search Bucket Busca buckets cuyo nombre contenga el término indicado Search Term

Operaciones sobre Archivos

Acción Qué hace Campos adicionales requeridos
List Files Lista archivos dentro de un bucket (con prefijo opcional) Bucket Name, Prefix (opcional), Max Results
Upload File Sube un archivo desde una URL a un bucket Bucket Name, Key, File URL, Content Type
Download File Descarga un archivo del bucket (lo pasa al siguiente nodo) Bucket Name, Key
Copy File Copia un archivo de un bucket/ruta a otro Source Bucket, Source Key, Dest Bucket, Dest Key
Delete File Elimina un archivo del bucket Bucket Name, Key

Operaciones sobre Carpetas

Acción Qué hace Campos adicionales requeridos
List Folders Lista carpetas dentro de un bucket con un prefijo dado Bucket Name, Prefix (opcional), Max Results
Create Folder Crea una "carpeta" (objeto vacío con / al final del nombre) Bucket Name, Prefix
Delete Folder Elimina una carpeta y su contenido Bucket Name, Prefix

alt text


Paso 4) Completar los campos según la acción

Los campos aparecen y desaparecen automáticamente según la acción seleccionada.

Campos comunes

Campo Descripción Ejemplo
Bucket Name Nombre exacto del bucket donde se opera evidencias-camaras-2024
Key Ruta y nombre del archivo dentro del bucket zona-norte/cam01-20240506.jpg
Prefix Prefijo para filtrar archivos o carpetas (actúa como ruta de carpeta) grabaciones/enero/
Max Results Cantidad máxima de resultados en listados (0 = sin límite) 500

Campos específicos de Upload

Campo Descripción Ejemplo
File URL URL pública o accesible del archivo a subir https://cam01.local/snapshot.jpg
Content Type Tipo MIME del archivo (importante para descarga correcta desde browsers) image/jpeg, application/pdf

Campos específicos de Copy

Campo Descripción Ejemplo
Source Bucket Bucket de origen evidencias-raw
Source Key Ruta del archivo a copiar zona-norte/evento-001.mp4
Dest Bucket Bucket de destino evidencias-archivadas
Dest Key Ruta del archivo copiado en destino 2024/mayo/zona-norte-001.mp4
Campo Descripción Ejemplo
Search Term Texto a buscar en los nombres de los buckets camaras-norte

Buenas prácticas

  • Usá credenciales con permisos mínimos: si el nodo solo sube archivos, la credencial no necesita permisos de borrado ni creación de buckets.
  • Nombrá los keys con estructura de carpetas: zona/fecha/evento.jpg es más fácil de auditar que archivo123.jpg.
  • Definí el Content Type correctamente: en Upload File, un content_type incorrecto puede impedir que los archivos se abran desde el browser o el sistema de reportes.
  • Usá Max Results para limitar listados grandes: en buckets con miles de archivos, un listado sin límite puede hacer lento el flujo.
  • Para MinIO on-premise: siempre activá Force Path Style y configurá el Endpoint con la URL interna del servidor.
  • No uses el mismo bucket para archivos temporales y de retención a largo plazo: separá en buckets por tipo de retención.
  • Probá las credenciales primero con List Buckets: es la acción más inofensiva para verificar que la conexión funciona.

Troubleshooting (problemas comunes)

  • El nodo falla con error de autenticación (403)
  • Verificá que el Access Key ID y Secret Access Key sean correctos.
  • Asegurate de que la credencial AWS tenga permisos para la operación que estás ejecutando.
  • Confirmá que la Region coincida con la región del bucket en AWS.

  • El nodo falla con "No such bucket" o "Bucket not found"

  • Revisá que el Bucket Name esté escrito exactamente igual (sensible a mayúsculas).
  • Verificá que la credencial tenga acceso a ese bucket específico.

  • No se puede conectar al servidor (timeout o connection refused)

  • Para S3 compatible (MinIO), verificá que el Endpoint sea accesible desde el servidor de automatizaciones.
  • Comprobá que Force Path Style esté activado si usás MinIO u otro servicio compatible.
  • Verificá que el endpoint use https:// o http:// según corresponda.

  • El archivo se sube pero no se puede abrir correctamente

  • Revisá el campo Content Type. Para imágenes JPEG usar image/jpeg, para PDF usar application/pdf.

  • List Files devuelve resultados vacíos pero el bucket tiene archivos

  • Si configuraste un Prefix, verificá que coincida con la ruta real de los archivos.
  • Un prefix zona-norte/ solo lista archivos cuya ruta empiece exactamente con zona-norte/.

  • Delete Bucket falla con error "BucketNotEmpty"

  • El bucket debe estar vacío antes de eliminarlo. Eliminá los archivos primero o usá Delete File en un bucle.

Configuración avanzada (JSON Editor) — solo usuarios expertos

La pestaña JSON Editor permite ver y editar directamente la estructura del nodo. Útil para copiar configuraciones entre flujos o instancias.

Estructura completa del input

{
  "endpoint": "https://minio.instalacion.com",
  "region": "/**$credential(\"region\", 1)**/",
  "access_key_id": "/**$credential(\"access_key_id\", 1)**/",
  "secret_access_key": "/**$credential(\"secret_access_key\", 1)**/",
  "force_path_style": false,
  "action": "upload_file",
  "bucket_name": "evidencias-camaras",
  "key": "zona-norte/cam01-20240506.jpg",
  "file_url": "https://cam01.local/snapshot.jpg",
  "content_type": "image/jpeg",
  "search_term": "",
  "source_bucket": "",
  "source_key": "",
  "dest_bucket": "",
  "dest_key": "",
  "prefix": "",
  "max_results": 0
}

Tabla de todos los campos

Campo Tipo Requerido por Descripción
endpoint string S3 compatibles (MinIO, etc.) URL del servidor S3. Vacío para Amazon S3 oficial
region string Siempre Región del bucket (referencia a credencial)
access_key_id string Siempre Clave de acceso (referencia a credencial)
secret_access_key string Siempre Clave secreta (referencia a credencial)
force_path_style boolean S3 compatibles true para MinIO y otros S3 compatibles
action string Siempre Una de las 12 acciones disponibles
bucket_name string La mayoría de acciones (excepto search, copy, list_buckets) Nombre del bucket
search_term string search_bucket Texto a buscar en nombres de buckets
key string upload_file, download_file, delete_file Ruta completa del archivo en el bucket
source_bucket string copy_file Bucket de origen de la copia
source_key string copy_file Ruta del archivo a copiar
dest_bucket string copy_file Bucket de destino de la copia
dest_key string copy_file Ruta del archivo en el destino
file_url string upload_file URL del archivo a subir al bucket
content_type string upload_file Tipo MIME del archivo (ej: image/jpeg)
prefix string get_many_files, create_folder, delete_folder, get_many_folders Prefijo/ruta de carpeta
max_results number get_many_files, get_many_folders Límite de resultados. 0 = sin límite

Los campos access_key_id, secret_access_key, region y endpoint son referencias a credenciales cuando se configuran desde el formulario. No pongas claves en texto plano en el JSON.


Ejemplos JSON por caso de uso

Subir una imagen al bucket de evidencias

{
  "endpoint": "",
  "region": "/**$credential(\"region\", 5)**/",
  "access_key_id": "/**$credential(\"access_key_id\", 5)**/",
  "secret_access_key": "/**$credential(\"secret_access_key\", 5)**/",
  "force_path_style": false,
  "action": "upload_file",
  "bucket_name": "evidencias-seguridad",
  "key": "zona-norte/camara01-2024-05-06.jpg",
  "file_url": "https://cam01.local/api/snapshot",
  "content_type": "image/jpeg"
}

Listar archivos de un mes en MinIO on-premise

{
  "endpoint": "http://minio.instalacion.interna:9000",
  "region": "/**$credential(\"region\", 3)**/",
  "access_key_id": "/**$credential(\"access_key_id\", 3)**/",
  "secret_access_key": "/**$credential(\"secret_access_key\", 3)**/",
  "force_path_style": true,
  "action": "get_many_files",
  "bucket_name": "grabaciones-cctv",
  "prefix": "2024/mayo/",
  "max_results": 200
}

Copiar un archivo a bucket de archivo histórico

{
  "endpoint": "",
  "region": "/**$credential(\"region\", 5)**/",
  "access_key_id": "/**$credential(\"access_key_id\", 5)**/",
  "secret_access_key": "/**$credential(\"secret_access_key\", 5)**/",
  "force_path_style": false,
  "action": "copy_file",
  "source_bucket": "evidencias-activas",
  "source_key": "evento-2024-001/video.mp4",
  "dest_bucket": "archivo-historico-2024",
  "dest_key": "mayo/evento-001/video.mp4"
}

Eliminar archivo de bucket temporal

{
  "endpoint": "",
  "region": "/**$credential(\"region\", 5)**/",
  "access_key_id": "/**$credential(\"access_key_id\", 5)**/",
  "secret_access_key": "/**$credential(\"secret_access_key\", 5)**/",
  "force_path_style": false,
  "action": "delete_file",
  "bucket_name": "evidencias-temporales",
  "key": "tmp/snapshot-20240101.jpg"
}

Guías rápidas (recetas)

Receta A — "Subir foto de cámara al activarse una alarma"

  • Action: Upload File
  • Bucket Name: evidencias-alarmas
  • Key: zona-norte/{{fecha}}-{{id-evento}}.jpg
  • File URL: URL del snapshot de la cámara
  • Content Type: image/jpeg
  • Resultado: la evidencia queda guardada automáticamente en S3 al dispararse la alarma

Receta B — "Archivar grabaciones de la semana pasada"

  • Action: List Files → luego Copy File por cada archivo → luego Delete File
  • Bucket Name: grabaciones-activas
  • Prefix: semana-anterior/
  • Dest Bucket: archivo-historico
  • Resultado: las grabaciones se mueven al bucket de archivo sin intervención manual

Receta C — "Descargar configuración desde S3 al iniciar un flujo"

  • Action: Download File
  • Bucket Name: configs-instalacion
  • Key: dispositivos/perfil-camaras.json
  • Resultado: el archivo de configuración queda disponible para el siguiente nodo del flujo

Receta D — "Verificar si existe un reporte antes de generarlo"

  • Action: List Files
  • Bucket Name: reportes-mensuales
  • Prefix: 2024/mayo/
  • Max Results: 1
  • Resultado: si el listado devuelve resultados, saltear la generación; si está vacío, generarlo

Receta E — "Crear estructura de carpetas para nueva instalación"

  • Action: Create Folder
  • Bucket Name: instalaciones
  • Prefix: instalacion-nueva-2024/camaras/
  • Luego repetir para otras subcarpetas (accesos/, reportes/, evidencias/)
  • Resultado: la estructura de almacenamiento queda lista antes de que lleguen los dispositivos

Receta F — "Limpiar archivos temporales de procesamiento"

  • Action: Delete Folder
  • Bucket Name: procesamiento-tmp
  • Prefix: jobs/completados/
  • Resultado: el espacio de almacenamiento temporal se libera automáticamente al finalizar los procesos

Referencias internas

  • Key del nodo: s3_api
  • Clase: action
  • Campos siempre requeridos: region, access_key_id, secret_access_key, action
  • Credencial requerida: tipo aws (Access Key ID, Secret Access Key, Region, Endpoint)
  • Servicios compatibles: Amazon S3, MinIO, Wasabi, Backblaze B2, Cloudflare R2, Google Cloud Storage (modo S3 compatible)
  • Force Path Style: requerido para MinIO y servicios S3 compatibles que no soportan virtual-hosted style