谷歌云 - 谷歌云功能的出口 IP/NAT/代理

Leo*_*ley 5 google-cloud-platform google-cloud-functions

我正在为我的公司构建一个数据摄取层,在那里我有很多不同的集成点(rest apis)。

某些 API 要求您从列入白名单的 IP 进行连接。

我真的很想使用谷歌云函数/发布订阅来构建摄取逻辑,因为它具有可扩展性和降低的成本。

但问题是谷歌云函数总是从随机 ip 连接,我们对此无能为力,正如在这个问题中所回答的:可能获得谷歌云函数的静态 IP 地址?

所以我的问题是:有没有办法代理/nat 云功能,使它们来自一组静态 ips?

chr*_*riz 5

现在可以通过为 Cloud Functions 配置网络设置,尤其是Egress Settings 来实现这一点

取自官方文档

通过控制台:

  1. 在 Cloud Console 中打开函数概览页面
  2. 单击创建函数。或者,单击现有函数以转到其详细信息页面,然后单击编辑
  3. 通过单击环境变量、网络、超时等展开高级设置。
  4. 在网络部分的出口设置下,选择无服务器 VPC 访问连接器。
  5. 根据您希望如何通过连接器路由出站流量,选择适当的出口设置。

通过 gcloud:

gcloud functions deploy FUNCTION_NAME \
--vpc-connector CONNECTOR_NAME \
--egress-settings EGRESS_SETTINGS \
FLAGS...
Run Code Online (Sandbox Code Playgroud)

在哪里:

FUNCTION_NAME函数的名称。 CONNECTOR_NAME是要使用的无服务器 VPC 访问连接的名称。有关更多信息,请参阅 gcloud 文档。

注意:如果要更新已有连接器的现有函数的出口设置,则可以省略 --vpc-connector 标志。

EGRESS_SETTINGS是出口设置支持的值之一:请参阅gcloud 文档

FLAGS ... 指的是您传递给 deploy 命令的其他标志。

根据您希望如何通过连接器路由出站流量,选择适当的出口设置。

在此之后,您只需要

  1. 设置 Cloud NAT
  2. 为 NAT 指定一个静态 IP 地址

创建云 NAT:

gcloud compute routers nats create nat-config \
    --router=nat-router \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging
Run Code Online (Sandbox Code Playgroud)

指定 IP 地址:

gcloud compute routers nats create nat-config \
    --router=nat-router \
    --nat-external-ip-pool=ip-address1,ip-address2
Run Code Online (Sandbox Code Playgroud)