¿Qué son las Assembly Instructions?
Las Assembly Instructions de Transloadit definen los Steps con nombre de un flujo de trabajo de procesamiento de archivos. Cada Step selecciona un Robot y sus parámetros; el parámetro use determina cómo fluyen entre Steps los archivos subidos, importados o generados.
Cómo funcionan las Assembly Instructions
Las Instructions forman un grafo de procesamiento dirigido y acíclico, expresado mediante configuraciones de Steps con nombre y sus relaciones de entrada. Cada Step selecciona un Robot y sus parámetros, mientras que use determina qué subidas o resultados anteriores recibe el Step. Los Steps que importan o generan archivos pueden omitir use cuando no dependen de un Step anterior. Los demás Steps que omiten use se conectan implícitamente a la salida del Step precedente; el primer Step declarado usa :original de forma predeterminada. Declara use explícitamente cuando el orden de los Steps no deba determinar el grafo. El nombre reservado de Step :original hace referencia a los archivos subidos. Un Step declarado con ese nombre solo puede ejecutar el Robot /upload/handle, y ningún otro Step puede ejecutar ese Robot; un valor de use puede hacer referencia a :original sin declararlo como Step. El documento de Instructions es distinto de una Assembly, que es una ejecución del grafo, y de un Template, que guarda las Instructions para reutilizarlas. Antes de que comience el procesamiento multimedia, Transloadit valida que cada Step sea un objeto bien formado que indique un Robot existente, que cada referencia declarada en use se resuelva y que el grafo no contenga ciclos.
Datos clave
- 1Los nombres de los Steps son identificadores del grafo. Si
useindica un Step que no existe, Transloadit rechaza la Assembly con ASSEMBLY_STEP_UNKNOWN_USE (HTTP 400) antes de que comience el procesamiento. - 2Los resultados de un Step pueden alimentar varios Steps posteriores, por lo que cada derivado no necesita su propia subida o importación. Esos Steps se ejecutan en paralelo en cuanto su Step de entrada emite archivos, así que, con valores explícitos de
use, el orden en que se declaran los Steps no determina el orden en que se producen o exportan los resultados. El orden de declaración solo importa cuando un Step omiteusey se conecta implícitamente al Step precedente. - 3Un Template mantiene la lógica reutilizable del flujo de trabajo fuera de las solicitudes de los clientes. De forma predeterminada, los clientes pueden sobrescribir los Steps; establece
allow_steps_overrideen false en el Template, y las solicitudes que aun así incluyan Steps se rechazan con TEMPLATE_DENIES_STEPS_OVERRIDE (HTTP 400). El ajuste solo abarca los Steps: los demás parámetros de la solicitud siguen combinándose con el Template y prevaleciendo sobre sus valores. Para impedir que quienes realizan llamadas y no son de confianza los cambien, exige Signature Authentication (mediante el ajuste del Workspace orequire_signature_authen el Template) y haz que un backend de confianza firme únicamente los parámetros que apruebe. El requisito se aplica a las solicitudes autenticadas con una Auth Key; los tokens Bearer válidos no están sujetos a él. Una firma solo cubre el valor serializado deparams. Los campos del formulario de subida enviados junto con él no están firmados, rellenan${fields.*}y tienen prioridad sobre los valores del mismo nombre en la clave firmadafields, por lo que un Template bloqueado que construye una ruta de almacenamiento u otro ajuste a partir de${fields.*}sigue permitiendo que quien realiza la llamada elija ese valor. - 4Un Step que no produce nada no necesariamente ha fallado. De forma predeterminada, un Robot ignora los tipos de archivo que no maneja (el ejemplo de la documentación es
/video/encodeignorando imágenes), por lo que una rama puede simplemente no producir nada para esos archivos. Usa/file/filterpara dirigir deliberadamente subidas de tipos diversos; la documentación reservaforce_acceptpara la depuración y los casos excepcionales.
Cuándo importan las Assembly Instructions
Guarda las Instructions en un Template cuando quienes realizan las llamadas deban reutilizar un flujo de trabajo gestionado en el servidor. Si no deben modificar sus Steps, establece allow_steps_override en false; para impedir que también cambien otros parámetros de la solicitud, exige Signature Authentication para las solicitudes realizadas con tu Auth Key. Ninguno de estos controles abarca los campos del formulario de subida, así que no derives de ${fields.*} un ajuste cuyo valor no deban elegir quienes realizan las llamadas. Al generar Instructions o cambiar los nombres de los Steps, comprueba que cada valor de use haga referencia al nombre de un Step declarado o a :original para que la Assembly supere la validación.
Cómo ayuda Transloadit con las Assembly Instructions
Transloadit valida y ejecuta las Assembly Instructions como el flujo de trabajo de una Assembly. Cada Step con nombre invoca un Robot para subir, importar, procesar, analizar, almacenar o servir archivos, y el parámetro use dirige los resultados entre Steps. Un Template almacena Instructions para reutilizarlas, una Assembly es una ejecución de estas, y el Assembly Status y las Notifications informan del resultado.
Fuentes
- Documentación de Transloadit: Assembly Instructions (parámetros de Step, orden de ejecución)
- Documentación de Transloadit: Uso avanzado del parámetro use
- Documentación de Transloadit: Templates (sobrescribir Templates en tiempo de ejecución)
- API de Transloadit: Códigos de respuesta (errores de validación de Steps y Templates)
- Robot de Transloadit: /upload/handle (restricciones del Step :original)
- API de Transloadit: Crear un nuevo Template (allow_steps_override, require_signature_auth)
- API de Transloadit: Autenticación (Signature Authentication, tokens Bearer)
- Robot de Transloadit: /file/filter (Steps condicionales)
- Documentación de Transloadit: Assembly Variables (campos del formulario y la clave fields)
- Preguntas frecuentes de Transloadit: ¿Cómo puedo asegurarme de que una imagen procede realmente del usuario correcto? (qué cubre una firma)