gpt4 book ai didi

python - AWS Lambda 发送 HTTP 请求

转载 作者:太空狗 更新时间:2023-10-30 02:17:32 24 4
gpt4 key购买 nike

这可能是一个很容易回答的问题,但我似乎无法弄明白。

背景:我有一个 python Lambda 函数来获取数据库中的更改,然后使用 HTTP 将 json 中的更改发布到 URL。我正在使用类似这样的 urllib2:

# this runs inside a loop, in reality my error handling is much better
request = urllib2.Request(url)
request.add_header('Content-type', 'application/json')
try:
response = urllib2.urlopen(request, json_message)
except:
response = "Failed!"

从日志看来,发送消息的调用被完全跳过,或者在等待响应时超时。

我是否缺少权限设置,AWS 中的出站规则似乎是正确的。 [编辑] - 应用于此 lambda 的 VPC 确实具有互联网访问权限,并且应用的安全组似乎允许互联网访问。 [/编辑]

我已经在本地测试了代码(连接到同一数据源)并且它可以完美运行。

似乎与从 lambda 发布相关的其他问题与 node.js 相关,通常是因为 url 错误。在这种情况下,我使用的是 requestb.in url,我知道它在本地运行时可以正常工作。

编辑:

我已经设置了我的 NAT 网关,它应该可以正常工作,我什至转到另一个 AWS 账户,重新创建条件,它工作正常。我看不到任何会阻止任何地方访问的安全组。它继续超时。

编辑:事实证明,当我设置到 NAT 网关的默认路由时,我只是个白痴,出于习惯,我写了 0.0.0.0/24 而不是 0.0.0.0/0

最佳答案

如果您已在 VPC 内部署 Lambda 函数,它不会获得公共(public) IP 地址,即使它已部署到具有到 Internet 网关的路由的子网中也是如此。它只获得一个私有(private)IP地址,因此不能自行与公共(public)互联网通信。

要与公共(public)互联网通信,部署在 VPC 内的 Lambda 函数需要在具有 route 的私有(private)子网中完成。到 NAT Gateway或 self 管理NAT instance .

关于python - AWS Lambda 发送 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136746/

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