我正在尝试设置无服务器 VPC 访问
无服务器 VPC 访问使您能够从 Cloud Functions 直接连接到 Compute Engine 虚拟机实例、Memorystore 实例、Cloud SQL 实例,
听起来很棒。但文档对于初学者来说并不是超级友好。第 2 步是创建一个连接器,对此我有几个问题:
在网络字段中,选择要连接的 VPC 网络。
我的下拉列表仅包含“默认”。这是正常的吗? IO 应该在这里看到什么?
在 IP 范围字段中,输入未使用的 CIDR /28 IP 范围。此范围内的地址用作通过连接器发送的流量的源地址。此 IP 范围不得与 VPC 网络中任何现有的 IP 地址预留重叠。
我不知道在这里做什么。我尝试使用链接文档中的信息,首先)输入我选择的区域的 IP,然后)输入该区域之外的 IP。两者都会导致创建的连接器出现错误。 “
Connector is in a bad state, manual deletion is recommended
”
如果创建失败,文档将继续执行几个故障排除步骤:
指定不与 VPC 网络中任何现有 IP 地址预留重叠的 IP 范围。
我不知道这意味着什么。也许就像,如果我有其他连接器,我应该确保新连接器的 IP 范围不会与这些连接器重叠。这只是一个猜测,但无论如何我没有。
授予您的项目使用ID为serverless-vpc-access-images的项目中的Compute Engine虚拟机映像的权限。有关如何相应更新组织策略的信息,请参阅设置图像访问限制。
这让我看到另一个关于更新我的组织的“图像政策”的文档。这个问题让我无法理解,我什至认为我不应该在这里。
这一切都始于想要从 Firebase 连接到 SQL Server 实例。创建 VPC 连接器似乎是一个很好的步骤,但我在每个障碍上都遇到了困难。云居民可以帮我解决其中的一些困惑吗?
1。创建无服务器 VPC 访问
我认为最好的参考是按照此doc中的步骤操作。在步骤7中,它显示以下内容:
在 IP 范围字段中,输入未保留的 CIDR /28 IP 范围。您可以使用的 IP 是例如 10.8.0.0/28 甚至 10.64.0.0/28,条件是它未用于任何其他网络。您可以前往
VPC 网络 > VPC 网络查看正在使用的 IP。在网络字段中,您将有“默认”选项,所以没关系。
这可能需要几分钟,因此在此期间您可以创建 SQL Server/MySQL/PostgreSQL 实例。
2。创建 CloudSQL 实例
创建您所需的实例(MySQL/PostgreSQL/SQL Server)。在您的情况下,它将是一个 SQL Server 实例。另请检查这些步骤以在创建时为您的实例配置私有IP,或者如果您已经创建了实例,则可以检查this。记下私有 IP,稍后您将用到它。
3.创建云函数
在创建云函数之前,您需要授予CF服务帐号使用VPC的权限。请按照以下步骤。
然后按照以下步骤配置您的函数的连接器以使用VPC。在第 5 步中,内容如下:
在 VPC 连接器字段中,按以下格式输入连接器的完全限定名称:无需使用此格式添加您的 VPC。已有一个列表可供您选择 VPC。最后部署你的函数。
projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
我写了一个小函数来测试连接。我更喜欢使用 Python,但它比 NodeJS 需要更多的系统依赖。
index.js:
var express = require('express');
var app = express();
var sql = require("mssql");
exports.helloWorld = (req, res) => {
var config = {
user: 'sqlserver',
password: 'password',
server: 'Your.SQL.Priavte.IP',
database: 'dbname'
};
// connect to your database
sql.connect(config, function (err) {
if (err) console.log(err);
// create Request object
var request = new sql.Request();
// query to the database and get the records
request.query('select * from a_table', function (err, recordset) {
if (err) console.log(err)
// send records as a response
res.send(recordset);
});
});
};
package.json:
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"express": "4.17.1",
"mssql": "6.0.1"
}
}
仅此而已! :D
值得一提的是,此过程更多的是关于将 Cloud Functions 连接到 SQL Server,因为已经有一种更简单的方法将 CF 连接到 PostgreSQL 和 MySQL。
https://console.cloud.google.com/iam-admin/quotas。
不在免费套餐中时,您可以请求增加配额。