使用AWS Aurora Serverless 服務作為後端資料庫時,成本節省,但該服務僅提供同一個位在AWS VPC內的裝置存取(AWS官方文件),在這樣的條件下於Local端進行開發,往往造成極大的不方便,若使用Aurora Serverless服務提供的Endpoint存取資料庫時,呈現的會是連不上的情形。如下圖所示
為解決上述Local端開發問題,本篇文章介紹,讓地端的資料庫IDE(如Workbench)連結上Aurora Serverless做Debug,使用SSH Revere Tunnel連結,關於SSH Revere Tunnel介紹,將在後續提出。
P.S.在開始之前,您必須先確認您的AWS帳號是否有開設EC2的權限。
開設EC2,進入到AWS EC2 Console,點選Launch Instance,進入到選擇AMI介面,為快速設定及節省成本,可選擇Free tier 的 Amazon Linux AMI。
因為僅供連結使用,機器規格並不需要設定到太高階,為節省成本,使用Free tier的t2.micro,接著點選Next: Configure Instance Details。
因為使用限制,Network選項「必須」選擇和Aurora Serverless同一個VPC,其他選項皆可保持預設。
Add Storage可視其他需求而定,本範例中僅開設最小的8GB。
關於SecurityGroup設定,需打開22 port供Reverse SSH Tunnel連入,並記錄該EC2 SecurityGroup ID。
最後點選Launch,選擇您適合的SSH KEY供待會SSH Tunnel連入時使用,最後點選Launch Instances。
當EC2 Instance狀態從Initializing轉換成2/2 checks,即可連入。
記錄您的EC2 Public DNS (IPv4),若供未來長期使用,建議使用Elastic IP,當EC2關閉時時才不需要對連結的Endpoint做修改。
接下來開啟您的AWS RDS Console,點選您的Aurora Serverless DB identifier,在Connectivity & security頁籤底下記錄您的Endpoint,待會在設定SSH Reverse Tunnel會用到,接著點選RDS的VPC security groups。
在Inbound rules底下,為該VPC security groups新增MYSQL/Aurora選項,並將EC2的Security Group ID帶入。
接下來要在Local端設定SSH Reverse Tunnel,以Mac為例,首先打開您的TERMINAL視窗,輸入
vi ~/.ssh/config
i進入編輯模式,在底下加入
# Serverless Tunnel
Host {輸入您的名稱,如dev}
HostName {剛剛紀錄EC2 Public DNS (IPv4)}
User {使用者名稱,如當時開設使用的AMI為Amazon Linux AMI,則為ec2-user}
IdentitiesOnly yes
IdentityFile {開設EC2使用的SSH Key存放位置}
LocalForward 3306 {Aurora Serverless的Endpoint}:3306
編輯完成後儲存離開介面
接下來在Terminal底下輸入
ssh {您剛剛在HOST輸入的名稱} -Nv
回到資料庫IDE(如Workbench)視窗,Host輸入 127.0.0.1,輸入您存取資料庫的帳號及密碼,並且連線。
便可連入RDS Aurora Serverless Database