gpt4 book ai didi

aws-lambda - 在 lambda 函数中解析私有(private)主机名

转载 作者:行者123 更新时间:2023-12-04 01:08:51 27 4
gpt4 key购买 nike

我遇到了 Lambda 无法解析 http://example.com:1234 等 URL 的问题
我必须改用IP。我想知道如何确保可以解析 url,尤其是当我使用的 url 是私有(private)的时。所有谷歌研究都将我指向 53 号公路,但没有解释具体应该如何完成。
为了更清楚:

  • 我所做的只是使用 Python requests并调用我的 Elasticsearch 插入一些数据:response = requests.post(es_url, data=some_data, timeout=some_timeout)

  • 在哪里 es_url<ip>:9200/some_index/some_type/ .
    我要改 ip到人类可读的域,如 my_es.example.com它适用于我的 EC2 实例,但我无法在 lambda 函数中解析此名称。
  • 我相信我的 lambda 函数已经连接到 VPC。我不在乎访问公共(public)IP。我只需要访问位于同一 VPC 中的 ES。除非我的设置不正确?
  • 最佳答案

    这对我来说可以。

    我做了以下事情:

  • 使用 创建了一个新的 VPC VPC 向导 (公共(public)和私有(private)子网,NAT 网关)
  • 创建了 Lambda 函数 (如下所示)没有 VPC 连接
  • 已测试——它 成功解析域名
  • 将 Lambda 函数配置为使用 私有(private)子网 在新的 VPC
  • 测试——再次成功
  • 推出 ElastiCache 服务器 在私有(private)子网中
  • 将 Lambda 函数改为解析 ElastiCache 服务器的 DNS 名称 - 成功!

  • 这是我使用的 Lambda (Python 3.6) 函数:
    def lambda_handler(event, context):
    import socket

    data = socket.gethostbyname_ex('google.com')
    print (data)
    return

    这适用于没有 VPC 设置以及配置到私有(private)子网的 VPC。

    然后我使用 ElastiCache 服务器的名称再次运行它:
    def lambda_handler(event, context):
    import socket

    data = socket.gethostbyname_ex('stack.b155ae.0001.apse2.cache.amazonaws.com')
    print (data)
    return

    它返回:
    ('stack.b155ae.0001.apse2.cache.amazonaws.com', [], ['10.0.1.168'])

    因此,从 Lambda 解析 ElastiCache 名称似乎可以正常工作。

    您的问题一定出在您的 Lambda 或 VPC 配置上(您是否更改了 DHCP 选项?)。

    关于aws-lambda - 在 lambda 函数中解析私有(private)主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145859/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com