日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時間:2023/11/27 生活经验 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? Aws Lambda是Amazon推出的“無服務(wù)架構(gòu)”服務(wù)。我們只需要簡單的上傳代碼,做些簡單的配置,便可以使用。而且它是按運行時間收費,這對于低頻訪問的服務(wù)來說很劃算。具體的介紹可以常見aws lambda的官網(wǎng)。(轉(zhuǎn)載請指明出于breaksoftware的csdn博客)

? ? ? ? 比較正統(tǒng)的方法是使用Aws CloudFormation方案,但是鑒于這個方案過于復(fù)雜,所以我們還是借助CloudBuild的自定義命令來解決。

? ? ? ? 本文適用于熟悉在Aws Lambda人工部署python代碼,而不熟悉自動化部署的同學(xué)。

創(chuàng)建Lambda函數(shù)??

? ? ? ? 因為我們只是涉及“部署”,所以我們需要先手工在us-east-1(我們的生產(chǎn)環(huán)境)上創(chuàng)建一個Lambda函數(shù)。

? ? ? ? 我們選用python3.7,函數(shù)名為jobs_manager

? ? ? ? 最后記得將入口函數(shù)的路徑和函數(shù)名給指定正確。

創(chuàng)建S3存儲桶

? ? ? ? 我們做python開發(fā)時,往往需要引入其他第三方庫。Aws Lambda讓我們通過配置函數(shù)的“層”(layer)來配置這些引入。如果是手工部署,我們需要把這些庫壓縮到python.zip的文件中,然后在Lambda層中創(chuàng)建一個層并上傳,最后在函數(shù)設(shè)置中引入。

? ? ? ? 當(dāng)我們使用自動化部署方案時,我們可以將壓縮的層文件保存到S3中,然后配置給對應(yīng)函數(shù)。這樣我們就需要新建一個存儲桶。

? ? ? ? 給桶的名字取名規(guī)則是:“區(qū)域”-layers-of-lambda。因為我們將“生產(chǎn)”和“測試”環(huán)境部署在不同的區(qū)域中,所以可以通過配置不同的區(qū)域來對同一套代碼進行分區(qū)部署。(具體看之后介紹的buildspec.yml和CodeBuild設(shè)置)

創(chuàng)建CodeBuild工程

? ? ? ? 創(chuàng)建過程和《AWS攻略——使用CodeBuild進行自動化構(gòu)建和部署靜態(tài)網(wǎng)頁》類似,同樣需要設(shè)置下環(huán)境變量REGION的值為us-east-1,這樣之后的buildspec.yml將可以使用到該值做“生產(chǎn)”和“測試”環(huán)境區(qū)分。

? ? ? ? 同時記下角色名

修改IAM

? ? ? ? 在IAM中找到上步的角色名稱,修改其策略。

? ? ? ? 為簡單起見,我們給與S3所有資源的所有權(quán)限。(不嚴(yán)謹(jǐn))

? ? ? ? 還要新增lambda權(quán)限,也是所有資源所有權(quán)限。(不嚴(yán)謹(jǐn))

創(chuàng)建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的環(huán)境。

? ? ? ? 第8,9行,讓構(gòu)建環(huán)境先更新pip和aws的工具awscli。

? ? ? ? 第16行,我們將項目依賴都裝到構(gòu)建環(huán)境的python目錄下。requestments.txt是通過下面指令生成的,但是需要手工剔除包含版本是0.0.0的庫,否則之后部署會報錯。

pip freeze >requestments.txt

? ? ? ? 第17,18行將依賴打包并上傳到之前步驟創(chuàng)建的S3上。

? ? ? ? 第19行將S3上的依賴包發(fā)布到lambda的層上,并獲取期版本號。

? ? ? ? 第22~24將更新lambda函數(shù)層的版本號。

? ? ? ? 第26,27行將項目打包并更新到lambda函數(shù)中。

構(gòu)建

? ? ? ? 進入之前創(chuàng)建的apollo_online的構(gòu)建項目中,然后點擊“構(gòu)建”

總結(jié)

以上是生活随笔為你收集整理的AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。