Google cloud platform GCP云函数通过私有IP连接到云sql

Google cloud platform GCP云函数通过私有IP连接到云sql,google-cloud-platform,google-cloud-functions,google-cloud-sql,google-vpc,Google Cloud Platform,Google Cloud Functions,Google Cloud Sql,Google Vpc,我遵循这个示例来建立从Cloud函数到Postgres Cloud SQL的连接: 当我使用公共IP创建一个测试云SQL实例并触发云函数时,它连接到云SQL实例并返回一些内容。出于安全原因,我不能让公共IP保持开启状态,因此当我在云SQL实例上选择私有IP时,我得到: Error: function crashed. Details: could not connect to server: Connection refused Is the server running locally

我遵循这个示例来建立从Cloud函数到Postgres Cloud 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基础设施的过程?我需要无服务器VPC吗?

通过这样做,我成功地实现了云函数和云SQL私有实例之间的连接

如果你禁用公共IP,这似乎很重要,每当我禁用公共IP时,我总是得到ERR CONN拒绝,这似乎是你的情况,要让你的云SQL实例只使用私有IP,我认为你必须使用无服务器VPC

这就是我建议您尝试的:

确保您的所有基础设施都位于同一区域(云SQL、云功能、VPC连接器)

请采取以下步骤:

  • 将云SQL实例设置为仅专用连接。(云SQL实例>连接)

  • 确保您的私有CloudSQL实例位于所需的“关联网络”(VPC)上

  • 在云SQL实例所在的VPC网络上创建VPC连接器。(与MySql实例关联的一个)

  • 要创建连接器,请转到:VPC网络>VPC无服务器访问>创建连接器

    在VPC网络>[您的VPC]>VPC网络对等中,您可以检查连接是否正常 请更正您的云SQL实例

  • 使用所需语言的代码创建云函数。(您可以使用文档中的示例进行测试。)
  • 创建云功能时,请确保将其设置在同一区域,同时将创建的VPC连接器添加到云功能的“出口设置”选项中

    如果您试图通过GCP控制台创建VPC连接器,则只能从中选择一个区域。但如果使用云壳,则可以定义其他区域。您可以使用此命令在这些区域中尝试

    gcloud beta compute networks vpc-access connectors create [CONNECTOR_NAME] \ 
    --network [VPC_NETWORK] \ 
    --region [REGION] \ 
    --range [IP_RANGE]
    
    领域:

    美国中部1、美国东部1、欧洲西部1

    请让我知道这是否对你有效

    更新: 你好,阿洛博兹克

    尝试用Python实现云功能(确保前面的所有步骤都正常)

    请尝试以下代码:

    Cloud Function index.js(用您自己的凭据替换所有连接器数据)

    云功能需求.txt

    psycopg2==2.7.7
    PyMySQL==0.9.3
    mysql-connector-python
    

    通过这样做,我成功地实现了云函数和云SQL私有实例之间的连接

    如果你禁用公共IP,这似乎很重要,每当我禁用公共IP时,我总是得到ERR CONN拒绝,这似乎是你的情况,要让你的云SQL实例只使用私有IP,我认为你必须使用无服务器VPC

    这就是我建议您尝试的:

    确保您的所有基础设施都位于同一区域(云SQL、云功能、VPC连接器)

    请采取以下步骤:

  • 将云SQL实例设置为仅专用连接。(云SQL实例>连接)

  • 确保您的私有CloudSQL实例位于所需的“关联网络”(VPC)上

  • 在云SQL实例所在的VPC网络上创建VPC连接器。(与MySql实例关联的一个)

  • 要创建连接器,请转到:VPC网络>VPC无服务器访问>创建连接器

    在VPC网络>[您的VPC]>VPC网络对等中,您可以检查连接是否正常 请更正您的云SQL实例

  • 使用所需语言的代码创建云函数。(您可以使用文档中的示例进行测试。)
  • 创建云功能时,请确保将其设置在同一区域,同时将创建的VPC连接器添加到云功能的“出口设置”选项中

    如果您试图通过GCP控制台创建VPC连接器,则只能从中选择一个区域。但如果使用云壳,则可以定义其他区域。您可以使用此命令在这些区域中尝试

    gcloud beta compute networks vpc-access connectors create [CONNECTOR_NAME] \ 
    --network [VPC_NETWORK] \ 
    --region [REGION] \ 
    --range [IP_RANGE]
    
    领域:

    美国中部1、美国东部1、欧洲西部1

    请让我知道这是否对你有效

    更新: 你好,阿洛博兹克

    尝试用Python实现云功能(确保前面的所有步骤都正常)

    请尝试以下代码:

    Cloud Function index.js(用您自己的凭据替换所有连接器数据)

    云功能需求.txt

    psycopg2==2.7.7
    PyMySQL==0.9.3
    mysql-connector-python
    

    嗨,Stefan,我试着按照你建议的步骤去做,但是我仍然没有成功,我的连接被拒绝了。有太多的细节,也许我只是把单个设置搞错了。我说不出来。你好,阿洛博兹克,我已经更新了我的答案,请尝试一下并让我知道。嗨,斯蒂芬,我尝试按照你建议的步骤进行操作,但我仍然没有成功,我的连接被拒绝了。有太多的细节,也许我只是把单个设置搞错了。我不知道。你好,阿洛博兹克,我已经更新了我的答案,请尝试一下,让我知道。