Smart CDN mejorado con detección facial impulsada por IA

Nuestro Smart CDN es una de las funciones más emocionantes que hemos lanzado en los últimos años. Ayuda a nuestros usuarios a recibir los tiempos de solicitud más rápidos que podemos ofrecer y, a pesar de estar en beta, avanza a pasos agigantados cada día. Hoy nos complace anunciar que hemos actualizado la lista de Robots compatibles para incluir ahora nuestro Robot /image/facedetect impulsado por IA.

Hace poco cambiamos la API que usábamos antes 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 nuestro Robot /image/facedetect ahora encaja a la perfección con nuestro Smart CDN.
No te pierdas un vistazo rápido a cómo puedes aprovechar esta nueva actualización.
Configuración
Antes de empezar con un ejemplo, necesitamos contar con algún tipo de almacenamiento en la nube que contenga una imagen con algunos rostros y con un Template. Como nuestra API se ejecuta en AWS, te recomendamos almacenar tus archivos en un bucket de S3 para lograr la menor latencia posible. Si prefieres otra opción, puedes optar por 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 se mencionó antes, usamos S3 en nuestro Template para importar nuestro archivo. Lo
fundamental que hay que observar en el primer Step, «imported», es el parámetro path. Su
valor especifica que queremos apuntar a una carpeta concreta. Después se configura una Assembly Variable
para determinar qué archivo queremos invocar en nuestra transformación de URL.
Ahora la imagen importada se pasa al Step facedetect, donde nuestro
Robot /image/facedetect impulsado por IA se
encarga de la detección facial. De nuevo, este Step usa Assembly Variables para interactuar con
el parámetro faces cuando se llama a la URL que creamos. Si quieres una explicación más
detallada sobre este parámetro, puedes encontrarla en nuestro
blog anterior sobre /image/facedetect.
Para cerrar nuestro Template, usamos el Robot /file/serve para entregar el resultado de nuestra Assembly.
Signature Authentication
También quiero tomarme un momento para mostrar lo fácil que es añadir Signature Authentication a nuestro método de transformación de URL.
No es necesario configurar Signature Authentication, pero lo recomendamos como buena práctica. Las URL firmadas con un tiempo de expiración limitan las transformaciones no autorizadas y el tiempo durante el cual se puede reutilizar una URL, pero no son una defensa completa contra los ataques DDoS. Además, probablemente solo te tome unos minutos más implementarlo en tu back-end.
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
Hemos escrito la Signature Authentication en Node.js para este ejemplo. Si prefieres usar otro lenguaje en tu back-end, 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 sobre la ruta de la URL y los parámetros de consulta ordenados, incluido un tiempo de expiración en milisegundos. Autentica la URL; no la cifra ni expone el Auth Secret.
Reemplaza 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 eso
listo, ¡al ejecutar tu aplicación de Node.js se generará una URL de resultado!
Resultado
Con nuestra URL generada, lo único que tenemos que hacer es visitar la nueva URL para que se realice
la codificación. Al visitar esta URL en un navegador, el resultado codificado aparecerá
automáticamente una vez que el proceso se complete. Si lo prefieres, podrías guardar con la misma
facilidad el resultado de la Assembly directamente en tu equipo
con el comando de abajo. Asegúrate de reemplazar url por el valor que se mostró
en tu consola.
curl -fsSLo /your/chosen/path/file_name.jpg "${url}"
Con esto concluye un vistazo rápido a la actualización reciente de nuestro Smart CDN. Nos entusiasma ver las formas creativas en las que podrás incorporar esta nueva función a tus proyectos, y nos encantaría que nos lo contaras en Twitter.