Articoli
Tutorial
Guide interattive
Introduzione a ImageLabeller
ImageLabeller è una semplice applicazione demo che utilizza l'apprendimento automatico per applicare etichette alle immagini. Utilizza AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch e AWS CloudFormation, ed è scritto in Go e Python. Questa guida spiega come utilizzare gli strumenti Atlassian Open DevOps per distribuire e monitorare un sottoinsieme di questi componenti.
Architettura di ImageLabeller
Come funziona
Un utente chiama l'AWS Lambda SubmitImage, passando un URL immagine valido come parametro. SubmitImage scarica l'immagine, la carica in un bucket AWS S3 opendevops-images-
L'AWS Lambda InvokeLabeller presenta un trigger di eventi AWS DynamoDB. InvokeLabeller scarica l'immagine corrispondente da open-devops-images-
L'utente chiama l'AWS Lambda GetImageLabel, passando il token dell'ID immagine come parametro. GetImageLabel cerca le etichette associate al token dell'ID immagine in ImageLabels e le restituisce all'utente. L'utente riceve un'etichetta NOT_CLASSIFIED se il modello AWS SageMaker non ha completato l'elaborazione di un'immagine.
ImageLabeller è distribuita in cinque ambienti: un ambiente di test in us-west-1, un ambiente di staging in us-east-2 e tre ambienti di produzione in us-west-2, us-east-1 e ca-central-1.
Componenti
I bucket AWS S3 e le tabelle AWS DynamoDB che fanno parte di ImageLabeller sono distribuiti utilizzando modelli AWS CloudFormation. Questa guida fornisce informazioni di configurazione CI/CD su come distribuire i bucket AWS S3. Il processo di distribuzione delle tabelle AWS DynamoDB è quasi identico e ti forniremo un esercizio da completare in autonomia.
In ImageLabeller sono presenti tre AWS Lambda: SubmitImage, InvokeLabeller e GetImageLabel. Questa guida fornisce informazioni di configurazione CI/CD su come distribuire SubmitImage. Il processo di distribuzione di GetImageLabel è quasi identico e puoi anche completarlo in autonomia.
InvokeLabeller è un AWS Lambda basato su Python e richiede un aggiornamento minore prima di poter essere pubblicato. Nello specifico, InvokeLabeller dipende dalla configurazione di AWS SageMaker, che viene eseguita tramite la console AWS.
I test di sistema inclusi nel progetto ImageLabeller testano ImageLabeller nel suo complesso. I test non vengono superati se qualche componente di ImageLabeller non è presente o non funziona come previsto. Le distribuzioni di SubmitImage, GetImageLabel e InvokeLabeller eseguono tutte i test di sistema come parte delle rispettive pipeline CI/CD.
Per la distribuzione iniziale di SubmitImage, GetImageLabel e InvokeLabeller è necessario commentare i passaggi di esecuzione dei test di sistema. Una volta che le distribuzioni sono state eseguite correttamente, puoi decommentare i passaggi di esecuzione dei test di sistema e ripetere la distribuzione.
Ordine di distribuzione dei componenti
Distribuisci manualmente il modello pre-addestrato di AWS SageMaker tramite la console AWS.
Distribuisci i repository dell'infrastruttura AWS.
- s3_infra
- dynamodb_infra
Distribuisci AWS Lambda.
- SubmitImage
- GetImageLabel
- InvokeLabeller
Distribuisci i test di sistema.
Distribuisci CloudWatchAlarms.
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.