连接静态IP云函数与云SQL。

11 浏览
0 Comments

连接静态IP云函数与云SQL。

有几个好的解决方案适用于这两种情况,但不能同时使用。

1. 我需要通过白名单静态IP调用外部API。

参见:将Cloud Function出口与静态IP地址关联

a) 从Cloud Function调用外部API

b) 将该Cloud Function的所有出口流量通过vpcnetwork-1上的VPC连接器路由(IP地址范围=10.8.10.0/28)

c) 使用Cloud NAT将vpcnetwork-1上的所有流量路由至[STATIC IP](外部API白名单)

2. 接下来,我需要将API数据发送到Cloud SQL实例(这里是MySQL)。

参见:从Cloud Functions连接到Cloud SQL

a) 创建一个UNIX socketpath连接至[Cloud SQL实例]

当我使用VPC连接器(如上所示)时,出现以下情况:

1) 成功!我通过白名单IP地址接收到了API数据

2) [Cloud SQL实例]拒绝连接 - 因为我使用的是静态外部IP地址?socketpath使用外部IP还是在我的Google Cloud项目内部连接?

如果我从Cloud Function中移除VPC连接器,则出现以下情况:

1) 连接被拒绝 - 此IP未加入白名单(因为我不再使用静态IP)

2) 成功!我现在能够连接到[Cloud SQL实例](使用UNIX socketpath、用户名和密码)

如何使这两个在同一个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连接器和Cloud SQL实例不在同一个VPC上吗?我认为Cloud SQL没有与VPC关联,是吗?

0
0 Comments

问题的原因是Cloud Functions无法直接连接Cloud SQL的静态IP地址。解决方法是使用VPC Connector来连接Cloud Functions和Cloud SQL,并设置私有IP地址,并允许通过Cloud NAT路由的VPC Connector的IP地址。

解决方法的具体步骤如下:

1. 在Cloud SQL实例概览仪表板上找到[Public IP Address]和[Instance Connection Name]。

2. 如果使用标准的Cloud Functions连接,使用以下配置:

socketpath:[Instance Connection Name]

user: uid

password: pwd

database: 'mysql_db'

3. 如果使用VPC Connector,使用以下配置:

host:[Private (or Public) IP Address]

user: uid

password: pwd

database: 'mysql_db'

4. 如果使用私有VPC连接,在Cloud Functions中设置以下配置:

[Cloud Function] -> [VPC Connector] -> host:[Private IP Address] => SUCCESS (在GCP->SQL->Connections中设置私有IP地址)

5. 如果使用公共VPC连接,在Cloud Functions中设置以下配置:

[Cloud Function] -> [VPC Connector] -> host:[Public IP Address] => SUCCESS (仅在允许/白名单VPC Connector通过Cloud NAT的IP地址之后)

6. 通过Google Cloud CLI按照私有IP设置的说明进行设置。

以上是解决将静态IP的Cloud Functions连接到Cloud SQL的问题的方法。通过使用VPC Connector和设置正确的IP地址,可以实现成功的连接。

0