GCP 托管的 Cloud Run 的出站 IP 范围是多少?

dai*_*igo 13 google-cloud-run

我正在使用 GCP 托管的 Cloud Run 和 MongoDB Atlas 开发应用程序。如果我允许从任何地方连接 Atlas 的 IP 白名单,Cloud Run 与 MongoDB Atlas 完美配合。但是,我只想限制必要 IP 的连接,但我在云中找不到 Cloud Run 的出站 IP。有什么办法可以知道出站IP吗?

Ahm*_*gle 10

更新(2020 年 10 月): Cloud Run 现已推出VPC 出口功能,可让您为通过 Cloud NAT 的出站请求配置静态 IP。您可以按照文档中的此分步指南配置静态 IP 以将其列入 MongoDB Atlas 的白名单。


在 Cloud Run 开始支持 Cloud NAT 或无服务器 VPC 访问之前,不幸的是,这不受支持。

正如@Steren 所提到的,您可以通过运行ssh客户端来创建 SOCKS 代理,该客户端通过具有静态外部 IP 地址的 GCE VM 实例路由流量。

我在这里写了博客:https : //ahmet.im/blog/cloud-run-static-ip/,您可以在以下位置找到带有工作示例的分步说明:https : //github.com/ ahmetb/cloud-run-static-outbound-ip

  • 我很感激从你那里发现的一切。Cloud Run 支持 Cloud Nat 有什么新消息吗? (2认同)

Dou*_*son 6

Cloud Run(与所有可扩展的无服务器产品一样)不会为您提供已知是传出流量来源的专用 IP 地址。另请参阅:是否可以获得 Google Cloud Functions 的静态 IP 地址?


Ste*_*ren 5

Cloud Run 服务不会获取静态 IP。

解决方案是通过具有静态 IP 的代理发送出站请求。

例如在 Python 中:

import requests
import sys
from flask import Flask
import os

app = Flask(__name__)

@app.route("/")
def hello():

    proxy = os.environ.get('PROXY')
    proxyDict = { 
                "http": proxy,
                "https": proxy
                }
    r = requests.get('http://ifconfig.me/ip', proxies=proxyDict)
    return 'You connected from IP address: ' + r.text
Run Code Online (Sandbox Code Playgroud)

使用PROXY包含代理的 IP 或 URL 的环境变量(请参阅此处设置环境变量

对于此代理,您可以:

  • 自己创建它,例如使用具有静态公共IP地址且运行squid的Compute Engine虚拟机,这可能适合Compute Engine免费套餐。
  • 使用提供静态 IP 代理的服务,例如https://www.quotaguard.com/static-ip/,起价为 19 美元/月

我个人使用了第二种解决方案。该服务为我提供了一个包含用户名和密码的 URL,然后我使用上面的代码将其用作代理。