700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > aws python lambda_python – AWS Lambda发送HTTP请求

aws python lambda_python – AWS Lambda发送HTTP请求

时间:2018-08-05 17:51:42

相关推荐

aws python lambda_python  –  AWS Lambda发送HTTP请求

这可能是一个简单回答的问题,但我似乎无法弄明白.

背景:我有一个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确实具有Internet访问权限,并且应用的安全组似乎允许Internet访问. [/编辑]

我已经在本地测试了代码(连接到相同的数据源)并且它可以完美地工作.

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

编辑:

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

编辑:

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

解决方法:

如果您已在VPC内部署了Lambda功能,则它不会获得公共IP地址,即使它已部署到具有到Internet网关的路由的子网中.它只获取私有IP地址,因此无法自行与公共Internet通信.

为了与公共互联网进行通信,部署在您的VPC中的Lambda功能需要在私有子网中完成,该子网具有route到NAT Gateway或自我管理的NAT instance.

标签:python,python-2-7,amazon-web-services,aws-lambda

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。