前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)

AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)

作者头像
方亮
发布于 2020-06-16 08:21:58
发布于 2020-06-16 08:21:58
2.2K00
代码可运行
举报
文章被收录于专栏:方亮方亮
运行总次数:0
代码可运行

        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)的根目录下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: 0.2

phases:
  install:
    runtime-versions:
      python: 3.7
    commands:
      - pip install --upgrade pip
      - pip install --upgrade awscli

  pre_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的库,否则之后部署会报错。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip freeze >requestments.txt

        第17,18行将依赖打包并上传到之前步骤创建的S3上。

        第19行将S3上的依赖包发布到lambda的层上,并获取期版本号。

        第22~24将更新lambda函数层的版本号。

        第26,27行将项目打包并更新到lambda函数中。

构建

        进入之前创建的apollo_online的构建项目中,然后点击“构建”

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Serverless|Framework——图文玩转 AWS Lambda
| 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand i
用户4172423
2020/10/23
2.6K0
Serverless|Framework——图文玩转 AWS Lambda
用AWS部署一个无服务架构的个人网站
在这篇文章里我想介绍下怎样利用AWS(hjlouyoujuqi360com)部署一个无服务架构的个人网站。这个个人网站将具备以下特点:
用户4199102
2018/12/13
4K0
具有EC2自动训练的无服务器TensorFlow工作流程
机器学习训练工作通常是时间和资源密集型的,因此将这一过程整合到实时自动化工作流程中可能会面临挑战。
代码医生工作室
2019/10/15
12.9K0
具有EC2自动训练的无服务器TensorFlow工作流程
【云原生攻防研究 】针对AWS Lambda的运行时攻击
笔者在上一篇文章《Serverless安全研究— Serverless安全风险》中介绍了责任划分原则。对于开发者而言, Serverless因其服务端托管云厂商安全能力强的特点,实际上降低了总体的安全风险。
绿盟科技研究通讯
2020/12/14
2.2K0
【云原生攻防研究 】针对AWS Lambda的运行时攻击
AMBERSQUID 云原生挖矿恶意软件疑似与印尼黑客有关
Sysdig 的研究人员发现了一种新的云原生挖矿攻击行动,并将其命名为 AMBERSQUID。攻击针对不太常用的 AWS 服务,如 AWS Amplify、AWS Fargate 和 Amazon SageMaker。这些不常见的服务往往意味着其安全性也会被忽视,AMBERSQUID 可能会让受害者每天损失超过 1 万美元。
FB客服
2023/10/06
4720
AMBERSQUID 云原生挖矿恶意软件疑似与印尼黑客有关
aws lambda python 上传s3
代码编写 Code writing 编写lambda函数 Write lambda functions 主要功能是查询数据库,在本地生成test.csv,而后上传至s3://test-bucket-dev桶,bthlt目录下. test.csv is generated locally and uploaded to s3://test-bucket-dev bucket,bthlt path. import pymysql import logging import boto3 from botocore
葫芦
2021/12/20
2.3K1
aws lambda python 上传s3
利用AWS Lambda和iOS捷径实现手机一键开小区门禁
我住的小区使用了一个叫守望领域的智能门禁系统,可以通过手机App开小区门禁和单元门,但是用App开门需要经过四五步:打开App→进入开门界面→找到需要开的门→点击开门。
simpleapples
2021/11/01
2.8K1
利用AWS Lambda和iOS捷径实现手机一键开小区门禁
用于Web爬虫解决方案的无服务器体系结构
对无服务器体系结构感兴趣,那么你可能已经阅读了许多相互矛盾的文章,并且想知道无服务器体系结构是经济高效还是昂贵的。我想通过对网络抓取解决方案的分析来消除有关有效性问题的疑虑。
CloudBest
2021/03/30
2.8K0
用于Web爬虫解决方案的无服务器体系结构
用AWS、Slack和树莓派构建物联网原型项目
IoT-AWS-Slack-and-a-Raspberry-Pi-1-1068x656-1.jpg
用户4122690
2020/06/08
2.9K0
用AWS、Slack和树莓派构建物联网原型项目
深入理解Serverless架构:构建无服务器应用的完全指南
Serverless架构是一种现代化的云计算范式,它允许开发者构建应用程序而无需管理服务器基础架构。本文将深入探讨Serverless架构的关键概念,为您提供一份全面的指南,并提供带有实际代码示例的技巧,以帮助您构建出色的无服务器应用。
海拥
2023/09/19
1.2K0
深入理解Serverless架构:构建无服务器应用的完全指南
AWS S3 Lambda Python脚本函数执行时报错AttributeError: module ‘PIL‘ has no attribute ‘,Image‘cannot import nam
原因是Lambda的Layer层,添加的脚本执行环境eve,打包压缩的zip包有问题,没有按照标准的解压流程去执行。
翎野君
2024/04/25
1210
AWS Lambda 快速入门
但以上的几个方法都需要关注服务器的存储和计算资源,以便随时调整以满足更高的性能,并且高并发的请求也是分时段的,配置了更高性能的服务器在访问量变低的时候也是资源浪费。
goodspeed
2020/12/22
2.9K0
AWS Lambda  快速入门
如何构建无服务器智能合约自动化项目
作者 | Yos Riady 译者 | 火火酱,责编 | 李雪敬 头图 | CSDN 下载自视觉中国 “智能合约”这个名字其实并不确切。尽管名字中有“智能”二字,但 Ethereum 上的智能合约并不能全自动执行。智能合约代码的运行需要借助外力的触发。换句话说,我们需要通过一些外部流程来触发智能合约。 在本文中,我们将通过构建可行的解决方案来解决该问题,了解一下: 为什么需要链下智能合约自动化 智能合约自动化的用例 如何借助无服务器架构来部署无服务器功能 最后,我们还将介绍 serverless-eth
区块链大本营
2023/03/31
7830
如何构建无服务器智能合约自动化项目
云中树莓派(5):利用 AWS IoT Greengrass 进行 IoT 边缘计算
云中树莓派(5):利用 AWS IoT Greengrass 进行 IoT 边缘计算
SammyLiu
2019/06/28
2.4K0
云中树莓派(5):利用 AWS IoT Greengrass 进行 IoT 边缘计算
上线 Python 应用仅需一条命令的开源框架:Zappa(详细教程)
这里是 HelloGitHub 推出的《讲解开源项目》系列,今天要向小伙伴们介绍一个 Python 无服务(Serverless)框架 Zappa。
HelloGitHub
2021/05/14
1.1K0
上线 Python 应用仅需一条命令的开源框架:Zappa(详细教程)
编写自己的 GitHub Action,体验自动化部署
本文将介绍如何使用 GitHub Actions 部署前端静态页面,以及如何自己创建一个 Docker 容器 Action。
张凯强
2020/02/19
2.3K0
AWS机器学习初探(1):Comprehend - 自然语言处理服务
Amazon Comprehend 服务利用自然语言处理(NLP)来分析文本。其使用非常简单。
SammyLiu
2019/06/28
2.2K0
AWS机器学习初探(1):Comprehend - 自然语言处理服务
构建AWS Lambda触发器:文件上传至S3后自动执行操作的完整指南"
在本篇文章中,我们将学习如何设计一个架构,通过该架构我们可以将文件上传到AWS S3,并在文件成功上传后触发一个Lambda函数。
泽霖
2024/02/08
5440
面向DataOps:为Apache Airflow DAG 构建 CI/CD管道
使用 GitHub Actions 构建有效的 CI/CD 管道以测试您的 Apache Airflow DAG 并将其部署到 Amazon MWAA
DevOps云学堂
2022/10/04
3.4K0
面向DataOps:为Apache Airflow DAG 构建 CI/CD管道
使用 Node.js 快速开启 ServerLess Functions:入门实践指南
近一年来我在很多地方看到 ServerLess 这一词出现,概念介绍的相对比较多,但是真正实践的还是很少,也是出于对新技术的好奇,所以我打算进一步的对 ServerLess 做一个了解,以便体验到 ServerLess 能给我们带来什么便捷,最好的例子还是先从一个 Hello World 开始。
五月君
2020/02/11
2.7K0
使用 Node.js 快速开启 ServerLess Functions:入门实践指南
推荐阅读
相关推荐
Serverless|Framework——图文玩转 AWS Lambda
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档