RDS Proxy 這東西原則上就簡單想像成一個跳板機,並可以幫你管理 connection pool 並讓妳在很安全[註]的狀況下使用你的 RDS
註:當然要安全的設定 RDS Proxy 才有辦法安全地使用 XD
這東西最適合的情境會是在如果是 Lambda 去 access RDS 的時候。因為 RDS Proxy 會協助你做 connection 的管理,不會因為一次因為太爆量的 Lambda 在 access 資料庫就把資料庫 connection 塞爆這樣~
先來張架構圖,讓大家看一下 RDS Proxy 大概是長在哪裡
原則上就是長在資料庫 (上圖是顯示為 Aurora)的前面(廢話)
今天的設定只會 focus 在 RDS Proxy 上面,上圖的前後都不會介紹到XD
Create RDS Proxy
在建立 RDS Proxy 前,當然要先建立資料庫,這就麻瓜的按一按
在資料庫建立的當下可以選擇直接建立 RDS Proxy,不過事後也是可以補做的啦~ (我習慣分開做,先確定資料庫開完可以連上後再來弄 RDS Proxy)
create 的時候,也是麻瓜的按一按就好,比較值得提只有:
target group configuration
這裡在選定 database 的時候,只能選定 RDS DB 跟 Aurora ,其他不行;所以 RDS 的 read replica 是選不到的。
Authentication
由於登入的帳密會從在 secret manager 裡面,因此如果使用的帳號密碼有多組,在下面的 Secrets Manager secrets
要去把他選進來,這樣才吃得到
設定完後,大概兩三分鐘,等他跑完,就可以直接使用了。
設定重點
其實本篇的重點是在使用麻瓜設定後的 security group 的部分XD
如同上面那張架構圖的其實 request 會先進到 RDS Proxy 然後再進到資料庫
咱們把架構圖放大在這裡XD
所以要注意的設定有:
RDS Proxy
- security group 是不是可以接收來自外面的 protocol?
- RDS Proxy 上面會 attach 一個 IAM role,有沒有給予該 IAM role 對應的權限?
- 相關設定可以參考 這裡
Aurora (or RDS)
- security group 是不是可以接收來自 RDS Proxy 的 protocol?
Add other database users
若也需要新增資料庫,也要記得 secret manager 那裡也要記得去加喔~
建議做法可以參考 這裡
Troubleshoot
這裡有官方的 troubleshoot
但我遇到如下的錯誤,文件裡沒找到(或是我眼瞎XD
ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
研究好久,發現其實就是上方提到的 security group or IAM 權限沒設好而已XD
就這樣,我的青春,又默默耗費了一些掉了 囧
有寫錯歡迎指正 :)