Smart CDN mejorado con detección facial mediante IA

Nuestro Smart CDN es una de las funciones más interesantes que hemos lanzado en los últimos años. Ayuda a nuestros usuarios a obtener los tiempos de respuesta más rápidos que podemos ofrecer y, aunque está en fase beta, avanza a grandes pasos cada día. Hoy nos entusiasma anunciar que hemos actualizado la lista de Robots compatibles, que ahora incluye /image/facedetect, nuestro Robot basado en IA.

Recientemente, sustituimos la API que usábamos por el servicio de IA de AWS, lo que mejoró nuestro Robot de detección facial y ayudó a acelerar la transcodificación al importar archivos desde un bucket de S3. Esto significa que /image/facedetect, nuestro Robot, ahora encaja a la perfección con nuestro Smart CDN.
Sigue leyendo para conocer brevemente cómo puedes aprovechar esta actualización.
Configuración
Antes de empezar con un ejemplo, necesitamos algún servicio de almacenamiento en la nube que contenga una imagen con algunos rostros y un Template. Como nuestra API se ejecuta en AWS, recomendamos almacenar tus archivos en un bucket de S3 para obtener la menor latencia posible. Si prefieres otra opción, puedes elegir uno de nuestros otros Robots de importación.
Empecemos por crear nuestro Template. Asegúrate de anotar el nombre de tu Template, ya que lo necesitaremos más adelante en esta demostración.
{
"steps": {
"imported": {
"robot": "/s3/import",
"result": true,
"credentials": "YOUR_S3_CREDENTIALS",
"path": "upload/${fields.input}"
},
"facedetect": {
"robot": "/image/facedetect",
"use": "imported",
"crop": true,
"faces": "${fields.type}",
"format": "preserve",
"crop_padding": "10%",
"result": true
},
"served": {
"use": "facedetect",
"robot": "/file/serve"
}
}
}
Como mencionamos antes, usamos S3 en nuestro Template para
importar el archivo. Lo fundamental en el primer Step,
«imported», es el parámetro path. Su valor especifica que queremos acceder
a una carpeta concreta. Luego se configura una
Assembly Variable para determinar qué archivo
queremos solicitar en nuestra transformación mediante URL.
La imagen importada se pasa al Step
facedetect, donde
/image/facedetect, nuestro Robot
basado en IA, se encarga de la detección facial. De nuevo, este Step usa
Assembly Variables para interactuar con el parámetro
faces cuando se solicita la URL que creamos. Si quieres una explicación más
detallada de este parámetro, puedes encontrarla en nuestra publicación anterior
sobre /image/facedetect.
Para completar nuestro Template, usamos /file/serve, el Robot que entrega el resultado de nuestra Assembly.
Signature Authentication
También me gustaría mostrarte brevemente lo fácil que es añadir Signature Authentication a nuestro método de transformación mediante URL.
No es necesario configurar Signature Authentication, pero sí lo recomendamos como buena práctica. Las URL firmadas con un plazo de vencimiento limitan las transformaciones no autorizadas y el tiempo durante el que se puede reutilizar una URL, pero no constituyen una defensa completa contra los ataques DDoS. Además, probablemente solo necesites unos minutos adicionales para implementarlo en tu backend.
Si quieres ver cómo usar nuestro Smart CDN sin Signature Authentication, puedes hacerlo en la página de entrega de contenido de nuestro sitio web.
Código
Para este ejemplo, hemos escrito la Signature Authentication en Node.js. Si prefieres usar otro lenguaje en tu backend, puedes ver algunos ejemplos aquí.
Instala nuestras utilidades compartidas en tu proyecto de servidor:
yarn add @transloadit/utils
import { getSignedSmartCdnUrl } from '@transloadit/utils/node'
const authSecret = process.env.TRANSLOADIT_AUTH_SECRET
const authKey = process.env.TRANSLOADIT_AUTH_KEY
if (!authSecret || !authKey) throw new Error('Set your Transloadit credentials on the server')
const url = getSignedSmartCdnUrl({
workspace: 'YOUR-WORKSPACE',
template: 'YOUR-TEMPLATE-NAME',
input: 'faces.jpg',
authKey,
authSecret,
expiresAt: Date.now() + 60 * 60 * 1000,
urlParams: { type: 'max-confidence' },
})
console.log(url)
Ejecuta este programa en tu servidor, nunca en el navegador. Usa la Auth Key habilitada para Smart CDN y su Auth Secret correspondiente. La biblioteca genera una firma HMAC a partir de la ruta de la URL y los parámetros de consulta ordenados, incluido un tiempo de vencimiento en milisegundos. Autentica la URL; no la cifra ni expone el Auth Secret.
Sustituye YOUR-TEMPLATE-NAME por el nombre de tu propio
Template y establece input con el
nombre de tu imagen. En este ejemplo, el archivo se llama faces.jpg.
El campo type de urlParams pasa
max-confidence a la Assembly Variable de nuestro
Template. La biblioteca se encarga de ordenar los parámetros
de consulta para la firma.
Establece workspace con el slug de tu Workspace de Transloadit. Con todo listo,
¡al ejecutar tu aplicación de Node.js se generará una URL del resultado!
Resultado
Una vez generada la URL, solo tenemos que visitarla para que se realice el encoding. Al visitar esta
URL en un navegador, el resultado del encoding aparecerá automáticamente cuando termine el proceso.
Si quieres, también puedes guardar fácilmente el resultado de la
Assembly directamente en tu equipo con los comandos
siguientes. Sustituye la URL de ejemplo completa en la asignación de
url por la URL que imprime el programa de tu servidor y conserva las comillas.
url='https://YOUR-WORKSPACE.tlcdn.com/YOUR-COMPLETE-SIGNED-URL'
curl -fsSLo /your/chosen/path/file_name.jpg "${url}"
Así termina este breve recorrido por la reciente actualización de nuestro Smart CDN. Nos entusiasma ver las formas creativas en que podrás incorporar esta nueva función en tus proyectos y nos encantaría que nos lo contaras en Twitter.