如何對 Amazon EC2 啟動類型的 Amazon ECS 任務與 Amazon RDS 資料庫之間的連線問題進行疑難排解?

1 分的閱讀內容
0

我的應用程式是在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上由 Amazon Elastic Container Service (Amazon ECS) 啟動的一組任務。我的應用程式無法與 Amazon Relational Database Service (Amazon RDS) 資料庫通訊。

解決方法

驗證您的網路組態

若要確認容器執行個體是否可以建立與資料庫的連線,請針對 Linux 或 Windows 容器執行個體完成下列步驟:

對於 Linux 容器執行個體:

1.    使用 SSH 連線至任務所在的容器執行個體

2.    若要連線到 RDS 資料庫,請執行下列命令:

$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306

**注意:**請將 test.ab12cde3fg4.us-east-1.rds.amazonaws.com 替換為您的資料庫端點。將 3306 替換為您的資料庫連接埠。

輸出類似於以下內容:

> Trying 172.31.122.28
 > Connected to test.ab12cde3fg4.us-east-1.rds.amazonaws.com
 > Escape character is '^]'.

**重要事項:**Amazon ECS 最佳化的 Amazon Machine Images (AMI) 未預先安裝 Telnet。若要安裝 Telnet,請執行 sudo yum install telnet -y 命令。

對於 Windows 容器執行個體:

1.    使用遠端桌面通訊協定 (RDP) 連線至任務所在的容器執行個體

2.    若要連線至 RDS 資料庫,請使用 Windows 命令提示字元或 Windows PowerShell 執行下列命令:

$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306

**注意:**請將 test.ab12cde3fg4.us-east-1.rds.amazonaws.com 替換為您的資料庫端點。將 3306 替換為您的資料庫連接埠。

**重要事項:**Amazon ECS 最佳化的 Windows AMI 未預先安裝 Telnet。若要安裝 Telnet,請以管理員身分使用 PowerShell 執行 Install-WindowsFeature -Name Telnet-Client 命令。

如果已建立連線,則會出現空白頁面。

如果連線未建立,且您收到「連線逾時」或「連線失敗」錯誤訊息,請完成以下步驟:

1.    檢查連結的安全性群組是否允許存取 RDS 資料庫。您可以在 Amazon EC2 主控台中,針對所選執行個體 ID 使用 DescribeInstances API 呼叫,或使用**「描述」**索引標籤。

**注意:**在 bridgehost 網路模式中,連接至容器執行個體的安全群組會管理對資料庫的存取權。在 ** awsvpc ** 網路模式中,啟動服務或任務期間相關聯的安全性群組會管理存取權。

**提示:**最佳實務是建立安全性群組,允許從資料庫連接埠傳入流量。然後,將安全性群組附加至資料庫和容器執行個體,或將安全性群組與 awsvpc 任務建立關聯。

2.    檢查與子網路相關聯的網路存取控制清單 (網路 ACL) 和路由表是否允許存取資料庫

驗證資料庫連線參數

1.    在容器定義的環境區段中,安全地傳遞環境變數。若要安全傳遞,請參考來自 AWS Systems Manager Parameter Store 或 AWS Secrets Manager 的環境變數

**注意:**應用程式會使用參數 (例如資料庫端點、資料庫連接埠和資料庫存取憑證) 來建立與資料庫的連線。這些參數通常作為環境變數傳遞至任務。

2.    如果任務中的容器可以建立與資料庫的連線,但由於連線參數不正確 (例如資料庫使用者名稱或資料庫密碼) 而無法驗證,請重設資料庫密碼

3.    從連接參數中刪除任何開頭或結尾字元空格。

**注意:**語法錯誤可能會導致容器和 RDS 資料庫之間的連線失敗。


AWS 官方
AWS 官方已更新 4 年前