Introdução ao ImageLabeller
O ImageLabeller é um aplicativo de demonstração simples que usa aprendizado de máquina para aplicar etiquetas às imagens. Ele usa o AWS Lambda, o AWS DynamoDB, o AWS S3, o AWS SageMaker, o AWS API Gateway, o AWS CloudWatch e o AWS CloudFormation, e é escrito em Go e Python. Este guia aborda como usar as ferramentas do Atlassian Open DevOps para implementar e monitorar um subconjunto desses componentes.
Arquitetura do ImageLabeller
Como funciona
Um usuário invoca o AWS Lambda SubmitImage, passando um URL de imagem válido como parâmetro. O SubmitImage baixa a imagem, a carrega para uma open-devops-images-
O AWS Lambda InvokeLabeller tem um acionador de eventos do AWS DynamoDB. O InvokeLabeller baixa a imagem correspondente de open-devops-images-
O usuário invoca o AWS Lambda GetImageLabel, passando o token de ID da imagem como parâmetro. GetImageLabel pesquisa as categorias associadas ao token de ID da imagem em ImageLabels e as retorna ao usuário. O usuário recebe uma categoria NOT_CLASSIFIED se o modelo do AWS SageMaker não tiver concluído o processamento de uma imagem.
O ImageLabeller é implementado em cinco ambientes. Há um ambiente Teste no us-west-1, um ambiente Staging no us-east-2 e três ambientes de produção no us-west-2, us-east-1 e ca-central-1.
Componentes
Os buckets do AWS S3 e as tabelas do AWS DynamoDB que fazem parte do ImageLabeller são implementados usando modelos do AWS CloudFormation. Este guia oferece informações de configuração de IC/CD (integração/implementação contínuas) sobre como implementar os buckets do AWS S3. O processo de implementação das tabelas do AWS DynamoDB é quase idêntico e é deixado como um exercício para você realizar sozinho.
Há três AWS Lambda no ImageLabeller: SubmitImage, InvokeLabeller e GetImageLabel. Este guia oferece informações de configuração de IC/CD sobre como implementar o SubmitImage. O processo de implementação do GetImageLabel é quase idêntico e também deve ser concluído por conta própria.
O InvokeLabeller é um AWS Lambda baseado em python e requer pequenas atualizações antes de poder ser publicado. Especificamente, o InvokeLabeller depende da configuração do AWS SageMaker, que é feita por meio do console da AWS.
Os testes do sistema incluídos no projeto ImageLabeller o testam como um todo. Os testes vão falhar se algum componente do ImageLabeller não estiver presente ou funcionando conforme o esperado. Todas as implementações de SubmitImage, GetImageLabel e InvokeLabeller executam os testes do sistema como parte de seus respectivos pipelines de IC/CD.
Para a implementação inicial de SubmitImage, GetImageLabel e InvokeLabeller, você precisa comentar as etapas de execução do teste do sistema. Depois que as implementações forem executadas com êxito uma vez, você vai poder remover os comentários das etapas de execução do teste do sistema e reimplementar.
Pedido de implementação de componentes
Faça a implementação manual do modelo pré-treinado do AWS SageMaker por meio do console da AWS
Implemente repositórios de infraestrutura da AWS
- s3_infra
- dynamodb_infra
Implemente o AWS Lambdas
- SubmitImage
- GetImageLabel
- InvokeLabeller
Implemente testes do sistema
Implemente o CloudWatchAlarms
Compartilhe este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.