Jestem całkiem nowy w Elastic Beanstalk i niezbyt biegły w administrowaniu serwerem, ale muszę skonfigurować projekt Django na Elastic Beanstalk łączący się z zewnętrzną bazą danych MySQL RDS.Uprawnienia do EC2 stworzonego przez Elastic Beanstalk łączącego się z zewnętrznym RDS
Stworzyłem oddzielną bazę danych MySQL RDS i mogę bez problemu łączyć się z nią przy użyciu Sequel Pro na moim komputerze. Następnie mam projekt Django, który próbuję umieścić w Elastic Beanstalk, ale niestety bez powodzenia. Jeśli uruchomię lokalny serwer Django z mojego komputera, projekt będzie dostępny do przeglądania i Amazon RDS MySQL będzie dostępny. Jednak, gdy biegnę
eb deploy
uzyskać
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server
on 'myapp-staging.xxx.eu-west-1.rds.amazonaws.com' (110)")
(ElasticBeanstalk::ExternalInvocationError)
Jeśli mogę się zalogować do serwera EC2 poprzez SSH
eb ssh
a następnie sprawdzić otwarte porty z
netstat -lntu
Nie widzę portu 3306 MySQL, więc ja zgadnij, że jest zablokowany przez zaporę ogniową.
To co próbowałem dotyczących uprawnienia:
- Poszedłem do RDS Dashboard -> Grupy Bezpieczeństwa i stworzył MojaApl-mysql-security-grupa z EC2 grupy zabezpieczeń typu połączenia skierowaną do grupy zabezpieczeń EC2 używane przez elastyczne Instancja Beanstalk EC2 "awseb-e -...".
- Poszedłem do EC2 -> Grupy bezpieczeństwa i "awseb-e -..." Ustawiłem przychodzący port MySQL ze źródłem 0.0.0.0/0
- Poszedłem do pulpitu VPC -> Grupy zabezpieczeń i stworzył moją aplikację -mysql-security-group z wejściowymi regułami portu MySQL ze źródłem 0.0.0.0/0.
Potem próbowałem ponownie wdrożyć, ponownie uruchomić serwery, a nawet przebudować środowisko, ale nic nie pomogło. Port 3306 MySQL nadal nie jest otwarty w instancjach EC2 utworzonych przez Elastic Beanstalk.
Co robię źle lub czego brakuje?
Początkowo EC2 z Elastic Beanstalk nie należało do tego samego VPC co RDS. Tak więc odtworzyłem Elastic Beanstalk w tym samym VPC co RDS przy użyciu przełącznika --vpc w komendzie eb create. Aby rozwiązać problem z dalszym połączeniem, musiałem dodać VPC IP do połączenia przychodzącego dla RDS. Dzięki za twoje obszerne wyjaśnienie. Mam nadzieję, że pomoże to także innym użytkownikom AWS. –