代码之家  ›  专栏  ›  技术社区  ›  Rick.Wang

如何使用Python检索AWS Lambda公共IP地址?

  •  8
  • Rick.Wang  · 技术社区  · 7 年前

    我的应用程序是使用一个链接(url)来调用lambda函数,然后我想知道lambda的公共IP并获取页面源。如何使用python获取lambda公共IP? 谢谢。

    4 回复  |  直到 7 年前
        1
  •  10
  •   helloV    6 年前

    你可以卷曲到 checkip.amazonaws.com 获取公共IP。

    import requests
    requests.get('http://checkip.amazonaws.com').text.rstrip()
    

    输出:

    52.x.147.64
    
        2
  •  3
  •   Leo Skhrnkv    5 年前

    我建议:

    from botocore.vendored import requests
    requests.get('http://checkip.amazonaws.com').text.rstrip()
    

    在您的 lambda 作用

    否则,您可能会得到一个错误,说明lambda无法找到 requests 除非您从创建lambda。zip文件,包括 请求 通过安装 pip

        3
  •  2
  •   John    4 年前
    import urllib3
    http = urllib3.PoolManager()
    response = http.request('GET', 'http://checkip.amazonaws.com')
    response.__dict__
    

    在中找到的IP地址 '_body' 属性

    替代解决方案的原因:

    1. 无法使用 requests 因为它不是核心的一部分
    2. 找到AWS删除的botocore供应商版本 here
        4
  •  1
  •   LittleWat    3 年前

    而不是 import requests ,您可以使用 urllib 这不需要pip。

    示例代码如下;

    
    from urllib.request import Request, urlopen
    
    
    def lambda_handler(event, context):
        url = 'http://checkip.amazonaws.com'
        with urlopen(Request(url)) as response:
            print(response.read().decode('utf-8'))