本篇程式碼
服務整體架構
我們先來看看加入 RDS 之後的服務架構:
雖然省略 EC2 內部詳細,但也看得出來其實就是前兩個章節的架構的綜合。
修改與新增的程式碼
這次本藻就只提有變更的程式碼,若想要看完整程式碼還請移步專案連結。
本次只有動到 section_13 的 resource_ec2.tf(新檔名為 resource_ec2_rds.tf),詳細分為幾個部分以下介紹:
- Networking
首先是 EC2 與 RDS 要使用的 VPC 網路環境配置。
基本上就是上一篇相同的東西重複。
- RDS create
接著來看 RDS 的建立。
一樣是上一篇提到的東西,不過因為一些預設的編碼問題這邊我們用的是 mysql 8.0。
- EC2/Mysql init
最後是我們的重頭戲,因為我們把 EC2 中的 mysql 拆出去放到外部的 RDS,所以這裡只介紹涉及 RDS 的初始化的部分。(關於 EC2 中的舊的 mysql 的程式碼就只是被刪掉,這裡不贅述。)
資料庫初始化的部分有一點變化,原因是這次的 mysql 不在 EC2 本機上,所以 sudo 不再管用。因為沒辦法在 remote executor 上使用 mysql 的 -p 選項,這裡我們使用 --defaults-extra-file
直接帶入外部設定檔,實現免手動打密碼初始化資料庫。
而這裡使用的設定檔格式為下:
[client]
user=[帳號]
password=[密碼]
default-character-set=utf8mb4 #避免亂碼
結語
我們在上一篇有簡略提一下 AWS RDS 的部屬方法,但應用方面應該還是有些不明確的地方。因此本藻在這裡追加介紹將 RDS 整合到之前的架構的方法,希望能有所幫助。
而在下一篇,我們將要利用 Terraform 與 Serverless Framework 分別佈署漫畫爬蟲與漫畫閱讀器。架構上會開始變得複雜,如果有興趣還請持續關注。
下篇預告
Terraform ✕ Serverless Framework