嘗試存取 Amazon RDS 資料庫執行個體時,如何對來自 Lambda 的連線逾時錯誤進行疑難排解?

2 分的閱讀內容
0

當我嘗試存取 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體時,AWS Lambda 函數會收到連線逾時錯誤。如何針對這些錯誤進行疑難排解?

解決方法

對間歇性和暫時性連線逾時錯誤進行疑難排解

擷取 Lambda 函數的事件,並在函數錯誤處理過程中重試它們

如需詳細資訊,請參閱 AWS Lambda 中的錯誤處理和自動重試

檢查是否有 DNS 錯誤

確認是否有任何與網域名稱系統 (DNS) 相關的錯誤。如果有 DNS 錯誤,請找出這些錯誤。然後,使用指數退避重試 DNS 請求。如需詳細資訊,請參閱 AWS 中的錯誤重試和指數退避

注意: 重試 DNS 請求之前,請確保您能夠解析傳入和傳出端點。

對持續的連線逾時錯誤進行疑難排解

檢查 Lambda 函數的 Amazon CloudWatch Logs

如果您尚未這麼做,請授予 CloudWatch 記錄許可給 Lambda 函數。然後,檢閱函數的日誌以識別特定的連接逾時錯誤。

如需詳細資訊,請參閱監控並疑難排解 Lambda 應用程式

檢查 VPC 組態

對於私有資料庫,請根據您的使用案例執行下列任一動作:

將 Lambda 函數放在與資料庫相同的 Amazon Virtual Private Cloud (Amazon VPC) 中

  • 或 -

在包含函數的 Amazon VPC 與包含資料庫的 Amazon VPC 之間建立 VPC 對等互連

對於公有資料庫,請執行下列動作:

(對於 Amazon VPC 中的函數) 透過網路位址轉譯 (NAT) 閘道NAT 執行個體路由公有流量。如需詳細資訊,請參閱如何讓網際網路存取連線到 Amazon VPC 的 Lambda 函數?

**注意:**如果資料庫可公開存取,而且資料庫沒有 IP 地址型限制,請遵循教學課程: 設定 Lambda 函數以在 Amazon VPC 中存取 Amazon RDS 中的指示。

檢查安全群組規則

對於私有資料庫,請執行下列動作:

將傳入規則新增至資料庫安全群組,以允許來自 VPC 子網路安全群組的 CIDR 範圍的流量。

對於公有資料庫,請執行下列動作:

將傳入規則新增至資料庫安全群組,以允許來自 VPC 的 NAT 閘道NAT 執行個體的流量。

更新 Lambda 函數處理常式

更新 Lambda 函數程式碼,讓函數開啟函數處理常式外部的資料庫連線,而不關閉該連線。

注意: 由於 Lambda 重複使用容器的方式,重複使用容器時,Lambda 不會重新初始化函數處理常式外部的程式碼。最佳實務是在處理常式外部建立您計劃重複使用的連線,使其在每次執行後續調用時仍然存在。在嘗試使用連線之前,請確認是否存在有效連線。如果不存在有效連線,請在繼續之前建立新連線。

使用 EC2 執行個體連線

作為測試,請使用與 Lambda 函數相同的 Amazon VPC 組態啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。然後,嘗試從 EC2 執行個體連線至 Amazon RDS 資料庫執行個體

如果您可以連線至資料庫,請遵循對 Lambda 中的網路問題進行疑難排解中的指示。

  • 或 -

如果無法連線至資料庫,請遵循如何解決連線至 Amazon RDS 資料庫執行個體的問題?中的指示。

使用 Amazon RDS Proxy

為您的 RDS 資料庫建立 Amazon Relational Database Service (Amazon RDS) Proxy 端點,以處理來自 Lambda 函數的資料庫流量。如需詳細資訊,請參閱將 Amazon RDS Proxy 與 AWS Lambda 搭配使用

注意: 對 MySQL 和 PostgreSQL 的 Amazon RDS Proxy 支援現已正式推出


相關資訊

設定 Lambda 函數的資料庫存取

將 AWS Lambda 與 Amazon RDS 搭配使用

如何對使用 VPC 公有或私有子網路之 Amazon RDS 執行個體的連線進行疑難排解?

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