Articles
Tutoriels
Guides interactifs
Présentation d'ImageLabeller
ImageLabeller est une application de démo simple qui utilise l'apprentissage machine pour appliquer des étiquettes à des images. Elle utilise AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch et AWS CloudFormation, et est codée en Go et en Python. Ce guide explique comment utiliser les outils Atlassian Open DevOps pour déployer et surveiller un sous-ensemble de ces composants.
Architecture ImageLabeller
Fonctionnement
Un utilisateur invoque AWS Lambda SubmitImage en transmettant une URL d'image valide sous forme de paramètre. SubmitImage télécharge l'image, l'importe dans un compartiment AWS S3 open-devops-images-
AWS Lambda InvokeLabeller a un déclencheur d'événement AWS DynamoDB. InvokeLabeller télécharge l'image correspondante depuis open-devops-images-
L'utilisateur invoque AWS Lambda GetImageLabel en transmettant le jeton d'identification d'image sous forme de paramètre. GetImageLabel recherche les étiquettes associées au jeton d'identification d'image dans ImageLabels et les renvoie à l'utilisateur. L'utilisateur reçoit l'étiquette NOT_CLASSIFIED si le modèle AWS SageMaker n'a pas fini de traiter une image.
ImageLabeller est déployé dans cinq environnements. Il existe un environnement de test (us-west-1), un environnement de staging (us-east-2) et trois environnements de production (us-west-2, us-east-1 et ca-central-1).
Composants
Les compartiments AWS S3 et les tables AWS DynamoDB qui font partie d'ImageLabeller sont déployés à l'aide de modèles AWS CloudFormation. Ce guide fournit des informations de configuration de CI/CD sur la façon de déployer les compartiments AWS S3. Le processus de déploiement des tables AWS DynamoDB est presque identique. Nous vous laissons réaliser cet exercice vous-même.
ImageLabeller contient trois composants AWS Lambda : SubmitImage, InvokeLabeller et GetImageLabeller. Ce guide fournit des informations de configuration de CI/CD sur la façon de déployer SubmitImage. Le processus de déploiement de GetImageLabel est presque identique, et nous vous laissons également réaliser cet exercice vous-même.
InvokeLabeller est un composant AWS Lambda basé sur Python qui nécessite une mise à jour mineure avant de pouvoir être publié. Plus précisément, InvokeLabeller dépend de la configuration d'AWS SageMaker, qui s'effectue via la console AWS.
Les tests système inclus dans le projet ImageLabeller testent ImageLabeller dans son ensemble. Ils échoueront si un composant d'ImageLabeller n'est pas présent ou ne fonctionne pas comme prévu. Les déploiements de SubmitImage, GetImageLabel et InvokeLabeller exécutent tous les tests système dans le cadre de leurs pipelines de CI/CD respectifs.
Pour le déploiement initial de SubmitImage, GetImageLabel et InvokeLabeller, vous devez commenter les étapes d'exécution des tests du système. Une fois les déploiements exécutés, vous pouvez supprimer les commentaires pour les étapes d'exécution des tests système et effectuer un nouveau déploiement.
Ordre de déploiement des composants
Déployer manuellement le modèle préformé d'AWS SageMaker via la console AWS
Déployer des dépôts d'infrastructure AWS
- s3_infra
- dynamodb_infra
Déployer des composants AWS Lambda
- SubmitImage
- GetImageLabel
- InvokeLabeller
Déployer SystemTests
Déployer CloudWatchAlarms
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.