函數計算(Function Compute):函數計算 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理服務器等基礎設施,只需編寫並上傳代碼。函數計算為您准備好計算資源,彈性地可靠地運行任務,並提供日志查詢、性能監控和報警等功能。借助函數計算,您可以快速構建任何類型的應用和服務,並且只需為任務實際消耗的資源付費。
訪問 MySQL 數據庫是指在函數計算中通過編寫代碼調用數據庫驅動庫通過 TCP 協議實現對數據庫進行的插入、查詢等操作。通常函數計算中運行的不同函數實例之間是不共享狀態的,對於結構化的數據可以通過數據庫的形式進行持久化以實現狀態共享。由於用戶函數運行在函數計算的 VPC 中,而用戶的數據庫運行在用戶所屬的 VPC 中,所以在函數計算平台訪問數據庫會涉及到跨 VPC 訪問的場景,下面我們先來介紹一下其工作機制。
工作機制
運行函數時,訪問 IP 是不固定的,因此您無法通過設置白名單的方式訪問 MySQL。基於最小權限原則,不建議在生產環境中將所有 IP(0.0.0.0/0)設置到數據庫白名單中。函數計算已經支持專有網絡 VPC 功能,您可以為函數所在的服務開啟 VPC 訪問的功能,安全地訪問 VPC 中的資源。
您可以將 MySQL 放置於安全的 專有網絡VPC 中,並配置函數計算訪問 VPC 中的資源,函數計算就可以通過 VPC 安全地訪問您的雲數據庫。
函數計算訪問 MySQL 工作流程如下圖所示:
-
函數計算訪問用戶 VPC 原理如下:
用戶的 VPC 是用戶私有的網絡,需要用戶授權賦予 彈性網卡 ENI訪問 VPC 的能力,並將此 ENI 插入到 FC 中執行用戶函數的機器上,從而使函數可以訪問用戶 VPC 內資源。函數計算配置VPC功能,可參考 詳情。
如果用戶的 VPC 資源不在函數計算當前可用區,可以通過在用戶 VPC 環境中創建一個與函數計算相同可用區的 VSwitch ,並在函數計算的服務的 VPC 配置中設置此 VSwitchID。由於同一專有網絡內不同交換機之間內網互通,因此函數計算可以通過該 VSwitch 訪問在其他可用區的用戶 VPC 內資源。
- MySQL 實例創建成功后,您需要設置白名單,進入相應實例,左側點擊數據安全性,選擇白名單設置,將專有網絡中 default 設置為配置的 VPC 實例內網 IP 段或者配置 FC 配置的交換機內網 IP 段。
-
訪問 MySQL 數據庫 host 為實例的內網地址,可以登錄阿里雲控制台查看:
配置
公共配置
創建專有網絡VPC
創建安全組
在安全組控制台 新建安全組,點擊 創建安全組,設置安全組名稱,網絡類型選擇 專有網絡,並選擇剛才創建的專有網絡。
創建 MySQL 實例
- 在 RDS 控制台 新建RDS實例,點擊創建實例。
- 基本配置選擇您需要的配置,沒有特殊要求選擇默認配置即可。
- 網絡類型選擇專有網絡,並選擇您已經創建的 VPC 和交換機。
- 選擇您需要的存儲空間和購買量,立即購買。即成功創建了 RDS 實例。
- 實例創建成功后,您需要設置白名單,進入相應實例,左側點擊 數據安全性,選擇白名單設置,將專有網絡中 default 設置為配置的 VPC 實例內網 IP 段或者配置 FC 配置的交換機內網 IP 段。
- 白名單設置成功后,點擊左側數據庫管理,點擊創建數據庫,設置數據庫名稱。
- 新建賬號訪問數據庫。點擊左側賬號管理,填寫數據庫賬號、授權數據庫,登錄密碼。您可以通過此賬號登錄數據庫。
- 實例詳情頁,點擊右上角登錄數據庫,使用剛才創建的賬號登錄數據庫。(如果沒有 DMS 訪問權限,控制台會彈出授權頁面,根據提示授權即可)。
- 登錄到 DMS 系統后,左上角選擇數據庫,就可以進行創建表、插入數據等操作了。
至此,您已經成功創建了 VPC、安全組、RDS。
函數計算配置 VPC
注意:函數計算服務所在區域與公共配置中創建的資源所在區域一致。
-
在 函數計算控制台 創建服務。
- 創建服務步驟請參考文章 服務的增刪改查
- 【專有網絡配置】選項中,選擇您在步驟一中創建的 VPC 網絡,交換機、安全組。
-
【權限配置】選項中,選擇【新建角色】,點擊【點擊授權】,在角色快速創建頁面,點擊【同意授權】。
- 這步的操作是授予函數計算對 ENI 的操作權限,函數計算訪問 VPC 中資源需要的權限請參考文章 配置函數計算訪問 VPC 內的資源
- 點擊確定,新建服務完畢。
安裝模塊
在函數代碼中您需要使用訪問 MySQL 的第三方模塊,您需要將第三方模塊下載到入口所在目錄,將第三方模塊和入口函數放到同一個文件夾下再一同打包上傳至函數計算。第三方模塊打包請參考文章 為函數安裝第三方依賴。
參考示例工程
總結
通過本文介紹可以快速實現函數計算訪問 Mysql 數據庫。
使用函數計算帶來的優勢:
- 無需采購和管理服務器等基礎設施,只需專注業務邏輯的開發,可以大幅縮短項目交付時間和人力成本;
- 提供日志查詢、性能監控、報警等功能快速排查故障;
- 免運維,毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力,性能優異;
- 成本極具競爭力;
本文為阿里雲內容,未經允許不得轉載。