Google App 引擎应用程序的 IP 地址

IP Address of Google App engine application

我已经在 Google App Engine 中部署了一个应用程序。

我能够获取部署此应用程序的计算机的 IP 地址,但我的问题是此应用程序是否始终在同一 IP 上运行,或者 运行 是否有可能在不同 IP 上运行。

因为google应用引擎是一个云解决方案,它在多个地方同时运行多个实例。

谢谢

GAE 使用不同的 IP。如果您想了解更多信息,我找到了这个 link:

https://cloud.google.com/appengine/kb/#static-ip

Google does have documentation on how to do this,但是为了获得 up-to-date IP 地址范围,您需要 运行 执行相当多的命令。我没有每次都这样做,而是编写了一个小的 python 脚本来执行这些操作并提取 up-to-date IP 地址范围。

到运行运行下面的代码,只需要调用print(list(get_all_ip_cidrs())):

import re
import logging
import subprocess

def get_netblock_ips_cidr(netblock_id):
    '''Run the nslookup comamnd on the given netlock, and yield all of the ip
     address cidr addresses'''
    netblock = "_cloud-netblocks%d.googleusercontent.com"%netblock_id
    logging.info("Running Netblock %s", netblock)
    CMD = 'nslookup -q=TXT %s 8.8.8.8'%netblock
    p = subprocess.Popen(CMD, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE)
    out, err = p.communicate()
    re_ips = re.compile(r"ip4:(?P<ipcidr>[\.\d]+/\d+)")
    num = 0
    for m in re_ips.finditer(out):
        yield m.group('ipcidr')
        num += 1
    logging.info("Netblock %s: Found %d IPs", netblock, num)

def get_all_ip_cidrs(max_net_block_ranges = 10):
    '''Run it across '''
    netblock_id = 0
    for netblock_id in range(1, max_net_block_ranges):
        for cidr in get_netblock_ips_cidr(netblock_id):
            yield cidr
    logging.info("Finished after %d netblocks"%netblock_id)

(2021 年 6 月):previous/existing 答案不再反映当今的现行做法(事实上,该文档页面已被删除)。作为云服务,IP 块是短暂的和轮换的。

类似于 @speedplane is the one on this page 发布的脚本,因此您可以查看来自 App Engine 的流量(出站 IP 地址)的可能地址块。但是,如果您的目的是通过静态 IP 地址使用 App Engine,则根据是入站还是出站,您有两种不同的选择。

入站静态 IP 用户的当前建议(截至 2020 年)是创建一个负载均衡器,该负载均衡器具有重定向到您的 App Engine(和其他)应用程序的静态 IP。有关详细信息,请参阅这些资源:

  1. load balancer and CDN announcement(2020 年 7 月)
  2. Cloud Load Balancing product documentation

对于出站静态 IP 地址,您将创建一个 VPC 网络,将静态 IP 与其相关联,然后通过 VPC 将所有 App Engine 流量路由到 Internet通过 Cloud NAT 网关和您指定的静态 IP 地址。有关详细信息,请参阅这些资源:

    App Engine 文档中的
  1. Outbound IP addresses page
  2. Serverless VPC access page
  3. Cloud NAT product pages

(2022 年 1 月更新):我重构了上面的脚本(以获取当前旋转的 IP 块)以稍微清理一下并使其成为 Python 2-3 兼容,并让 Google 网络工具团队将其发布在 open source repo 中,用于任何社区贡献的更新。我正在努力将这个新版本集成到 Google 云文档的各个页面中,敬请期待。