【发布时间】:2022-01-23 02:30:32
【问题描述】:
背景:
在生产中,我的一些 Firebase 云函数连接到需要列入白名单的 IP 地址的外部 API。
我配置了利用此资源通过无服务器 VPC 路由流量并通过具有白名单静态 IP 的 Cloud NAT 退出的云功能。
我通常在部署函数时在运行时配置中这样指定:
// imports
import { RuntimeOptions } from "firebase-functions";
const runtimeOpts: RuntimeOptions = {
vpcConnector: "functions-connector",
vpcConnectorEgressSettings: "ALL_TRAFFIC",
}
// Exports
module.exports = {
some_http_function: functions.runWith(runtimeOpts).region("us-central1").https.onRequest(someHTTPFunction),
}
问题:在本地测试时如何通过我的 Cloud NAT 路由本地 Firebase 模拟器流量?
【问题讨论】:
-
Cloud NAT 对您的 VPC 来说是私有的。
-
我明白了。我想在不部署的情况下进行本地测试。这可能吗?
-
我不使用 Firebase 模拟器,所以不知道您是否可以为其流量指定路由。您对路由、VPN 和转发流量的了解程度如何?当我需要我的流量通过 VPC(带有 NAT 网关的 VPC)发出时,我要么设置 VPN,要么使用 SSH 端口转发。我认为本地测试最简单的方法是将您的家庭公共 IP 地址列入白名单。但是,家庭互联网经常更改地址,因此您将每隔几天更新一次白名单。
-
好吧,我真的想问 GCP 是否有内置的方式来通过我的 NAT 网关进行本地测试。我确信我可以想出一个使用 VPN 等的解决方法,但如果有官方的方法可以解决这个问题,我会很高兴知道。
-
您无法将软件配置为使用独立于 VPN、端口转发等的 NAT 网关。该软件没有路由可用于进入您的 VPC。即使我不使用 Firebase 模拟器,该细节也会违反安全规定,会立即被利用。
标签: node.js firebase google-cloud-platform google-cloud-functions