• Home
  • About
    • Miles' Blog photo

      Miles' Blog

      Miles 用來記錄學習心得及筆記的地方。

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

使用SSH反向隧道連結AWS Aurora Serverless

10 Apr 2020

Reading time ~1 minute

使用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



A.W.SI.T. Share Tweet +1