1. 程式人生 > >AWS Lambda 配合 Jenkins 實現自動化持續部署

AWS Lambda 配合 Jenkins 實現自動化持續部署

AWS Lambda是AWS無伺服器框架中的重要組成部分,而開發、測試和部署Lambda函式需要經過一個較為枯燥的過程:在整合開發環境(IDE)中編寫函式,然後將其打包,並上傳到AWS使用控制檯進行測試。事實上,您可以在本地進行編寫測試,並將其上傳到自己的程式碼庫,然後使用CICD(Continuous Integration/Continuous Development)工具來進行整合部署。

本文中將介紹如何使用Jenkins在AWS上進行Lambda開發部署。更多有關AWS Lambda 介紹可參考連結https://amazonaws-china.com/lambda/

架構圖

  1. 通過git命令提交程式碼
  2. 通過部署在EC2中的Jenkins拉取Github上的程式碼
  3. 將程式碼部署到Lambda,完成程式碼部署
  4. 上傳一張圖片到S3
  5. 觸發S3的ObjectCreate事件,呼叫Lambda生成縮圖
  6. 將生成的縮圖儲存到指定位置

建立Lambda

從控制檯進入Lambda,選擇從頭開始創作

  • 輸入Lambda名稱
  • 選擇從模板建立新角色
  • 點選建立函式
  • 記錄已建立Lambda函式的 ARN,位於Lambda函式右上角

修改處理程式為CreateThumbnail.handler

建立S3儲存桶

從控制檯進入S3建立儲存桶,輸入自定義桶名,這邊需要建立兩個儲存桶,一個是源資料桶,另一個是目標資料桶

源儲存桶

目標桶


進入源儲存桶,並選中屬性標籤

選中高階設定中的事件,按照以下順序依次操作並儲存

  • 新增通知
  • 輸入名稱
  • 配置事件型別,及Lambda函式

修改Lambda角色

在之前的Lambda函式建立的過程中,自動建立了一個Lambda角色,但是這個角色只有最基本的建立CloudWatch Logs的許可權,還需要對建立的S3儲存桶有相應的進行讀寫的許可權。

首先獲取S3儲存桶ARN,選中儲存桶,點選複製儲存桶ARN

從控制檯進入IAM,選中角色,找到在Lambda裡建立的新角色,點選附加策略

在搜尋欄中輸入S3,選中AmazonS3FullAccess並附加(在此案例中)

Jenkins 環境 – Java 8

下載並解壓Java 8

wget http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
tar -zxvf jdk-8u151-linux-x64.tar.gz

建立Java目錄,並將Java移動至此目錄

sudo mkdir -p /usr/local/java/jdk1.8
sudo mv jdk1.8.0_151/* /usr/local/java/jdk1.8/

配置環境變數

sudo vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8
export JRE_HOME=/usr/local/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME
source /etc/profile

配置軟連線

sudo rm -rf /usr/bin/java
sudo ln -s /usr/local/java/jdk1.8/bin/java /usr/bin/java

Jenkins 環境 – Jenkins,Git和Nginx

使用私有金鑰連線到例項,更新倉庫並安裝Nginx和Jenkins

sudo yum update -y
sudo yum install -y nginx git

在Amazon Linux上安裝Jenkins,需要新增Jenkins 倉庫並從這裡開始安裝Jenkins.

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install -y jenkins

編輯Nginx 配置檔案(/etc/nginx/nginx.conf) 並修改伺服器配置:

server {
    listen 80;
    server_name _;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

啟動Jenkins和Nginx服務

service jenkins start

如果出現以下錯誤

sudo vim /etc/init.d/jenkins

修改配置檔案

candidates="
#/etc/alternatives/java
/usr/bin/java
#/usr/lib/jvm/java-1.8.0/bin/java
#/usr/lib/jvm/jre-1.8.0/bin/java
#/usr/lib/jvm/java-1.7.0/bin/java
#/usr/lib/jvm/jre-1.7.0/bin/java
"

service nginx start
chkconfig jenkins on
chkconfig nginx on

Jenkins 環境 – 配置Jenkins

輸入EC2 的公有DNS

通過以下命令找到初始密碼

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

安裝推薦外掛

配置使用者

安裝AWS Lambda Plugin,NodeJS Plugin

在Available標籤頁搜尋並安裝

安裝完成後,進入Manage Jenkins -> Global Tool Configuration頁面,找到Node.JS

接下來需要配置AWS CLI,並呼叫以下命令確認

aws configure

Jenkins 環境 – 建立Jenkins build

建立名稱

配置觸發器

配置執行環境

新增Build step

選擇Excute shell,輸入以下內容

npm install
grunt lambda_package
aws lambda update-function-code --function-name <Lambda ARN> --zip-file fileb://dist/create-thumbs-lambda_0-0-3_latest.zip --region cn-north-1

儲存配置並測試

點選Console Output檢視構建日誌

構建成功!

當我們的Lambda部署成功之後,便可以開始測試Lambda的功能了。

進入源儲存桶並上傳一張圖片

點選上傳後進入目標儲存桶便可以看到新生成的圖片,如果沒有看到可以稍等片刻,再點選重新整理按鈕重新整理

將圖片下載下來可以看到,原圖和縮圖的大小比較

作者介紹

李亞斯,AWS解決方案架構師,負責基於AWS的雲端計算方案架構的諮詢和設計,同時致力於AWS雲服務在國內的應用和推廣,畢業於同濟大學軟體工程專業,畢業後直接加入亞馬遜AWS中國。熟悉多種程式語言,有數年的C語言經驗,在移動開發,IoT等方面有豐富的經驗。

相關推薦

AWS Lambda 配合 Jenkins 實現自動化持續部署

AWS Lambda是AWS無伺服器框架中的重要組成部分,而開發、測試和部署Lambda函式需要經過一個較為枯燥的過程:在整合開發環境(IDE)中編寫函式,然後將其打包,並上傳到AWS使用控制檯進行測試。事實上,您可以在本地進行編寫測試,並將其上傳到自己的程式碼庫,然後使用CICD(Cont

Docker安裝Jenkins實現自動化構建部署到Tomcat

安裝Docker 安裝VirtualBox 安裝Jenkins 安裝好docker-toolbox之後啟動Terminal 開啟virtualbox,然後等待下載好boot2docker.iso,下載好之後就可以看到virtualbox就

搭建jenkins實現自動化部署

ubunt 關閉 kcon 部署 epo java gpo add perm 1、安裝Jenkins Install Jenkins On Ubuntu wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.ke

jenkins和docker實現自動化構建部署

TE 場景 ins 部署 提交 jenkin 工作 cat 構建 應用場景 程序員開發應用,開發後需要提交svn,然後從svn拉取代碼,進行構建,發布到tomcat中,發布,然後看呈現效果,這樣的工作是頻繁反復的在進行的,浪費了程序員的大量時間,那麽能不能把這些工作自動化

使用jenkins實現自動化部署的案例記錄:tomcat+svn+maven+ssh+jenkins

使用jenkins實現自動化部署的案例記錄:tomcat+svn+maven+ssh+jenkins 1.全域性配置,配置專案對應的tomcat伺服器的ssh登入地址,埠,密碼,路徑(寫/即可) 2.2-系統maven配置 3.構建一個maven風格的專案,選擇jdk版本

Maven、Jenkins實現自動化部署

工程例項程式碼:https://github.com/chocolateBlack/multi_env_folder_maven 利用Maven、Jenkins實現專案自動化部署,能夠按照bin、conf、lib檔案進行打包,並能夠通過Jenkins按照環境一鍵發不到伺服器上 首先通過Maven外掛

在Centos7搭建jenkins實現自動化部署springboot專案

在Centos7搭建jenkins實現自動化部署springboot專案 安裝前要把基本的環境裝好 1.jdk安裝 關於centos上的java    Jenkins不支援在centos的預設的jdk上工作。所以要刪除自己裝 查詢jdk命令 rpm -qa | grep jdk 或者 rpm

jenkins、gitlab、docker整合其一:配合nginx實現靜態頁面部署

一. 安裝配置Git 1. 安裝Git           直接使用yum安裝:yum install git           注意:git安裝於docker伺服器 2. 配置賬號密碼:配置賬號密碼使之能夠克隆庫時免於輸入 (1)cd ~/ &&

jenkins 實現PHP持續整合部署

安裝jenkins相關依賴 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo rpm --import https://jenkin

jenkins+gitlab自動化編譯部署方案探索及服務端編譯webpack實戰

width 代碼量 條件 correct parameter 錯誤 req 格式 提前 一. 背景 之前我們的開發流程為在本地進行webpack打包編譯,然後svn提交源代碼和編譯後的代碼。同時每次提交前也會從svn更新源代碼和編譯後的代碼。這樣做有幾個缺點: 1. s

第七篇 Postman+Node.js+Newman+Jenkins實現自動化測試

今天終於不咋忙了,學習整理一下一直想做卻沒實現的事兒,這事已經摺磨團隊半年之久了。因為專案是B端業務的測試,測試過程中需要生產大量的測試資料,而且都是跨多個系統的測試,對於後置流程的測試,這些同學往往要想有一條測試資料,就要自個去一步步的操作前置流程,最關鍵的是太耗時間,一條資料可能要花掉1個小時左右,加上測

JDK+Jmeter+Ant+Jenkins介面自動化持續整合環境搭建與執行

一、簡介 本文章主要是介紹介面自動化持續整合環境搭建以及測試例項,Apache JMeter是Apache組織開發的基於Java的介面和效能測試工具。 Apache Jmeter是一個100%的純java桌面應用,主要是針對web的壓力和效能測試,但後來擴充套件到其他測試領域。Jmeter可以用於測試

jmeter+ant+jenkins實現自動化介面測試

一、安裝前準備 1.JDK:jdk-8u121-windows-x64 2.jmeter工具:apache-jmeter-2.13 3.ANT工具:apache-ant-1.9.7-bin 4.jenkins工具:jenkins-2.32.2 以上安裝包工具及版本下

HtmlTestRunner + SmtpLib + Jenkins 實現自動化整合

首先呢,作為一個小白,大部分的程式碼都是網上搜索來的二次加工 可是拿來不見得就能用 比如,之前死活過不去的email垃圾檔案驗證,郵件只能躺在qq的草稿箱 網上那些方法,什麼抄送人新增自己之類的都沒用 最後是靈機一動,刪除了郵件正文裡的富文字才成功傳送郵件 如果以後能有更好

SVN + Maven + jenkins 實現自動化構建

搭建環境說明: SVN 在window下 執行在 192.168.74.1 jenkins 在 linux下 執行在 192.168.58.135 版本1.65 Maven 在 linux下 執行在

Jenkins實現內網部署及外網遠端部署到Tomcat

在Jenkins的自動構建任務中,我們經常需要把編譯之後打好的war包扔到Tomcat裡,以進行其他操作,下面我們分別概述部署到內網伺服器及外網伺服器的步驟。 1.部署到內網伺服器 安裝外掛--Deploy to container Plugin,安裝好之後在構建任務的構建

Jmeter簡單介紹與搭配Jenkins實現自動化測試實踐

Bioneck 豈安科技研發工程師 負責 Stalker 專案的部分研發與測試工作,程式設計愛好者,樂於使用程式碼解決生活中的重複工作。 最近有個需要依靠 Jmeter+Jenkins 實現自動化測試後部署的需求,於是看了看Jmeter的資

jenkins實現專案自動部署

背景 之前給公司搭建過一套gitlab+gerrit+jenkins的持續整合環境,由於操作起來有點繁瑣,自己也沒太搞清楚該怎麼用,所以一直就只用了gitlab來做程式碼管理。最近要做一個專案自動部署的功能,使用過jenkins一定知道他的自動化功能

Android 使用 Jenkins 實現自動化打包【流程】&【踩坑】

引言 每個Android開發應該都有經歷過正在碼程式碼的時候突然被打斷要求打個啥啥環境啥啥配置的安裝包,然後就得暫存程式碼、切換分支、更改配置、等待build、balabala……往大了說就是浪費時間消耗員工價值對公司的不負責(胡扯),往小了說就是這TMD真的

基於Jenkins,docker實現自動化部署持續交付)

前言 隨著業務的增長,需求也開始增多,每個需求的大小,開發週期,釋出時間都不一致。基於微服務的系統架構,功能的疊加,對應的服務的數量也在增加,大小功能的快速迭代,更加要求部署的快速化,智慧化。因此,傳統的人工部署已經心有餘而力不足。持續整合,持續部署,持續互動對於微服務開發來說,是提高團隊整體效率不可或缺的