我按照这个示例从Cloud Function连接到Postgres Cloud SQL:https://cloud.google.com/functions/docs/sql.
当我使用公共 IP 创建测试云 SQL 实例并触发云函数时,它会连接到云 SQL 实例并返回一些内容。出于安全原因,我不能将公共 IP 保留为打开状态,因此当我在云 SQL 实例上选择专用 IP 时,我得到:
Error: function crashed. Details:
could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/cloud-sql-test-250613:us-central1:myinstance-2/.s.PGSQL.5432"?
我无法从文档中了解云函数和云sql实例之间的合同是什么。如果我们使用unix域套接字,我是否应该关心IP?它是公共的还是私人的重要吗?如果真的很重要,我是否必须经历建立私有IP基础设施的所有过程?我需要无服务器专有网络吗?
通过这样做,我设法实现了云函数和云 SQL 私有实例之间的连接。
如果你禁用公共IP似乎很重要,每当我禁用公共IP时,我总是得到ERR CONN拒绝,这似乎是你的情况,只有私有IP才能拥有云SQL实例,我认为你必须使用无服务器VPC。
这是我建议您尝试的:
确保您的所有基础设施都位于同一区域(云 SQL、云功能、VPC 连接器)
请采取以下步骤:
>
将云SQL实例设置为专用连接。(云SQL实例
确保您的私有 CloudSQL 实例位于所需的“关联网络”(VPC) 上。
在云 SQL 实例所在的 VPC 网络上创建 VPC 连接器。(与 MySql 实例关联的那个)
要创建连接器,请访问:VPC网络
在VPC网络中
当您创建云功能时,请确保将其设置在同一区域,同时将您创建的VPC连接器添加到云功能的“出口设置”选项中。
如果您尝试通过 GCP 控制台创建 VPC 连接器,则只能从 1 个区域中进行选择。但是,如果使用云外壳,则可以定义其他区域。您可以使用此命令和在这些区域尝试。
gcloud beta compute networks vpc-access connectors create [CONNECTOR_NAME] \
--network [VPC_NETWORK] \
--region [REGION] \
--range [IP_RANGE]
区域:
美国中部 1、美国东部 1、欧洲西部 1
请让我知道这对你是否有用。
又见面了,阿洛博兹克,
尝试在Python中创建云函数(确保前面的所有步骤都正常)。
尝试此代码:
云函数索引.js(将所有连接器数据替换为自己的凭据)
import mysql.connector
from mysql.connector import Error
def mysql_demo(request):
import mysql.connector
from mysql.connector import Error
try:
connection = mysql.connector.connect(host='CloudSQL Instance Private IP', database='Database Name, user='UserName', password='Password')
if connection.is_connected():
db_Info = connection.get_server_info()
print("Connected to MySQL database... MySQL Server version on ",db_Info)
cursor = connection.cursor()
cursor.execute("select database();")
record = cursor.fetchone()
print ("Your connected to - ", record)
except Error as e :
print ("Error while connecting to MySQL", e)
finally:
#closing database connection.
if(connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
# [END functions_sql_mysql]
云功能requirements.txt
psycopg2==2.7.7
PyMySQL==0.9.3
mysql-connector-python
GCP建议通过私有IP连接使用云SQL代理https://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine#before_you_begin.如果应用程序不想利用云SQL代理,而是选择私有IP连接,则没有建议、文档或流程来确保私有IP连接的安全或建立必要的身份验证。 除了专用 IP 连接之外,应用程序还应执行哪些操作,以使其等效于云
我在通过云 SQL 身份验证代理将 GCP 计算引擎虚拟机连接到配置了专用 IP(非公共)的云 SQL 实例时遇到问题。 执行后 我看到以下输出: 我还没有看到上面关于这个主题的任何教程的最后陈述。 我< code>CTRL-C退出上述操作,然后显示: 然后,我运行以下命令以连接到我的云 SQL 实例: 返回: 输入密码后返回: 以下是一些附加信息: 我的虚拟机 (Ubuntu) 与我的云 SQL
介绍如何使用云联壹云提供的私有云功能。 云联壹云 提供内置私有云的功能,本章节用于帮助用户快速创建 云联壹云 平台的虚拟机。 概念介绍 区域:区域为物理概念,一般为数据中心的地理区域,一般为城市,如北京等。 云联壹云 私有云只有一个区域,只支持改名。 可用区:可用区是区域下电力和网络相互独立的物理区域,一般为机房名称,例如望京,酒仙桥等。 VPC:专有网络VPC(Virtual Private C
但是添加应该在GKE集群中为服务提供一个sidecar,并允许它连接到SQL?
在尝试连接到具有私有IP的Google Cloud平台(从我家庭网络中的机器)中的Postgreql实例时,我一直在苦苦挣扎。 我已经尝试使用https://cloud.google.com/sql/docs/postgres/connect-admin-proxy(代理云sql),但我需要我的实例有一个公共IP,根据我的要求,这是不可能的。此外,我读到我可以使用https://cloud.goo
我有一个谷歌云功能订阅了一个主题。当需要向用户发送电子邮件时,我们的Go API会向主题发布一条消息。GCF创建电子邮件对象并将其发送到SendGrid。问题是,90%的情况下,云函数会被调用两次。 订阅的确认截止日期是600秒,文件中明确说明GCF内部确认。 我知道PubSub保证后台功能至少一次交付和GCF至少一次执行。但是,这种情况在大多数情况下都会发生,我很确定这也是不对的。 有人有什么想