对外部 API 的调用在 Google 云 运行 上被阻止

call to external API is getting blocked on Google Cloud Run

我 运行 用 Python 编写并部署在 Google 云上的后端 Run.For 它 activity 它调用其他几个 API 服务.对大多数服务的 post 请求工作正常,但对于其中一个服务,在我的 PC 上工作正常的相同代码在云 运行 环境中引发错误 运行ning。这是一项具有 HTTPS 地址或备用 HTTP 地址的服务,当我尝试从云 运行 调用时,这两个选项都被阻止。我使用以下代码行:

self.rx_xml = requests.post(url,self.tx_xml).text

结果(仅来自云端 运行):

HTTPSConnectionPool(host='secureapi.soprano.co.il', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x3eb0b155ebb0>: Failed to establish a new connection: [Errno 110] Connection timed out'))

或替代地址:

HTTPConnectionPool(host='api.soprano.co.il', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x3e10f4f1dbb0>: Failed to establish a new connection: [Errno 110] Connection timed out'))

因为这是一家本地公司,所以我首先想到的是他们的防火墙阻止了来自国外(以色列)的任何 IP。在与他们的客户服务的对话中,他们一再坚持他们对全世界开放并且没有 IP 地址被阻止,他们建议我检查 Cloud 运行 环境中是否有任何设置阻止对他们的访问。这对我来说听起来很奇怪,因为可以访问其他地址,但由于他们坚持我很乐意确保:

  1. Cloud 运行 是否会阻止对某些出站连接的访问​​?有没有办法查看此块的设置并更改它们?
  2. 有没有办法清楚地检查连接被阻止的地方?

正如 guillaume blaquiere 所说,Cloud 运行 不应阻止任何传出请求。如果出现问题,可能是因为请求发送到的目的地阻止了 IP 地址,例如因为它来自国外。继续坚持客服解决了问题。 谢谢!