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
總結
以上是生活随笔為你收集整理的aws python lambda_python – AWS Lambda发送HTTP请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 检测到python编程环境中存在多个版本
- 下一篇: 北大保安又双叒…出“传奇”!这次是挑战“