簡體   English   中英

將靜態 IP 雲函數連接到 Cloud SQL

[英]Connecting Static IP Cloud Functions to Cloud SQL

這兩種情況都有幾個很好的答案 - 但不能結合起來。

1. 我需要通過列入白名單的靜態 IP 調用外部 API。
請參閱:將Cloud Function 出口與靜態 IP 地址相關聯
a)從 Cloud Function 調用外部 API
b)通過 vpcnetwork-1(IP 地址范圍 = 10.8.10.0/28)上的 VPC 連接器路由從此雲功能的所有出口
c)使用 Cloud NAT 通過 [STATIC IP](由外部 API 列入白名單)路由 vpcnetwork-1 上的所有流量

2. 接下來,我需要獲取該 API 數據並將其發送到 Cloud SQL 實例(在本例中為 MySQL)。
請參閱:從 Cloud Functions 連接到 Cloud SQL
a)創建到 [Cloud SQL 實例] 的 UNIX socketpath 連接

當我使用 VPC 連接器運行時(如上所示),我得到:
1)成功! 我已使用列入白名單的 IP 地址收到 API 數據
2) [Cloud SQL 實例] 拒絕連接 - 因為我使用的是靜態外部 IP? socketpath 是使用外部的,還是在我的 Google Cloud 項目中連接?

如果我從 Cloud Function 中刪除 VPC 連接器,則會得到:
1) CONNECTION REFUSED - 此 IP 未列入白名單(因為我不再使用靜態 IP)
2)成功! 我現在可以連接到 [Cloud SQL 實例](使用 UNIX 套接字路徑、用戶 ID、密碼)

我怎樣才能讓這兩個功能在同一個 Cloud Function 中工作?

我看到我可以“僅通過 VPC 連接器將請求路由到私有 IP”,但我真的想要相反的。 我只想將外部請求路由到 VPC 連接器,以使用我的靜態 IP,然后在我的 GCP 中保留我的私有路由以進行連接。

添加:我正在使用Javascript mysql連接到 Cloud SQL。

var pool = mysql.createPool({ socketPath: '/cloudsql/[instance_connection_name]',
                              user: uid,
                              password: pwd,
                              database: 'mysql_db' });
var result = pool.query(sql, {}, (err,result)=> {});

這在不使用 VPC 連接器的情況下可以正常工作。 當我使用帶有靜態外部 IP 地址的 VPC 連接器時,此連接被拒絕。 是不是因為 VPC Connector 和 Cloud SQL 實例不在同一個 VPC 上? 我不認為 Cloud SQL 與 VPC 相關聯,是嗎?

Cloud SQL 實例概覽儀表板列出了 [公共 IP 地址] 和 [實例連接名稱]

對於標准的 Cloud Functions 連接,我使用:

socketpath:[Instance Connection Name]
user: uid
password: pwd
database: 'mysql_db'

使用 VPC 連接器時,我使用

host:[Private (or Public) IP Address]
user: uid
password: pwd
database: 'mysql_db'

概括:

[Cloud Function] -> socketpath:[Instance Connection Name] => **SUCCESS**
[Cloud Function] -> host:[Public IP Address] => **FAIL** (Timeout - IP Not Allowed)

Private VPC Connections:
[Cloud Function] -> [VPC Connector] -> socketpath:[Instance Connection Name] => **FAIL** (Connection Refused)
[Cloud Function] -> [VPC Connector] -> host:[Private IP Address] => **SUCCESS** (Set up Private IP in GCP->SQL->Connections)

Public VPC Connection:
[Cloud Function] -> [VPC Connector] -> host:[Public IP Address] => **SUCCESS** (Only after allowing/whitelisting IP of the VPC Connector routed through Cloud NAT)

私有 IP 設置的 Google Cloud CLI 說明:
使用 TCP 和 UNIX 域套接字 2020 從 GOOGLE 雲功能連接到雲 SQL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM