可以获得 Google Cloud Functions 的静态 IP 地址吗?

Posted

技术标签:

【中文标题】可以获得 Google Cloud Functions 的静态 IP 地址吗?【英文标题】:Possible to get static IP address for Google Cloud Functions? 【发布时间】:2016-12-13 04:56:46 【问题描述】:

我想开发一个 Google Cloud Function 来订阅 Google Cloud Storage 存储桶中的文件更改并将文件上传到第三方 FTP 站点。此 FTP 站点需要客户端的允许列表 IP 地址。

因此,是否可以为 Google Cloud Functions 容器获取静态 IP 地址?

【问题讨论】:

【参考方案1】:

更新:GCP 现已提供此功能 https://cloud.google.com/functions/docs/networking/network-settings#associate-static-ip


首先,这不是一个不合理的要求,不要被激怒。 AWS Lambdas 已经支持这个功能并且已经有一段时间了。如果您对此功能感兴趣,请对此功能请求加注星标:https://issuetracker.google.com/issues/112629904

其次,我们找到了一个解决方法,我也发布了该问题,也许这也对你有用:

设置 VPC 连接器 在 VPC 上创建 Cloud NAT 创建一个没有公共 IP 的 Proxy 主机,因此出口流量通过 Cloud NAT 路由 配置一个使用 VPC 连接器的云函数,并配置为对所有出站流量使用代理服务器

对这种方法的警告:

我们希望将代理放在托管实例组中并位于 GCP 内部 LB 之后,以便它可以动态扩展,但 GCP 支持人员已确认这是不可能的,因为 GCP ILB 基本上允许列出子网,而云函数 CIDR 在该子网之外

我希望这会有所帮助。

更新:就在前几天,他们宣布了此功能的抢先体验测试版!

“这里是 Cloud Functions PM。如果您想测试它,我们实际上提供了此功能的早期访问预览。

请填写此表格,以便我们添加您..."

表格可以在上面链接的问题中找到。

【讨论】:

该表格不再可用:( 您能否提供有关如何完成上述 4 个步骤的详细信息? 查看cloud.google.com/functions/docs/networking/network-settings 的底部 - 将函数出口与静态 IP 地址相关联。希望这会有所帮助。让我们知道您的进展情况。【参考方案2】:

请参阅下面的答案 - 花费了数年时间,但现在已得到支持。

https://cloud.google.com/functions/docs/networking/network-settings#associate-static-ip

【讨论】:

感谢唐的指点。我期待着有一天他们将允许我们在 GAE 标准前面放置防火墙;) 有任何建议或解决方法或可能使用任何代理服务吗? 您在 Google Cloud 中的何处执行此操作?或者你可以在本地运行它们? nslookup -q=TXT _cloud-netblocks.googleusercontent.com 8.8.8.8 这不仅是可能的,谷歌现在还为这个确切的功能提供了一个开放的早期访问预览。可以在下面我的答案中链接的问题中找到注册链接。 :) 永不言败 :)【参考方案3】:

对于那些想要将云功能关联到静态 IP 地址以便将 API 的 IP 列入白名单或类似内容的用户,我建议查看此分步指南,该指南对我有很大帮助: https://dev.to/alvardev/gcp-cloud-functions-with-a-static-ip-3fe9.

我还想说明此解决方案适用于 Google Cloud Functions 和 Firebase Functions(因为它基于 GCP)。

【讨论】:

【参考方案4】:

参考以下链接: https://cloud.google.com/functions/docs/networking/network-settings#associate-static-ip 根据谷歌,该功能已发布查看整个线程 https://issuetracker.google.com/issues/112629904

【讨论】:

【参考方案5】:

此功能现在是 Google Cloud Functions (see here) 的原生部分

根据the GCF docs,这是一个两步过程:

将函数出口与静态 IP 地址相关联 在某些情况下, 您可能希望将源自您的功能的流量关联起来 使用静态 IP 地址。例如,如果您是 调用仅允许来自白名单的请求的外部服务 IP 地址。

通过您的 VPC 网络路由您的函数的出口。见 上一部分,通过您的 VPC 网络路由功能出口。

设置 Cloud NAT 并指定静态 IP 地址。按照指南进行操作 为 NAT 指定子网范围和为 NAT 指定 IP 地址以设置 为与您的函数的无服务器关联的子网设置 Cloud NAT VPC 访问连接器。

【讨论】:

【参考方案6】:

无法为 Google Cloud Functions 分配静态 IP,因为它与“无服务器”架构的性质(即按需分配和取消分配服务器)几乎是正交的。

但是,您可以利用 HTTP 代理来实现类似的效果。设置一个 Google Compute Engine 实例,为其分配一个静态 IP 并安装一个代理库,例如 https://www.npmjs.com/package/http-proxy。然后,您可以通过此代理路由所有外部 API 调用等。

但是,这可能会降低规模和灵活性,但这可能是一种解决方法。

【讨论】:

以上是关于可以获得 Google Cloud Functions 的静态 IP 地址吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得Google Cloud的所有docker-machine映像列表

Google Secret Manager:不要通过 Spring Boot 从中获得价值

如何使任何 IP 地址都可以访问 Google Cloud SQL 实例?

云功能无法移动存档桶中的文件

Google Cloud 线上课堂 | 挖掘数据潜能,推动业务创新

将 Google Cloud Platform 项目从一个帐户移动到另一个帐户