Ratnopam Chakrabarti es un desarrollador de software que trabaja actualmente para Ericsson Inc. Lleva bastante tiempo centrado en IoT, tecnologías máquina a máquina, coches conectados y dominios de ciudades inteligentes. Le encanta aprender nuevas tecnologías y ponerlas en práctica. Cuando no está trabajando, le gusta pasar tiempo con su hijo de 3 años.
Impresionante AWS (Amazon Web Services)
En Parte 1 y Parte 2 de la serie, hablé sobre todo de Couchbase. En esta parte, voy a centrarme en AWS y, más concretamente, en la API AWS Reckognition.
Crear un Bucket S3
Como requisito previo para ejecutar la aplicación photogallery, debe crear un bucket s3 utilizando su cuenta de Amazon Web Services. Puede utilizar la función plantilla cloudformation He mencionado en la Parte 1 de la serie para crearlo automáticamente; de lo contrario, siempre se puede crear manualmente utilizando la consola de AWS.
Política de cubos
Tanto Couchbase como S3 utilizan el concepto de "bucket" para almacenar datos. Voy a tratar de mencionar el contexto adecuado al referirme al término "bucket" - en cuanto a si se trata de un bucket Couchbase o un bucket S3. Intenta no confundirte entre los dos, aunque el objetivo subyacente de un "bucket" es almacenar datos tanto en Couchbase como en S3.
En este caso, me refiero a un cubo S3.
Para permitir a los usuarios almacenar imágenes en un bucket s3, necesitamos crear una política de bucket. Por defecto, el acceso a un bucket s3 es privado. Para anular la política predeterminada, creamos la siguiente política que permite a todos los usuarios almacenar objetos en s3 y recuperar objetos de s3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "Versión": "2012-10-17", "Id": "Policy1493677249191", "Declaración": [ { "Sid": "Stmt1493677246291", "Efecto": "Permitir", "Principal": "*", "Acción": "s3:GetObject", "Recurso": "arn:aws:s3:::la-image-tagger-chakrar27/*" } ] } |
En mi caso, el nombre del cubo creado es la-image-tagger-chakrar27.
Análisis de imágenes mediante re-cognición
A finales de 2016, AWS lanzó Rekognition, un servicio de procesamiento de imágenes que puede analizar una imagen e inferir información útil sobre ella. Para obtener un estudio detallado, consulte la documentación de AWS Rekognition. aquí.
En el contexto de la aplicación de fotogalería, utilicé la función detectarEtiquetas() API que ofrece AWS Rekognition. Devuelve un par clave-valor de etiquetas con puntuaciones de confianza. El siguiente fragmento de código hace el truco:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
(función(nombre de archivo, res) { var rekognición = nuevo aws.Rekognition(); var parámetros = { Imagen: { S3Objeto: { Cubo: S3_BUCKET, Nombre: nombre de archivo } }, MaxLabels: 5, MinConfianza: 50 }; rekognición.detectarEtiquetas(parámetros, función(err, datos) { si (err) { consola.registro("Error en REKO" + err); } si no { // respuesta correcta datos = JSON.stringify(datos); } }) } |
El código anterior llama a AWS Rekognition's detectarEtiquetas y devuelve un conjunto de etiquetas basadas en el análisis de la imagen. En este caso, he limitado el número máximo de etiquetas a 5 y el porcentaje mínimo de confianza al 50 por ciento.
Una vez que se devuelven las etiquetas, se analizan mediante JSON y se introducen en etiquetas array. Una vez hecho esto, el guardar() para almacenar el documento en el bucket de Couchbase.
Rekognition ofrece algunas API interesantes como detectarCaras() y compararCaras() que abren todo un nuevo espectro de casos de uso; sin embargo, por ahora me he ceñido al simple detectarEtiquetas() API para empezar.
Ejecutar la aplicación
Para ejecutar la aplicación node photogallery, necesita tener a mano la clave de acceso S3 y las claves secretas. Puede utilizar el módulo "dotenv" de node para almacenarlas en un archivo llamado .env en su código fuente. Si hace esto debe añadir el archivo .env a .gitignore:
1 2 3 |
node_modules/ *.env |
No querrás exponer las claves de acceso de AWS al mundo a menos que estés de un humor extremadamente filantrópico. Yo, sin embargo, prefiero pasar estos valores como una variable de entorno. He aquí cómo ejecutar la aplicación node utilizando variables de entorno:
1 |
env AWS_ACCESS_KEY=<Su Acceda a Clave> CLAVE_SECRETA_AWS=<Su Secreto clave> S3_BUCKET=<S3-cubo-nombre> ANFITRIÓN=http://localhost:3000 COUCHBASE_HOST=127.0.0.1:8091 COUCHBASE_BUCKET=photogallery node upload.js |
Este post forma parte del Programa de Escritura de la Comunidad Couchbase