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.

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.

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 |

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 específico de Search¶
| 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.jpges más fácil de auditar quearchivo123.jpg. - Definí el Content Type correctamente: en
Upload File, uncontent_typeincorrecto 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://ohttp://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 usarapplication/pdf. -
List Filesdevuelve 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 conzona-norte/. -
Delete Bucketfalla con error "BucketNotEmpty" - El bucket debe estar vacío antes de eliminarlo. Eliminá los archivos primero o usá
Delete Fileen 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,regionyendpointson 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→ luegoCopy Filepor cada archivo → luegoDelete 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