<style>
.reveal {
font-size: 28px;
font-weight: 300;
color: #ccc;
}
.reveal .slides {
text-align: left;
}
.reveal section img {
border: none;
}
.reveal .slides section,
.reveal .slides section > section {
line-height: 1.6;
}
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
text-transform: none !important;
color: white;
}
.reveal h1, .reveal h2, .reveal h3 {
padding-bottom: 3rem;
}
.reveal blockquote {
width: 90%;
}
.reveal table {
border: 1px solid;
}
.content-between {
display: flex;
align-items: center;
justify-content: space-around;
}
.blockman {
display: block;
margin-left: 140px;
}
</style>
# 部署 Lambda 從 25 分鐘到 2 分鐘,你敢信?!
Jeffery @ Evolutive Labs
---
### 大綱
- 如何認識到 Layer
- Layer 解決了什麼問題
- 如何使用 Layer
- Layer 使用限制
---
### 初次見面 - 準備 Lambda 分享會
---
- 在 Lambda 文件看到 Layer 介紹

---
- 看完文件後,還是不太了解怎麼使用 Layer

---
### 遇到個人化預覽圖的問題
---
**印刷人員及出貨人員作業上的困擾**
- 有時候會空白沒設計
- 有時候會完全沒有圖片
---
### 開會討論
- 前端程式加了判斷還是無法避免
- 使用者的網路環境不一樣
- 了解預覽圖生成方式
- 嘗試做到後端看看
---
### 遇到後端開發的問題
---
<div class="content-between">
<ul>
<li>用 node-canvas 套件沒作用</li>
<li>用 sharp 套件不會套字型</li>
<li>用 PhantomJS 套件只支援一張圖片</li>
</ul>
<img src="https://i.imgur.com/HMpELcC.png">
</div>
---
用 Puppeteer 套件去測試全部個人化服務終於成功了~
---
### 遇到 Lambda 部署的問題
---
- 打包程式及相依套件超過 250 MB限制
- 發現 puppeteer 套件就佔 200 MB
- 部署時間變超久
- 主要花比較多時間在打包相依套件
---
### 解決打包超過 250MB 限制
- 只安裝 puppeteer-core 套件
- 安裝輕量的 chrome 並可在 Lambda 上執行
- 套換原本套件呼叫 puppeteer 的方法
---
到這邊可以部署上去了,但部署時間要花將近半小時左右...
---
### 解決部署時間過久
- 了解哪些是沒有在用的 package
- 了解 Webpack 有沒有最佳化的參數
---
做完之後還是沒有很大的改善,於是想到還有 Layer
---
### Layer 解決了什麼
---
### 將依存套件與函數程式碼分開部署
- 加快打包速度
- 降低部署的失敗率
---
### 開發程式更敏捷
- 程式碼小於 3 MB,可以使用線上編輯器
- 可以即時切換不同版本的 Package
- 可以與其他 Lambda Function 共用
---
### 了解什麼是 Layer ?
---
<div class="content-between">
<ul>
<li>是 Lambda 其中一項功能,用來將依存套件獨立部署</li>
<li>解壓縮到環境中的 /opt 目錄</li>
</ul>
<img src="https://i.imgur.com/RPcRTC1.png" width="300" height="300">
</div>
---
### 如何使用 Layer
---
### Step1 先來打包專案所需要的依存套件
1. 建立以 nodejs 命名的資料夾
2. 新增該專案所需要套件的 package.json
3. npm install 完後把 package.json 檔案移除
4. 壓縮成 zip 檔
---
### Step2 將壓縮檔上傳到S3

---
### Step3 打開控制台

---
### 建立 Layer
- 輸入 Layer 名稱
- 選擇要上傳的方式(zip、s3 連結)
- 選擇執行環境
---

---
### Step4 套用到函式

---

---
設定完成了,讓我們看一下流程圖

---
恭喜你也可以跟我一樣部署只要 2 分鐘內就搞定~
---
### Layer 使用限制
---
- 每個函式一次最多可使用 5 層
- 部署套裝服務大小,解壓縮不能超過 250 MB(包括 Layer)
- 詳細可參考 [AWS Lambda 配額](https://docs.aws.amazon.com/zh_tw/lambda/latest/dg/gettingstarted-limits.html)
---
## Q&A
{"metaMigratedAt":"2023-06-15T16:03:12.814Z","metaMigratedFrom":"YAML","title":"部署 Lambda 從 25 分鐘到 2 分鐘,你敢信?!","breaks":true,"contributors":"[{\"id\":\"5344d19f-c240-4fe4-bd63-c70af739e6c4\",\"add\":7723,\"del\":4676}]"}