ImageLabeller 简介
ImageLabeller 是一款使用机器学习将标签应用于图像的简单演示应用。它使用 AWS Lambda、AWS DynamoDB、AWS S3、AWS SageMaker、AWS API Gateway、AWS CloudWatch 和 AWS CloudFormation,并且采用 Go 和 Python 编写。本指南介绍如何使用 Atlassian Open DevOps 工具部署和监控这些组件的子集。
ImageLabeller 架构
工作原理
用户调用 AWS Lambda SubmitImage,将有效的图像 URL 作为参数传递。SubmitImage 下载图像,将其上传到 AWS S3 存储桶 open-devops-images-
AWS Lambda InvokeLabeller 有一个 AWS DynamoDB 事件触发器。InvokeLabeller 从 open-devops-images-
用户调用 AWS Lambda GetImageLabel,将图像 ID 令牌作为参数传递。GetImageLabel 在 ImageLabels 中查找与图像 ID 令牌关联的标签,然后将其返回给用户。如果 AWS SageMaker 模型尚未完成处理图像,则用户会获得 NOT_CLASSIVED 标签。
ImageLabeller 部署到五个环境。us-west-1 中一个测试环境,us-east-2 中一个暂存环境,us-west-2、us-east-1 和 ca-central-1 中三个生产环境。
组件
属于 ImageLabeller 一部分的 AWS S3 存储桶和 AWS DynamoDB 表是使用 AWS CloudFormation 模板部署的。本指南提供有关如何部署 AWS S3 存储桶的 CI/CD 配置信息。部署 AWS DynamoDB 表的过程几乎相同,留作练习,让您自己完成。
ImageLabeller 中有三个 AWS Lambda:SubmitImage、InvokeLabeller 和 GetImageLabel。本指南提供有关如何部署 SubmitImage 的 CI/CD 配置信息。部署 GetImageLabel 的过程几乎相同,也留给您自己完成。
InvokeLabeller 是一款基于 python 的 AWS Lambda,需要稍作更新才能发布。具体而言,InvokeLabeller 依赖于 AWS SageMaker 配置,该配置通过 AWS 控制台完成。
ImageLabeller 项目中包含的系统测试对整个 ImageLabeller 进行了测试。如果 ImageLabeller 的任何组件不存在或无法按预期工作,则测试将失败。SubmitImage、GetImageLabel 和 InvokeLabeller 部署都将系统测试作为各自的 CI/CD 管道的一部分执行。
对于 SubmitImage、GetImageLabel 和 InvokeLabeller 的初始部署,您需要注释掉系统测试执行步骤。部署成功运行一次后,您可以取消注释系统测试执行步骤,然后重新部署。
部署组件的顺序
通过 AWS 控制台手动部署 AWS SageMaker 预训练模型
部署 AWS 基础架构存储库
- s3_infra
- dynamodb_infra
部署 AWS Lambdas
- SubmitImage
- GetImageLabel
- InvokeLabeller
部署系统测试
部署 CloudWatchAlarms
分享这篇文章
下一主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。