AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)
Aws Lambda是Amazon推出的“无服务架构”服务。我们只需要简单的上传代码,做些简单的配置,便可以使用。而且它是按运行时间收费,这对于低频访问的服务来说很划算。具体的介绍可以常见aws lambda的官网。(转载请指明出于breaksoftware的csdn博客)
比较正统的方法是使用Aws CloudFormation方案,但是鉴于这个方案过于复杂,所以我们还是借助CloudBuild的自定义命令来解决。
本文适用于熟悉在Aws Lambda人工部署python代码,而不熟悉自动化部署的同学。
创建Lambda函数
因为我们只是涉及“部署”,所以我们需要先手工在us-east-1(我们的生产环境)上创建一个Lambda函数。
我们选用python3.7,函数名为jobs_manager
最后记得将入口函数的路径和函数名给指定正确。
创建S3存储桶
我们做python开发时,往往需要引入其他第三方库。Aws Lambda让我们通过配置函数的“层”(layer)来配置这些引入。如果是手工部署,我们需要把这些库压缩到python.zip的文件中,然后在Lambda层中创建一个层并上传,最后在函数设置中引入。
当我们使用自动化部署方案时,我们可以将压缩的层文件保存到S3中,然后配置给对应函数。这样我们就需要新建一个存储桶。
给桶的名字取名规则是:“区域”-layers-of-lambda。因为我们将“生产”和“测试”环境部署在不同的区域中,所以可以通过配置不同的区域来对同一套代码进行分区部署。(具体看之后介绍的buildspec.yml和CodeBuild设置)
创建CodeBuild工程
创建过程和《AWS攻略——使用CodeBuild进行自动化构建和部署静态网页》类似,同样需要设置下环境变量REGION的值为us-east-1,这样之后的buildspec.yml将可以使用到该值做“生产”和“测试”环境区分。
同时记下角色名
修改IAM
在IAM中找到上步的角色名称,修改其策略。
为简单起见,我们给与S3所有资源的所有权限。(不严谨)
还要新增lambda权限,也是所有资源所有权限。(不严谨)
创建Buildspec.yml文件
该文件放置在项目(我们的项目名叫apollo)的根目录下。
version: 0.2phases:install:runtime-versions:python: 3.7commands:- pip install --upgrade pip- pip install --upgrade awsclipre_build:commands:build:commands:- pip install -r requirements.txt -t ./python- zip layer_apollo.zip -r python/- aws s3 cp layer_apollo.zip --region $REGION s3://$REGION-layers-of-lambda/layer_apollo.zip- layer_version=$(aws lambda publish-layer-version --region $REGION --layer-name apollo --description "apollo layer" --license-info "MIT" --content S3Bucket=$REGION-layers-of-lambda,S3Key=layer_apollo.zip --compatible-runtimes python3.7 | jq '.LayerVersionArn' | sed 's/\"//g')- echo $layer_version- update_jobs_manager_layer_cmd='aws lambda update-function-configuration --region '$REGION' --function-name jobs_manager --layers '$layer_version- echo $update_jobs_manager_layer_cmd- $update_jobs_manager_layer_cmd- zip apollo.zip -r aws/ conf/ jobs_manager/ kvdb/ modules/ rollback_sqs/ proto/ services/ sqs/ utils/ - aws lambda --region $REGION update-function-code --function-name jobs_manager --zip-file fileb://apollo.zip
第6行指明我们需要使用python3.7的环境。
第8,9行,让构建环境先更新pip和aws的工具awscli。
第16行,我们将项目依赖都装到构建环境的python目录下。requestments.txt是通过下面指令生成的,但是需要手工剔除包含版本是0.0.0的库,否则之后部署会报错。
pip freeze >requestments.txt
第17,18行将依赖打包并上传到之前步骤创建的S3上。
第19行将S3上的依赖包发布到lambda的层上,并获取期版本号。
第22~24将更新lambda函数层的版本号。
第26,27行将项目打包并更新到lambda函数中。
构建
进入之前创建的apollo_online的构建项目中,然后点击“构建”
AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)相关推荐
- AWS攻略——使用CodeBuild进行自动化构建和部署静态网页
首先声明下,使用"CodeBuild"部署并不是"正统"的方案,因为AWS提供了"CodeDeploy".如果不希望引入太多基础设施,可以考 ...
- AWS攻略——Peering连接VPC
文章目录 创建IP/CIDR不覆盖的VPC 创建VPC 创建子网 创建密钥对 创建EC2 创建Peering 接受Peering邀请 修改各个VPC的路由表 修改美东us-east-1 pulic s ...
- AWS攻略——VPC初识
大纲 在网络里启动一台可以ssh上去的机器 查看区域.VPC和子网 创建EC2 连接 Web端连接 客户端连接 知识点 参考资料 VPC是在AWS架构服务的基础,有点类似于我们在机房里拉网线和设置路由 ...
- gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...
常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...
- 边缘化搭建DotNet Core 2.1 自动化构建和部署环境
写在前面 写这篇文章的缘由是由于笔者的对新兴技术方向有所追求,但个人资产有限,只能容许购买一台阿里云低配1核2G服务器.服务器上搭建了 Centos7 & Docker & Jenki ...
- 边缘化搭建DotNet Core 2.1 自动化构建和部署环境(上)
写在前面 写这篇文章的缘由是由于笔者的对新兴技术方向有所追求,但个人资产有限,只能容许购买一台阿里云低配1核2G服务器.服务器上搭建了 Centos7 & Docker & Jenki ...
- SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战
作者:寅务 www.jianshu.com/p/bdb0642b7495 1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服 ...
- java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署
java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署 java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构 ...
- opencv3计算机视觉python语言实现pdf_对比《OpenCV计算机视觉编程攻略第3版》《OpenCV 3计算机视觉Python语言实现第2版》PDF代码......
OpenCV 3是一种先进的计算机视觉库,可以用于各种图像和视频处理操作,通过OpenCV 3 能很容易地实现一些有前景且功能先进的应用(比如:人脸识别或目标跟踪等).从图像处理的基本操作出发,计算机 ...
最新文章
- 这份Kaggle Grandmaster的图像分类训练技巧,你知道多少?
- java字符串复制空值_Java脚本:去除字符串中空值
- JavaScript获取时间戳与时间戳转化
- 使用WebClient 获得网页内容或提交请求
- makefile中的@ $ :
- matlab bmp hsi,matlab中RGB与HSI图像转化
- linux内存管理的主要概念是虚拟内存,有关linux内存管理机制的相关内容,linux物理内存和虚拟内存,深入了解Linux内存运行 ......
- Visual Studio 2013旗舰版KEY
- 微信群控二次开发SDK
- 009 [转载]天才与鬼才:黑客精英-凯文·米特尼克
- 74CMS_v4.2.1-v4.2.129后台Getshell
- special effects - 樱花飘落背景特效
- 分布式定时任务框架---Uncode Schedule
- 华为模拟器eNSP防火墙配置vlan实验
- Projector的用法
- 160x128JAva_GitHub - hanang128/X-SpringBoot: X-SpringBoot是一个轻量级的Java快速开发平台,能快速开发项目并交付【接私活利器】...
- 新浪微博开发平台接入流程(1)---注册应用
- MSP430新建工程点灯
- android apk下载完成后调用安装
- img图片在webpack中使用
热门文章
- Pytorch的神经网络编程学习第一节
- C++中的.hpp理解
- PCL:官方程序 Region growing segmentation
- 网络流最大流 Dinic算法模板
- 深度学习--TensorFlow(4)BP神经网络(损失函数、梯度下降、常用激活函数、梯度消失梯度爆炸)
- 西安邮电大学计算机学院系主任,西安邮电大学计算机学院
- 数字图像处理——第五章 图像复原与重建
- tp3 普通模式url模式_《终身成长》:三个步骤打造成长型思维模式,普通人也可以成功...
- 小程序 a标签_微信内循环生态:朋友圈标签引流视频号、小程序、搜一搜
- 对ARM异常(Exceptions)的理解