我正在使用GCP管理的Cloud Run和MongoDB Atlas开发应用程序。如果我允许来自任何地方的Atlas IP白名单连接,则Cloud Run可以完美地与MongoDB Atlas配合使用。但是,我只想限制必要IP的连接,但是我找不到Cloud Run的出站IP。有什么办法知道出站IP吗?
答案 0 :(得分:2)
Cloud Run(像所有可扩展的无服务器产品一样)不会为您提供专用IP地址,这些IP地址已知是传出流量的来源。另请参阅:Possible to get static IP address for Google Cloud Functions?
答案 1 :(得分:1)
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
使用PROXY
环境变量包含代理的IP或URL(请参见set an environment variable的此处)
对于此代理,您可以:
我个人使用了第二种解决方案。该服务为我提供了一个包含用户名和密码的URL,然后使用上面的代码将其用作代理。
答案 2 :(得分:1)
直到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
上找到包含工作示例的分步说明。答案 3 :(得分:0)
Cloud Run团队现已在 beta 中发布了此功能:
https://cloud.google.com/run/docs/configuring/static-outbound-ip