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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三分钟学会如何在函数计算中使用 puppeteer

發布時間:2024/8/23 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三分钟学会如何在函数计算中使用 puppeteer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:?使用 puppeteer 結合函數計算,可以快速的構建彈性的服務完成各種功能,包括:生成網頁截圖或者 PDF、高級爬蟲,可以爬取大量異步渲染內容的網頁、模擬鍵盤輸入、表單自動提交、登錄網頁等,實現 UI 自動化測試和捕獲站點的時間線,以便追蹤你的網站,幫助分析網站性能問題

簡介

使用 puppeteer 結合函數計算,可以快速的構建彈性的服務完成各種功能,包括:

  • 生成網頁截圖或者 PDF
  • 高級爬蟲,可以爬取大量異步渲染內容的網頁
  • 模擬鍵盤輸入、表單自動提交、登錄網頁等,實現 UI 自動化測試
  • 捕獲站點的時間線,以便追蹤你的網站,幫助分析網站性能問題

接下來,將基于一個腳手架項目開發我們自己 puppeteer 項目。

下載項目

>>> git clone -o starter-kit https://github.com/awesome-fc/puppeteer-fc-starter-kit.git your_project_name

項目結構

├── lib ? ? ? ? ? ? ? ? ? ? ? ? chrome headless 依賴的共享庫,打包的時候,拷貝到打包項目的根目錄下 ├── chrome │ ├── buildChrome.sh ? ?編譯 chrome headless shell 腳本,基于它,可以編譯最新的版本 │ └── headless_shell.tar.gz ? 編譯后的 chrome headless 二進制打包文件 ├── src │ ├── index.js ? ?函數調用入口文件,函數 handler 為 index.handler,您的業務代碼寫在這里 │ └── starter-kit │ ├── config.js ? ?通過環境變量,獲取相關配置屬性,如:chrome 執行目錄和安裝目錄等配置 │ ├── local.js 本地測試操作 chrome headless 的 API 是否正確,通過執行命令:npm run local │ └── setup.js 安裝 chrome headless 相關邏輯代碼,如:基于 OSS 安裝或者本地目錄安裝 ├── package.json └── package.zip ? ? 輸出函數計算打包文件,通過命令:npm run package 或 npm run package-nochrome

如何寫業務代碼

index.js 文件

const setup = require('./starter-kit/setup');exports.handler = async (event, context, callback) => {const browser = await setup.getBrowser(context);exports.run(browser).then((result) => callback(null, result)).catch((err) => callback(err)); };exports.run = async (browser) => {// 實現您自己的業務代碼// 下面是一個示例代碼,需要替換成您自己的業務代碼// 示例實現了對固定網頁截圖并返回圖片的功能const page = await browser.newPage();await page.goto('https://fc.console.aliyun.com');return page.screenshot({clip: {x: 200,y: 60,width: 780,height: 450,},}); };

本地測試

執行命令:?npm run local?。測試您操作 chrome headless 的相關 api 是否正確運行。

編譯打包

包含 chrome headless

執行命令:npm run package?。命令會將 chrome headless 文件一起打包進項目,放在項目根目錄,函數執行的時候,默認將 chrome headless 安裝到?/tmp?目錄。

不包含 chrome headless

執行命令:npm run package-nochrome?。命令不會將 chrome headless 文件一起打包進項目,你需要額外將 chrome-headless 上傳到 OSS,通過環境變量告訴函數如何從 OSS 下載并安裝,默認將 chrome headless 安裝到?/tmp?目錄。為函數計算設置環境變量:

  • CHROME_BUCKET(必填): chrome headless 上傳到 OSS 的 bucket
  • CHROME_REGION(必填): chrome headless 上傳到 OSS 的 region
  • CHROME_KEY(必填): chrome headless 上傳到 OSS 的 key。 默認值:?headless_shell.tar.gz

部署

編譯打包輸出的文件:package.zip,通過函數計算控制臺或者 fcli 命令工具上傳已打包文件。fcli 上傳已打包文件命令:

# 在相應 service 目錄下 >>> mkf myFunction -h index.handler -f package.zip -t nodejs8 # 代碼在本地的 package.zip 中

為什么要使用函數計算

函數計算是一個相對較新的事物,可能大部分開發人員或架構師對它很陌生。微服務架構是當下很流行的一種系統架構,微服務架構有沒有不夠完美的地方?答案是肯定的。基于微服務架構,我們需要考慮使用什么微服務框架來架構系統、需要多少臺服務器、如何有效減輕運維負擔等一些列問題。另外,按照《福布斯》雜志的統計,在商業和企業數據中心的典型服務器僅提供 5%~15% 的平均最大處理能力的輸出。這無疑是一種資源的巨大浪費。

有沒有辦法解決上面的不足?答案也是肯定的,阿里云函數計算就是在這樣的背景下應運而生的。如果把云計算理解成一個執行環境,那么,在這個環境里,函數(即業務邏輯的載體)+ 數據(即跟業務相關的輸入與輸出)就是應用的核心,有了函數、數據、事件這三者,其它任何代碼和框架,無非是整個應用的膠水和UI罷了。那么,最理想的情況就是用最少的時間寫膠水,將更多的時間投入到核心應用的開發中,甚至,徹底實現整個軟件棧的微服務化。函數計算就是這里的膠水。

開發效率

項目開發效率傳統微服務方式函數計算方式
采購服務器等基礎設施需要不需要
管理服務器等基礎設施需要不需要
開發業務服務模塊需要需要
部署業務服務模塊需要需要,但是很簡單,提供了很多工具
通過 nginx 搭建反向代理、https 和負載均衡需要不需要,通過阿里云 API 網關或函數 HTTP 觸發器可以實現
搭建相關日志服務需要不需要,通過日志開關開啟日志服務
配置安全訪問規則需要不需要,自帶基礎安全訪問配置,API 網關提供更多的配置
運維負擔
開發效率高,通常幾天就能完成

可靠性

項目可靠性傳統微服務方式函數計算方式
峰值壓力當峰值壓力突增時,計算資源擴容不及時容易導致服務過載彈性伸縮,面對峰值壓力
錯誤處理需要自行處理服務器宕機,進程崩潰等問題無需處理服務器等故障,函數計算實現基礎設施的容錯
項目架構基礎設施管理比較復雜系統架構經過大量項目的驗證和長時間的打磨,相對穩定可靠很多

成本

項目成本傳統微服務方式函數計算方式
采購服務器等基礎設施成本成本高,利用率低
代碼開發成本成本高,包含基礎架構代碼和業務代碼成本低,只需關注業務代碼開發
函數計算成本成本低,按需付費,每月還有一定免額
運維成本成本高,難度大成本低,難度很小,甚至可以不需要專門的運維人員
集成阿里云其他產品成本,如 OSS 和RDS 等成本高成本低,提供對阿里云其他產品無縫集成

安全

項目安全傳統微服務方式函數計算方式
身份認證和訪問控制需自行實現除非您顯式的允許匿名調用函數,函數計算將對每一個 API 調用進行身份驗證。只有獲得您的顯式授權(借助于阿里云訪問控制服務,RAM),您的函數才可以訪問其他云服務資源或者被其他用戶/云服務調用。借助阿里云 API 網關,您也可以使用 OpenID 等機制對函數調用進行身份驗證
操作追蹤和審計需自行實現需自行實現
數據安全需自行實現通過使用訪問控制授權和函數計算環境變量等功能,您不必再將訪問憑證等敏感信息保存在代碼中。所有您借助函數計算服務持久化保存的數據,包括代碼、環境變量等等,都被加密存儲。系統在運行代碼之前,將對代碼進行完整性檢測
運行時安全需自行實現每個函數都在獨立的、隔離的環境中被執行。函數計算提供與阿里云彈性計算(ECS)相同的隔離強度。函數計算會周期性的重置運行時環境,并自動更新操作系統以及運行時依賴軟件的安全補丁
異常響應需自行實現函數計算允許您設置資源使用的上限,確保您的費用消耗可控。同時,函數計算提供函數調用次數,流控次數,錯誤率等指標。借助云監控,您可以為相關指標設置監控報警,快速響應異常情況

總結

函數計算有如下優勢:

  • 無需采購和管理服務器等基礎設施
  • 專注業務邏輯的開發
  • 提供日志查詢、性能監控、報警等功能快速排查故障
  • 以事件驅動的方式觸發應用響應用戶請求
  • 毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力

  • 按需付費。只需為實際使用的計算資源付費,適合有明顯波峰波谷的用戶訪問場景

原文鏈接

本文為云棲社區原創內容,未經允許不得轉載。


總結

以上是生活随笔為你收集整理的三分钟学会如何在函数计算中使用 puppeteer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。