我對Elastic Beanstalk很陌生,對服務器管理不太熟練,但我需要在連接到外部RDS MySQL數據庫的Elastic Beanstalk上設置Django項目。由Elastic Beanstalk創建的連接到外部RDS的EC2權限
我創建了一個單獨的RDS MySQL數據庫,我可以在我的電腦上使用Sequel Pro連接到它,沒有任何問題。然後我有我的Django項目,我試圖把它放到Elastic Beanstalk,但不幸的是沒有運氣。如果我從我的計算機運行本地Django服務器,則該項目可瀏覽並且可以訪問Amazon RDS MySQL。然而,當我運行
eb deploy
我得到
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server
on 'myapp-staging.xxx.eu-west-1.rds.amazonaws.com' (110)")
(ElasticBeanstalk::ExternalInvocationError)
如果我通過SSH登錄到EC2服務器
eb ssh
,然後檢查開放的端口與
netstat -lntu
我沒有看到MySQL的端口3306,所以我猜測它被防火牆阻止。
這是我嘗試過關於權限:
- 我去RDS儀表板 - >安全組和創建的myapp-mysql的安全組與EC2安全組連接類型指向由彈性使用EC2安全組Beanstalk EC2實例「awseb-e -...」。
- 我去了EC2->安全組和爲「awseb-e -...」我設置入站MySQL端口的源0.0.0.0/0
- 我去了VPC儀表板 - >安全組並創建myapp -mysql-security-group,帶有源端口爲0.0.0.0/0的MySQL端口的入站規則。
然後我嘗試重新部署,重新啓動服務器甚至重建環境,但沒有任何幫助。 MySQL端口3306在由Elastic Beanstalk創建的EC2實例中仍未打開。
我在做什麼錯或缺少什麼?
最初來自Elastic Beanstalk的EC2與RDS不在同一個VPC中。因此,我使用eb create命令中的--vpc switch在與VDS相同的VPC中重新創建了Elastic Beanstalk。爲了解決進一步的連接問題,我必須將VPC IP添加到RDS的傳入連接。感謝您的廣泛解釋。我希望它也能幫助其他AWS用戶。 –