2017-08-31 178 views
0

我有一個需要在AWS Lambda上執行的python 3.6腳本。該腳本需要建立與RedShift的連接 - 通過psycopg2完成。psycopg2 aws lambda超時錯誤

部署包已使用適當的兼容psycopg2版本創建。

當建立一個連接 - 即conn = psycopg2.connect(...) - 時,腳本超出閾值範圍,範圍從5秒到5分鐘不等(在本地執行腳本時,它需要少於5秒)。

如果我刪除連接語句(即conn = psycopg2.connect(...)),腳本不會超時 - 即時生成成功提示。

如果有人遇到類似的問題,您的意見將非常感激。

車輪保持紡紗

+1

歡迎來到Stack Overflow!尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve]。使用「編輯」鏈接來改善你的*問題* - 不要通過評論添加更多信息。謝謝! – GhostCat

+0

重複我想:https://stackoverflow.com/questions/31809890/can-aws-lambda-connect-to-rds-mysql-database-and-update-the-database – Xire

回答

0

如果你的腳本掛在psycopg2.connect(...)打電話,不是你的拉姆達功能相關聯的安全組,不允許訪問Postgres數據庫實例。

檢查與數據庫關聯的安全組,它應該有一個允許訪問與您的lambda關聯的安全組的Ingress。

 "DatabaseSecurityGroupIngress": [ 
     { 
     "IpProtocol": "tcp", 
     "FromPort": "5432", 
     "ToPort": "5432", 
     "SourceSecurityGroupId": { 
      "Ref": "LambdaSecurityGroup" 
     } 
     ]