設定分享資料庫連接

使用 Amazon RDS Proxy

Amazon RDS Proxy i是用於 Amazon Relational Database Service (Amazon RDS) 的全受管的、高度可用的資料庫代理,讓應用程式更具擴展性、資料庫失敗的恢復能力更強、並且更安全。

許多應用程式包括那些在使用 AWS Lambda 的現代無伺服器架構上建置的應用程式,都可以與資料庫伺服器建立大量開啟的連線,並且可能以高速率開啟和關閉資料庫連接,從而耗盡資料庫記憶體與運算資源。Amazon RDS Proxy 允許應用程式集區化和共用與資料庫建立的連線,從而提升資料庫效率和應用程式可擴展性。使用 RDS Proxy,Aurora 和 RDS 資料庫的容錯移轉時間最多減少了66%,並且可以通過與 AWS Secrets ManagerAWS Identity and Access Management (IAM) 整合來管理資料庫登入資料、身份驗證及存取。

無需更改程式碼即可為大多數應用程式啟用 Amazon RDS Proxy,並且您無需佈建或管理任何其他基礎設施。定價簡單且可預測:您按啟用代理的資料庫執行個體的 vCPU 付費。Amazon RDS Proxy 支援具有 MySQL 相容性的 MySQL 和 Amazon Aurora 的 Amazon RDS。

在本教學中,您將學習如何建立 Amazon RDS Proxy 並將其連接到現有的 Amazon RDS MySQL 資料庫。您在 Amazon EC2 執行個體上使用 MySQL 用戶端透過 RDS Proxy 與RDS MySQL 資料庫建立連接。這些概念還可透過 Amazon RDS 應用於無伺服器架構。

先決條件

Amazon RDS Proxy 要求您擁有一組網路資源,例如:

  • Amazon Virtual Private Cloud (Amazon VPC)、
  • 跨不同可用區域的兩個或多個子網路、
  • 同一 VPC 中的一個 Amazon RDS 資料庫與 Amazon EC2 執行個體、以及
  • 網際網路閘道

如果您已成功連接到現有的 RDS MySQL 資料庫執行個體,則已經設定了必需的網路資源。本教學要求您的帳戶在同一VPC中使用 EC2 執行個體和 RDS MySQL 執行個體設定。如果沒有設定這些執行個體,則可以按照 RDSEC2 的說明在預設 VPC 中設定執行個體。

關於本教學
時間 10 分鐘      
費用 低於 1 USD
使用案例 資料庫
產品 Amazon RDS、AWS Secrets Manager
對象 資料庫管理員、開發人員
等級 中級
上次更新日期 2020 年 3 月 16 日

步驟 1:驗證安全群組與資料庫連線能力

對於此步驟,您需要驗證安全群組的傳入和傳出規則,然後驗證從當前 EC2 執行個體到現有 RDS 資料庫執行個體的連線能力。 

1.1 — 開啟 Amazon VPC 儀表板 然後使用您的 AWS 帳戶登入資料登入。若您沒有 AWS 帳戶,則建立新的 AWS 帳戶 以利開始使用。

已經有帳戶了嗎? 登入您的帳戶

1.2 — 選擇區域下拉式清單然後選取現有 RDS 與 EC2 執行個體所在的 AWS 區域。這教學使用美國東部 (俄亥俄) 區域。

在左側導覽窗格中選擇安全群組

這教學使用 2 個 VPC 安全群組:

  • EC2-sg:此安全群組附加到 EC2 執行個體,並且僅允許 SSH 連線傳入到 EC2 執行個體以及任何傳出連線。
  • RDS-sg:此安全群組附加到 RDS 執行個體,並且僅允許來自 EC2 執行個體的連接埠 3306 上的 TCP 連線(顯示為 EC2-sg)與任何傳出連線。

1.4 – 選取 EC2-sg

  • 選取傳入規則 標籤並確認類型為 SSH
  • 選擇傳出規則標籤並確認類型所有流量

1.5 — 選取 RDS-sg

  • 選擇傳入規則標籤並確認來源EC2-sg
  • 選擇傳出規則標籤並確認類型所有流量

1.6 — 導航到 RDS 主控台,選擇資料庫,然後選擇您現有的 RDS MySQL 資料庫執行個體。在連線與安全標籤上,記下執行個體端點

1.7 — 導航到 EC2 主控台,選擇運行執行個體,然後選擇要從中測試與 RDS 資料庫執行個體的連線能力的 EC2 執行個體。選擇 Connect

1.8 — 在連接到您的執行個體對話方塊中,選擇 EC2 執行個體連接(基於瀏覽器的 SSH 連接)。瀏覽器視窗開啟顯示 EC2 執行個體命令列界面 (CLI)。

1.9 — 在 EC2 執行個體 CLI 中,使用下列指令測試與 RDS 資料庫執行個體的連線能力:

mysql -h <RDS DB endpoint> -P 3306 -u <username> -p

出現提示時,輸入您的密碼並按下 Enter

CLI 回復一則訊息,顯示您已成功連接到 RDS 資料庫執行個體。如果無法從 EC2 執行個體連接到 RDS 執行個體,請確認兩個執行個體都在同一 VPC 中,並且安全群組設定正確。

步驟 2 存放 AWS Secrets Manager 中的資料庫登入資料

對於此步驟,將資料庫登入資料儲存在 AWS Secrets Manager 中。代理所存取的每個資料庫使用者帳戶都需要在 AWS Secrets Manager 中有一個對應的密碼。Amazon RDS Proxy 使用這些秘密來維護與數據庫的連接集區。

2.1 — 請導覽至 AWS 管理主控台的 Secrets Manager 區段,然後選擇儲存新密碼

選取密碼類型方塊中,選擇 RDS 資料庫的登入資料。然後,鍵入資料庫建立時所採用的使用者名稱和密碼。

2.3 – 選取 DefaultEncryptionKey 然後選擇相應的 RDS 資料庫進行密碼存取。選擇下一步。 

密碼名稱和描述區段,為您的密碼提供名稱和描述,以便稍後可以輕鬆找到。然後,選擇下一步

AWS Secrets Manager 可讓您為密碼設定自動密碼輪換。這是一種增強應用程式安全性的智慧、簡便方法。如需詳細資訊,請參閱輪換 AWS Secrets Manager 密碼

設定密碼輪換不在本教學的討論範圍內,因此,選擇停用自動輪換選項,然後選擇下一步

2.6 — Secrets Manager 主控台顯示了您的密碼的組態設定,以及一些範例程式碼,示範如何使用您的密碼。滾動至頁面底部,然後選擇儲存,以儲存您的密碼。

建立密碼後,Secrets Manager 頁面將顯示您建立的密碼。選擇您的 教學密碼

密碼詳細資訊方塊,將會顯示您的密碼的 ARN。複製該值,因為您在本教學中稍後會需要。

步驟 3:建立 IAM 角色與政策

在此步驟中,您將建立 AWS Identity and Access Management(IAM)角色和政策,以允許 RDS 代理存取您在 AWS Secrets Manager 中建立的密碼。

3.1 — 導航到 AWS Management 主控台中的 IAM 儀表板。在 IAM 儀表板的瀏覽窗格中選擇角色,然後建立角色

3.2 — 針對選取受信任實體的類型,選擇 AWS 服務。對於選擇使用案例,選擇RDS

3.3對於選取您的使用案例,選擇 RDS - 新增角色到資料庫,然後選擇下一步:許可

3.4 – 選擇建立政策並選擇JSON 標籤。刪除現有政策敘述

3.5 – 新增以下新政策敘述,將您的密碼 ARN 值替換為下面列出的範例。選擇 Review Policy (檢閱政策)

(這政策敘述在 Amazon RDS 使用者指南中的設定 AWS Identity and Access Management (IAM) 政策中進行了描述。)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword",
                "secretsmanager:CreateSecret",
                "secretsmanager:ListSecrets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Resource": [
                     "your_secret_ARN"
            ]
        }
    ]
}

3.6 — 在審查政策區段,為您的政策提供名稱和描述,以便稍後可以輕鬆找到。然後選擇建立政策

3.7 — 選擇角色然後選擇重新整理

3.8 — 在搜尋方塊中,鍵入教學l然後選擇教學政策。選擇下一步:標籤

3.9 — 跳過標記區段然後選擇下一步:審查

3.10 — 在審查區段,為您的角色提供名稱和描述,以便稍後可以輕鬆找到。然後選擇建立角色

3.11 — 確認角色已建立。

步驟 4:建立 RDS Proxy

在此步驟中,您將建立 RDS Proxy,並為在步驟 1 中驗證的安全群組、在步驟 2 中建立的密碼以及在步驟 3 中建立的角色設定代理。

4.1 — 瀏覽至 RDS 主控台。在 RDS 導覽窗格中,選擇代理,然後建立代理

4.2 — 在代理配置區段,執行以下操作:

  • 對於代理識別碼,給代理一個易於識別的名稱。
  • 清除 Require Transport Layer Security 勾選方塊。
  • 閒置用戶端連接超時保留為預設的30 分鐘

4.3 — 在 目標群組配置區段,對於資料庫,選擇要與此RDS 代理關聯的 RDS MySQL 資料庫執行個體。(此 RDS 資料庫執行個體與您在步驟 1 中驗證連接的執行個體相同。) 對於連接集結最大連線,請保持預設值 100

4.4 — 在連接區段,請執行以下操作:

  • 對於Secrets Manager 密碼,選擇步驟 2 中您所建立的密碼。
  • 對於 IAM 角色,選擇步驟 3 您所建立的角色。
  • 對於 IAM 身分驗證,保留預設的設定 Disabled。(本教學使用資料庫登入資料與 RDS 代理連接,因此不使用 IAM 身份驗證。)
  • 對於子網路,請在不同的可用區域中至少選擇兩個子網路。
  • 展開其他連接配置,對於 VPC 安全群組,選擇現有的 RDS-sg 安全群組。

4.5 — 在 進階配置區段中,保留增強型日誌的預設選擇。選取服務協議勾選方塊,然後選擇建立代理

4.6 — 等待代理狀態從建立更改為可用,然後選擇代理。

4.7 — 在代理配置區段中,註記代理端點並確認所有其他的參數是正確的。

步驟 5:透過 RDS Proxy 連接 RDS 資料庫

在此步驟中,從您的 EC2 執行個體連接到 RDS 資料庫執行個體。但是,EC2 執行個體不是直接連接,而是透過 RDS 代理連接到 RDS 資料庫執行個體。

5.1 — 導覽至 EC2 主控台。在 EC2 瀏覽窗格中,選擇運行執行個體,然後選取您從步驟 1 測試連線能力的 EC2 執行個體。選擇 Connect

5.2 — 在連接到您的執行個體對話方塊中,選擇 EC2 執行個體連接(基於瀏覽器之 SSH 連線), 然後選擇連接

5.3 — 在 EC2 執行個體 CLI 中,透過 RDS Proxy 端點,使用下列指令連接 RDS 執行個體。

mysql -h <proxy endpoint> -P 3306 -u <username> -p

出現提示時,輸入您的密碼並按下 Enter

CLI 回復一則訊息,顯示您已透過 RDS Proxy 端點成功連接到 RDS 資料庫執行個體。

步驟 6:監控您的 RDS 代理連接

在此步驟中,您使用 Amazon CloudWatch 監控代理指標,例如用戶端與資料庫連線

6.1 — 瀏覽至 CloudWatch 主控台。在 CloudWatch 導覽窗格中,選擇指標,然後選擇RDS每個代理指標。 

6.2 — 在搜尋方塊中,輸入您的代理名稱。

6.3 — 在指標清單中,選擇 ClientConnectionsDatabaseConnections。對於顯示選項,選擇 數量

ClientConnections 指標顯示每分鐘報告的與 RDS 代理的當前用戶端連接數量。DatabaseConnections 指標顯示每分鐘報告的來自 RDS 代理的當前資料庫連接數量。有關所有指標的詳細資料,請參閱 Monitoring RDS Proxy

結果圖形顯示,存在一個用戶端連接(EC2 到 RDS 代理)和一個資料庫連接(RDS 代理到 RDS 資料庫執行個體)。此資料確認您在步驟 5 中建立的連接。

步驟 7:清除

在接下來的步驟中,您將清理在本教學中建立的資源。

刪除 RDS Proxy

7.1 — 導覽到 RDS 主控台,並在左窗格中選擇代理

7.2 — 選擇教學代理。

選擇動作,然後選擇刪除

7.4 — 在對話方塊中,鍵入刪除,然後選擇刪除

代理的狀態更改為正在刪除。完成後,代理將從清單中刪除。

刪除秘密

導覽到 Secrets Manager 主控台

7.6 — 選擇教學密碼。

7.7 — 選擇動作,然後選擇刪除密碼

7.8 — 為安全起見,Secrets Manager 要求一段等待期間,隨後方能永久刪除密碼。使用 30 天的預設期間,然後選擇排定刪除

刪除 IAM 角色與政策

7.9 — 導覽到 IAM 主控台,然後在導航窗格中選擇角色.。

7.10 — 搜索教學角色,然後選擇角色旁邊的勾選方塊。

7.11 — 在頁面最上層,選擇刪除角色

7.12 — 在確認對話方塊中,選擇是,刪除 

7.12 — 在 IAM 導覽窗格中,選擇政策

7.13 — 搜索教學政策,然後選擇政策旁邊的勾選方塊。 

7.14 — 選擇政策操作,然後選擇刪除

7.15 — 確認您想要刪除的政策,然後選擇刪除

刪除其他資源

如果您為本教學建立新的 EC2 執行個體,新的 RDS 執行個體以及相應的安全群組,請也刪除這些資源。

恭喜

您已建立 Amazon RDS Proxy 以集結化和共享資料庫連接,監視代理指標,並驗證代理的連接活動。

本教學對您有幫助嗎?

進一步了解 Amazon RDS 功能

透過 Amazon RDS 使用者指南了解更多有關 Amazon Aurora 的功能。

Amazon RDS 的最佳實務

了解有關使用 Amazon RDS 的一般最佳實務和選項。

進一步了解 Amazon RDS Proxy