Artikelen
Tutorials
Interactieve handleidingen
Introductie op ImageLabeller
ImageLabeller is een eenvoudige demotoepassing die gebruikmaakt van machine learning om labels op afbeeldingen aan te brengen. Het maakt gebruik van AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch en AWS CloudFormation, en is geschreven in Go en Python. In deze handleiding wordt beschreven hoe je Atlassian Open DevOps-tools kunt gebruiken om een subset van deze componenten te implementeren en te monitoren.
ImageLabeller-architectuur
Hoe het werkt
Een gebruiker roept AWS Lambda SubmitImage aan en geeft een geldige URL van de afbeelding door als parameter. SubmitImage downloadt de afbeelding, uploadt deze naar een AWS S3-bucket open-devops-images-
De AWS Lambda InvokeLabeller heeft een AWS DynamoDB-gebeurtenistrigger. InvokeLabeller downloadt de bijbehorende afbeelding uit de open-devops-images-
De gebruiker roept AWS Lambda GetImageLabel aan en geeft het afbeeldings-ID-token door als parameter. GetImageLabel zoekt de labels op die zijn gekoppeld aan de afbeeldings-ID-token in ImageLabels en stuurt ze terug naar de gebruiker. De gebruiker krijgt het label NOT_CLASSIFIED als het AWS SageMaker-model nog niet klaar is met het verwerken van een afbeelding.
ImageLabeller wordt geïmplementeerd in vijf omgevingen. Een testomgeving in us-west-1, een stagingomgeving in us-east-2 en drie productieomgevingen in us-west-2, us-east-1 en ca-central-1.
Componenten
De AWS S3-buckets en AWS DynamoDB-tabellen die deel uitmaken van ImageLabeller worden geïmplementeerd met behulp van AWS CloudFormation-sjablonen. Deze handleiding bevat CI/CD-configuratiegegevens voor het implementeren van de AWS S3-buckets. Het proces voor het implementeren van de AWS DynamoDB-tabellen is vrijwel identiek en wordt je als een oefening aangeboden die je zelf moet voltooien.
ImageLabeller bevat drie AWS Lambda's in ImageLabeller: SubmitImage, InvokeLabeller en GetImageLabel. Deze handleiding bevat CI/CD-configuratiegegevens voor het implementeren van SubmitImage. Het proces voor de implementatie van GetImageLabel is vrijwel identiek en moet je ook zelf voltooien.
InvokeLabeller is een op Python gebaseerde AWS Lambda en moet een kleine update ondergaan voordat het gepubliceerd kan worden. In het bijzonder is InvokeLabeller afhankelijk van de AWS SageMaker-configuratie die via de AWS-console wordt uitgevoerd.
De systeemtests die zijn opgenomen in het ImageLabeller-project testen ImageLabeller als geheel. De tests mislukken als een component van ImageLabeller niet aanwezig is of naar verwachting werkt. De implementaties van SubmitImage, GetImageLabel en InvokeLabeller voeren de systeemtests allemaal uit als onderdeel van hun respectievelijke CI/CD-pipelines.
Voor de eerste implementatie van SubmitImage, GetImageLabel en InvokeLabeller moet je de uitvoeringsstappen voor systeemtests uitcommentariëren. Zodra de implementaties eenmaal succesvol zijn uitgevoerd, kun je de opmerkingen over de uitvoeringsstappen van de systeemtest ongedaan maken en opnieuw implementeren.
Order om componenten te implementeren
Implementeer het vooraf getrainde model van AWS SageMaker handmatig via de AWS-console
Implementeer repository's voor AWS-infrastructuur
- s3_infra
- dynamodb_infra
AWS Lambda's implementeren
- SubmitImage
- GetImageLabel
- InvokeLabeller
Systeemtests implementeren
Cloud Watch-alarmen implementeren
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.