<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 介紹 ![](https://i.imgur.com/fN4B8Hp.png) --- - 看完文件後,還是不太了解怎麼使用 Layer ![](https://i.imgur.com/095y2jH.png =600x350) --- ### 遇到個人化預覽圖的問題 --- **印刷人員及出貨人員作業上的困擾** - 有時候會空白沒設計 - 有時候會完全沒有圖片 --- ### 開會討論 - 前端程式加了判斷還是無法避免 - 使用者的網路環境不一樣 - 了解預覽圖生成方式 - 嘗試做到後端看看 --- ### 遇到後端開發的問題 --- <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 ![](https://i.imgur.com/CkRUkeE.png) --- ### Step3 打開控制台 ![](https://i.imgur.com/2d1KKB7.png) --- ### 建立 Layer - 輸入 Layer 名稱 - 選擇要上傳的方式(zip、s3 連結) - 選擇執行環境 --- ![](https://i.imgur.com/tG6Ugdj.png =600x550) --- ### Step4 套用到函式 ![](https://i.imgur.com/1HEXTb7.png =800x400) --- ![](https://i.imgur.com/F8d8PgJ.png =700x400) --- 設定完成了,讓我們看一下流程圖 ![](https://i.imgur.com/cFJbNTR.png =700x300) --- 恭喜你也可以跟我一樣部署只要 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}]"}
    841 views