Presentamos las importaciones recursivas para S3 en Transloadit
Nos entusiasma mostrarte una nueva incorporación a nuestro Robot /s3/import. Hasta ahora, no ofrecíamos una forma de importar archivos de forma recursiva desde tus buckets de Amazon S3 para usarlos en Transloadit. Normalmente, tenías que especificar cada carpeta en un Assembly Step, y eso puede suponer mucho trabajo.
En Transloadit, siempre estamos atentos a mejoras que puedan facilitarte el trabajo. Con las importaciones recursivas para S3, será mucho más cómodo importar carpetas muy anidadas, ¡o incluso un bucket de S3 entero de una sola vez!

¿Cómo funciona?
Puedes proporcionar un parámetro path al Robot,
igual que antes. Con recursive: false (que es false por defecto, para no romper la
compatibilidad con versiones anteriores), solo se importarán los archivos que estén directamente en
la carpeta que representa esa ruta. No se incluirá ningún otro archivo contenido en subcarpetas de
esa ruta. Con recursive: true, esos archivos también se importarían.
Y si proporcionas path: '/', 'recursive': true, ahora puedes
importar un bucket de S3 entero. Increíble, ¿verdad?
Por defecto, el Robot importa mil archivos por invocación. Sin embargo, existe soporte para la paginación con los parámetros
page_numberyfiles_per_page. Si vas a importar una gran cantidad de archivos y usas el Robot con paginación, deberías asegurarte de que no se añadan archivos a la ruta importada mientras tanto. De lo contrario, la paginación podría omitir algunos archivos.
El Template
{
"steps": {
"imported": {
"robot": "/s3/import",
"result": true,
"credentials": "s3_cred",
"path": "/",
"recursive": true
},
"resized": {
"use": ["imported"],
"robot": "/image/resize",
"result": true,
"height": 130,
"imagemagick_stack": "v2.0.3",
"width": 130,
"zoom": false
},
"exported": {
"use": ["imported", "resized"],
"robot": "/s3/store",
"credentials": "s3_cred",
"path": "${file.original_path}-resized@130/${file.basename}.${file.ext}"
}
}
}
Las Assembly Instructions anteriores muestran una instrucción típica para importar archivos y redimensionarlos con el Robot /s3/import. Fíjate en los cambios de dos parámetros clave que diferencian estas Instructions para una importación recursiva de las Instructions para una importación normal:
- La presencia de
"recursive": true. - El parámetro
pathque se pasa es la raíz del bucket de S3.
Cuando termine, todos los archivos importados aparecerán en el JSON de resultados de la Assembly.
Soporte para paginación
Como dijimos, el Robot /s3/import procesará mil archivos a la vez. Pero ¿y si no necesitas importar esos primeros mil archivos, o quizá el décimo lote de mil archivos? Para ayudarte con eso, hemos preparado soporte para la paginación. Ahora también puedes indicarle al Robot la página exacta desde la que debe empezar a importar. Echa un vistazo a las Assembly Instructions que aparecen a continuación:
{
"steps": {
"imported": {
"robot": "/s3/import",
"result": true,
"credentials": "s3_cred",
"path": "/",
"recursive": true,
"page_number": 10,
"files_per_page": 500
},
"resized": {
"use": ["imported"],
"robot": "/image/resize",
"result": true,
"height": 130,
"imagemagick_stack": "v2.0.3",
"width": 130,
"zoom": false
},
"exported": {
"use": ["imported", "resized"],
"robot": "/s3/store",
"credentials": "s3_cred",
"path": "${file.original_path}-resized@130/${file.basename}.${file.ext}"
}
}
}
Como puedes ver, le hemos dicho al Robot que empiece por la décima página e importe de forma recursiva quinientos archivos por página.
Hay un par de cosas que conviene tener especialmente en cuenta aquí:
- si proporcionas un número de página fuera de rango, el Robot no devolverá ningún resultado.
- si proporcionas un parámetro
files_per_pagemayor que 1000, se generará un error de validación. - si usas importaciones recursivas, todos los archivos se importarán en orden alfabético.
Eso es todo por nuestra parte. ¡Feliz importación! Y si tienes preguntas, comentarios o dudas, háznoslo saber.
