Eu sou muito novo no Elastic Beanstalk e não sou muito eficiente na administração de servidores, mas preciso configurar um projeto Django no Elastic Beanstalk conectando-me ao banco de dados RDS MySQL externo.
Eu criei um banco de dados RDS MySQL separado e posso conectar-me a ele usando o Sequel Pro no meu computador sem problemas. Então eu tenho meu projeto Django que eu tento colocar no Elastic Beanstalk, mas infelizmente sem sorte. Se eu executar o servidor Django local do meu computador, o projeto é navegável e o Amazon RDS MySQL está acessível. No entanto, quando eu corro
eb deploy
Eu obtenho
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server
on 'myapp-staging.xxx.eu-west-1.rds.amazonaws.com' (110)")
(ElasticBeanstalk::ExternalInvocationError)
Se eu fizer login no servidor do EC2 via SSH
eb ssh
e, em seguida, verifique as portas abertas com
netstat -lntu
Eu não vejo a porta 3306 do MySQL lá, então acho que ela está bloqueada pelo firewall.
Isso é o que eu tentei em relação às permissões:
- Eu fui ao RDS Dashboard - > Grupos de segurança e myapp-mysql-security-group criados com o tipo de conexão do EC2 Security Group apontando para o grupo de segurança do EC2 usado pela instância do Elastic Beanstalk EC2, “awseb-e -...”.
- Eu fui ao EC2 - > Security Groups e para “awseb-e -...” eu configurei a porta Inbound MySQL com a fonte 0.0.0.0/0
- Eu fui ao Painel VPC - > Grupos de segurança e crie myapp-mysql-security-group com a porta Inbound Rules of MySQL com fonte 0.0.0.0/0.
Depois tentei reimplantar, reiniciar servidores e até mesmo reconstruir o ambiente, mas nada ajudou. A porta 3306 do MySQL ainda não está aberta nas instâncias do EC2 criadas pelo Elastic Beanstalk.
O que estou fazendo errado ou o que está faltando?