简单一步一步实现AWS微服务部署
- 一纾 罗
- Nov 17, 2022
- 1 min read
根据前几篇学习的知识,我自己一步一步,把一个简单的Python flask web服务部署并运行在AWS ECS上,并实现外部访问.
STEP1:新建一个flask工程,并且保留和记录工程的python和requirements.txt文件,我用的是pycharm,可以通过IDE新建一个flask工程.并且工程也会创建对应的venv环境,我把venv的信息用命令行获取出来,然后再把一些不必要的文件删除(删除根目录的static/templates/venv).新建requirements.txt文件,放入所有的依赖包.


STEP2:书写简单的DockFile,并在docker下运行环境.并检查本地是否可以访问,我这里docker run时候使用-p 64733:5000参数,直接访问localhost:64733收到响应即可.
这里笔者犯了几个错误CMD ['python', './app.py'],单引号是无法运行的.要修改为CMD ["python", "./app.py"];
程序中app.run()会造成外部环境无法访问,需要改成app.run(host='0.0.0.0').



STEP3,把打包好的image[flask-test]同步到AWS ECR. 详情参见另外一篇博文<AWS ECR/ECS 微服务部署>,我重新登录以后,还需要现在AWS ECR后端创建flask-run,否则会出现一直在retrying..EOF



STEP4,先创建一个Task definitions.把我们刚刚上传的image放进去,再进一个ECS里面定义一个service,等待系统进行部署.
这里笔者遇到了几个困难,在Task definition的时候,port mapping定义的时候只能配置container port,需要进入下一个界面把APP environment设置为"Amazon EC2 instances".再点击previous,回到目录可以配置host port和container port的对应,这里我们把配置80:5000




STEP5,进入一个ECS cluster,点击Tasks选项卡,点击"Run new task",把我们刚刚配置的task definition运行即可.点击deloy.最后回到EC2界面找到运行该cluster的服务器.访问他们公网IP即可.
注意EC2本身有他的IP安全设置,保证需要访问的接口不会被IP限制







Comentarios