我希望 AWS Lambda 函數連線到 Amazon Relational Database Service (Amazon RDS) 執行個體。
簡短描述
**注意:**下列資訊和步驟參考 Amazon RDS 執行個體。但是,解決方法也適用於位於虛擬私有雲端 (VPC) 中的任何端點或資料庫。
若要將 Lambda 函數連線到 RDS 執行個體,請設定網路組態以允許連線。
下列每種連線類型都有不同的組態設定:
- 同一個 VPC 中的 Lambda 函數和 RDS 執行個體
- 不同 VPC 中的 Lambda 函數和 RDS 執行個體
基於安全原因,最佳實務是將您的 RDS 執行個體保留在 VPC 中。對於公有資料庫,請使用 NoSQL 資料庫服務,例如 Amazon DynamoDB。
VPC 外部的 Lambda 函數無法存取 VPC 內部的 RDS 執行個體。
如需有關如何設定 Lambda 函數網路設定的資訊,請參閱設定 Lambda 函數以存取 VPC 中的資源。如果網路設定不正確,Lambda 函數會逾時並顯示任務逾時錯誤訊息。
若要將 Lambda 函數連線到 Amazon Aurora 資料庫叢集,請使用 Aurora Serverless 的資料 API。
解決方法
重要:確保變更下列範例中提供的每項連接埠範圍、來源和目的地設定,以符合您自己的網路組態。傳輸控制協定 (TCP) 是每種類型的網路組態都需要的協定。
同一個 VPC 中的 Lambda 函數和 RDS 執行個體
將 Lambda 函數連線到相同 VPC 中的 RDS 執行個體時,請使用下列網路組態。
注意: 依預設,VPC 中的所有子網路都包含本機路由。目的地是 VPC 的無類別域間路由 (CIDR),目標是本機。如需詳細資訊,請參閱路由表概念。
1. 對於安全群組,請使用下列其中一個網路設定:
對於連接至相同安全群組的執行個體,請將安全群組設為傳入規則的來源。將安全群組設為傳出規則的目的地。
例如,如果 Lambda 函數和 RDS 執行個體都在安全群組 sg-abcd1234 中,則每個執行個體都具有下列傳入和傳出規則。
連接至相同安全群組的執行個體的傳入規則範例
| | | |
---|
類型 | 協定 | 連接埠範圍 | 來源 |
自訂 TCP | TCP | 3306 | sg-abcd1234 |
連接至相同安全群組的執行個體的傳出規則範例
| | | |
---|
類型 | 協定 | 連接埠範圍 | 目的地 |
自訂 TCP | TCP | 3306 | sg-abcd1234 |
-或-
對於不同安全群組中的執行個體,確保兩個安全群組都允許彼此存取。
例如,如果 Lambda 函數位於安全群組 sg-1234 中,而 RDS 執行個體位於 sg-abcd 中,則每個群組都有下列規則:
Lambda 函數與您要連線的 RDS 執行個體位於不同安全群組中的傳出規則範例
| | | |
---|
類型 | 協定 | 連接埠範圍 | 目的地 |
自訂 TCP | TCP | 3306 | sg-abcd |
RDS 執行個體與您要連線的 Lambda 函數位於不同安全群組中的傳入規則範例
| | | |
---|
類型 | 協定 | 連接埠範圍 | 來源 |
自訂 TCP | TCP | 3306 | sg-1234 |
**重要:**確保規則允許透過資料庫連接埠進行 TCP 連線。
2. 對於網路存取控制清單 (NACL),確保傳入和傳出規則允許 Lambda 函數與 RDS 執行個體之間通訊。
**注意:**依預設,NACL 允許所有傳入和傳出流量。但是,您可以變更這些預設設定。
對於與 RDS 執行個體及 Lambda 函數關聯的每個子網路,請設定 NACL 以允許傳出 TCP 連線到另一個執行個體的子網路 CIDR。
注意: 下列範例使用以 CIDR 標記的四個範例子網路:
對於 Lambda 函數的子網路,為 172.31.1.0/24 和 172.31.0.0/28。
對於 RDS 執行個體的子網路,為 172.31.10.0/24 和 172.31.64.0/20。
Lambda 函數子網路 NACL 的傳出規則範例
| | | | |
---|
類型 | 協定 | 連接埠範圍 | 目的地 | 允許/拒絕 |
自訂 TCP | TCP | 3306 | 172.31.10.0/24 | 允許 |
自訂 TCP | TCP | 3306 | 172.31.64.0/20 | 允許 |
重要:將相同的傳出規則套用至 RDS 執行個體子網路的 NACL,但目的地設定為 Lambda 子網路的 CIDR。
確保每個子網路的 NACL 在其他執行個體子網路的 CIDR 範圍內的暫時性連接埠上都具有傳入規則。
Lambda 函數子網 NACL 的傳入規則範例
| | | | |
---|
類型 | 協定 | 連接埠範圍 | 來源 | 允許/拒絕 |
自訂 TCP | TCP | 1024-65535 | 172.31.10.0/24 | 允許 |
自訂 TCP | TCP | 1024-65535 | 172.31.64.0/20 | 允許 |
**重要:**將相同的傳入規則套用至 RDS 執行個體子網路的 NACL,但將來源設定為 Lambda 子網路的 CIDR。
不同 VPC 中的 Lambda 函數和 RDS 執行個體
首先,使用 VPC 對等來連接兩個 VPC。然後,使用下列網路組態,將一個 VPC 中的 Lambda 函數連接到另一個 VPC 中的 RDS 執行個體:
**重要:**請務必為 VPC 對等互連開啟網域名稱系統 (DNS)。
1. 對於路由表,確認 VPC 對等互連成功:
對於目的地,尋找對等 VPC 的 CIDR。
對於目標,尋找對等連線。
**注意:**下列範例包含兩個範例 VPC:
來源 VPC 的 CIDR (Lambda 函數): 10.0.0.0/16
對等 VPC 的 CIDR (RDS 執行個體): 172.31.0.0/16
對等互連:pcx-01234abcd
與 Lambda 函數關聯的來源 VPC 的路由表範例
| |
---|
目的地 | 目標 |
172.31.0.0/16 | pcx-01234abcd |
10.0.0.0/16 | 本機 |
具有 RDS 執行個體的對等 VPC 的路由表範例
| |
---|
目的地 | 目標 |
10.0.0.0/16 | pcx-01234abcd |
172.31.0.0/16 | 本機 |
如需詳細資訊,請參閱更新 VPC 對等互連的路由表。
2. 對於安全群組,請使用下列網路設定:
對於 Lambda 函數的安全群組,確保允許流量進出 RDS 執行個體 VPC 的 CIDR。
注意: 下列範例包括以 CIDR 標記的兩個範例子網路:
對於 RDS 執行個體,為 172.31.0.0/16
對於 Lambda 函數,為 10.0.0.0/16
與 RDS 執行個體位於不同 VPC 中的 Lambda 函數的傳出規則範例
| | | |
---|
類型 | 協定 | 連接埠範圍 | 目的地 |
自訂 TCP | TCP | 3306 | 172.31.0.0/16 |
對於 RDS 執行個體的安全群組,允許流量進出 Lambda 函數安全群組的 CIDR。
與 Lambda 函數位於不同 VPC 中的 RDS 執行個體的傳入規則範例
| | | |
---|
類型 | 協定 | 連接埠範圍 | 來源 |
自訂 TCP | TCP | 3306 | 10.0.0.0/16 |
3. 對於 NACL,請遵循同一個 VPC 中的 Lambda 函數和 RDS 執行個體步驟 3 中的前述程序。Lambda 函數子網路 CIDR 的原點位於不同的 VPC 中。
**注意:**作為 VPC 對等的替代方式,您可以使用 AWS PrivateLink 跨 VPC 存取 Amazon RDS。此解決方法適用於同一 AWS 區域中的 AWS 帳戶和 VPC。