Introducción a Atlassian ImageLabeller
ImageLabeller es una sencilla aplicación de demostración que utiliza el aprendizaje automático para aplicar etiquetas a las imágenes. Utiliza AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch y AWS CloudFormation, y está escrita en Go y Python. Esta guía explica cómo utilizar las herramientas Open DevOps de Atlassian para implementar y monitorizar un subconjunto de estos componentes.
Arquitectura de ImageLabeller
Funcionamiento
Un usuario invoca la AWS Lambda de SubmitImage y pasa una URL de imagen válida como parámetro. SubmitImage descarga la imagen, la sube a la open-devops-images-
La AWS Lambda de InvokeLabeller tiene un desencadenador de eventos de AWS DynamoDB. InvokeLabeller descarga la imagen correspondiente de open-devops-images-
El usuario invoca la AWS Lambda de GetImageLabel y pasa el token de identificación de la imagen como parámetro. GetImageLabel busca las etiquetas asociadas al token de identificación de la imagen en ImageLabels y se las devuelve al usuario. El usuario recibe una etiqueta NOT_CLASSIFIED si el modelo de AWS SageMaker no ha terminado de procesar una imagen.
ImageLabeller se implementa en cinco entornos: un entorno de pruebas en us-west-1, un entorno de ensayo en us-east-2 y tres entornos de producción en us-west-2, us-east-1 y ca-central-1 en este ejemplo.
Componentes
Los compartimentos de AWS S3 y las tablas de AWS DynamoDB que forman parte de ImageLabeller se implementan mediante plantillas de AWS CloudFormation. Esta guía proporciona información de configuración de CI/CD sobre cómo implementar los compartimentos de AWS S3. El proceso de implementación de las tablas de AWS DynamoDB es casi idéntico y se deja como un ejercicio que puedes completar por tu cuenta.
Hay tres AWS Lambda en ImageLabeller: SubmitImage, InvokeLabeller y getImageLabel. Esta guía proporciona información de configuración de CI/CD sobre cómo implementar SubmitImage. El proceso de implementación de GetImageLabel es casi idéntico y también lo tienes que completar por tu cuenta.
InvokeLabeller es una AWS Lambda basada en Python y requiere una actualización menor antes de poder publicarse. Concretamente, InvokeLabeller depende de la configuración de AWS SageMaker, que se realiza a través de la consola de AWS.
Las pruebas del sistema incluidas en el proyecto ImageLabeller ponen a prueba ImageLabeller en su conjunto. Las pruebas no se realizarán correctamente si algún componente de ImageLabeller no está presente o no funciona como se esperaba. Todas las implementaciones de SubmitImage, GetImageLabel e InvokeLabeller ejecutan las pruebas del sistema como parte de sus respectivos canales de CI/CD.
Para la implementación inicial de SubmitImage, GetImageLabel e InvokeLabeller, tienes que comentar los pasos de ejecución de las pruebas del sistema. Cuando las implementaciones se hayan ejecutado correctamente una vez, puedes descomentar los pasos de ejecución de las pruebas del sistema y volver a implementarlos.
Orden para la implementación de componentes
Implementa el modelo previamente entrenado de AWS SageMaker manualmente a través de la consola de AWS
Implementa repositorios de infraestructura de AWS
- s3_infra
- dynamodb_infra
Implementa las AWS Lambdas
- SubmitImage
- GetImageLabel
- InvokeLabeller
Implementar SystemTests
Implementar CloudWatchAlarms
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.