发布于: Nov 30, 2022
【概要】整个方案采用无服务器架构,无需客户运维管理,按请求计费,降低了服务成本。最后借助于 Cloudformation 可在全球区域进行部署与迁移,增加了速度和灵活性。
一、创建临时文件桶
- 登陆控制台,选择日本区域
- 查找 S3 服务
- 创建存放临时文件的 S3 桶
二、上传相关临时文件
- 下载 python-pillow 包
在后续验证环节需要通过该包对图片数据进行处理,Lambda 默认自带的环境中没有提供该包,需要我们上传构建 Lambda layer
- 打开刚才创建的桶,默认参数上传包文件
三、通过 Cloudformation 实现一键部署
- 下载 yaml 文件
- 搜索 Cloudformation 服务,点击创建堆栈
- 选择上传模版文件并选择下载的 yaml 文件
- 输入堆栈名称,以及临时桶的名称、python-pillow 包名称,点击下一步
- 等待部署完成(1~2 分钟),点击输出选项卡记 apiGatewayInvokeURL
四、功能验证
- 下载测试照片文件
- 将压缩包解压
- 在创建好的 S3 桶(前缀为堆栈名称)中创建文件夹,如 music
- 上传照片到创建好的文件夹中
- 将下述内容保存成脚本文件,如 script.py
import requests import json import sys import base64 import os class DateEncoder(json.JSONEncoder ): def default(self, obj): if isinstance(obj, bytes): return obj.__str__() return json.JSONEncoder.default(self, obj) class img: def __init__(self,image,collection_id,threshold): self.__img = self.__check(image) self.__collection_id = collection_id self.__threshold = threshold def request(self,url): data = {"threshold":self.__threshold,"collection_id":self.__collection_id,"img_type":self.__type,"img":self.__img} return requests.post(url,json.dumps(data,cls=DateEncoder)).content def __check(self,image): if image.endswith('.jpg') or image.endswith('.png') or image.endswith('.jpeg'): self.__type = image.split('.')[-1] if os.path.isfile(image): img_file = open(image,'rb') img_b64encode = base64.b64encode(img_file.read()) img_file.close() return img_b64encode.decode() else: print("Request file does not exist") sys.exit(1) else: print("Request has invalid image format") sys.exit(1) if __name__ == "__main__": if len(sys.argv) == 3 and '.jpg' in sys.argv[1] and 'amazonaws.com/beta/img' in sys.argv[2]: new_img = img(sys.argv[1],'music',70) print(json.loads(new_img.request(sys.argv[2]))) else: print("Please input <img path> and <api path>") print("For example:\n\tpython script.py /home/test.jpg https://iyw7v9sca6.execute-api.ap-northeast-1.amazonaws.com/beta/img") sys.exit(1)
- 按如下方式运行脚本获取结果
python script.py <img> <api path>
其中:
<img>为测试照片地址
<api path>为 cloudformation 输出中的 apiGatewayInvokeURL
例如:
python script.py /home/test.jpg https://iyw7v9sca6.execute-api.ap-northeast-1.amazonaws.com/beta/img
一、删除基础架构
- 搜索 cloudformation 服务,选择堆栈后点击删除
二、删除 Amazon Rekognition 中的数据
- 创建访问密钥
参考:https://docs.amazonaws.cn/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration
二、删除 Amazon Rekognition 中的数据
- 安装 Amazon CLI 工具并配置
安装参考:https://aws.amazon.com/cn/cli/
- 删除 Amazon Rekognition 中的数据
替换 <> 标注部分
music 为 S3 中创建的文件夹,如文档中使用的 music
ap-northeast-1 为选择的区域,如文档中使用的日本区域
aws rekognition delete-collection –collection-id<music> –region
<ap-northeast-1>
方案中仅仅用到了 Rekognition 的一小部分功能,客户可根据自己的需求做定制开发新功能,包括视频面孔搜索分析、名人识别、物体和场景检测等等,文档中部分参数和返回值做了处理,客户也可以根据需要做一些深度集成。此外整个方案采用无服务器架构,无需客户运维管理,按请求计费,降低了服务成本。最后借助于 Cloudformation 可在全球区域进行部署与迁移,增加了速度和灵活性。
相关文章