我正在创建一个云函数来从源检索数据并加载到我的 gcp mysql 实例中。它配置在同一个 VPC 网络上,我为 Cloud SQL 实例和我的云功能提供了适当的 IAM 角色。
需求.txt:
certifi==2022.12.7
charset-normalizer==3.0.1
idna==3.4
mysql-connector-python==8.0.32
protobuf==3.20.3
requests==2.28.2
urllib3==1.26.14
cloud-sql-python-connector==1.2.0
PyMySQL==1.0.2
我的函数的连接片段:
def _get_connection(db= 'bot_config')-> sqlalchemy.engine.base.Engine:
ip_type = IPTypes.PRIVATE
connector = Connector(ip_type)
conn: pymysql.connections.Connection = connector.connect(
'x:y:z',
"pymysql",
user='user',#not actually...
password='password', #not actually...
db=db,
)
return conn
和我的进口:
import requests
import os
from google.cloud.sql.connector import Connector, IPTypes
import pymysql
import sqlalchemy
我也得到了这个错误以及标题中的错误:
OSError: [Errno 113] No route to host
我最喜欢使用 mysql.connector,但这是我在文档中看到的。如果主要嫌疑人是 VPC 或 IAM,我可以分享。
我已经正确配置了 VPC 和 IAM,并按照文档中的建议使用了写入连接器对象。不知道为什么找不到我的包裹,尤其是谷歌的包裹。