Permissões para o EC2 criadas pelo Elastic Beanstalk conectando-se ao RDS externo

1

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:

  1. 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 -...”.
  2. Eu fui ao EC2 - > Security Groups e para “awseb-e -...” eu configurei a porta Inbound MySQL com a fonte 0.0.0.0/0
  3. 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?

    
por Aidas Bendoraitis 14.11.2015 / 22:22

2 respostas

0

Parecia haver dois pontos ausentes na configuração:

  1. Eu tive que recriar o ambiente Elastic Beanstalk para estar dentro da mesma Virtual Private Cloud (VPC) que o banco de dados RDS. Isso pode ser feito por:

    eb create myapp-staging --vpc
    

e, em seguida, responder a algumas perguntas, como o que é o ID da VPC.

  1. Eu tive que inserir o VPC CIDR (IP) nas conexões de entrada permitidas para o MySQL para o grupo de segurança "rds-launch-wizard":

    a) Vá para o Painel VPC - > Seus VPCs e copie o VPC CIDR.

    b) Vá para o Painel VPC - > Grupos de segurança e selecione o grupo "rds-launch-wizard", edite as regras de entrada e adicione esta regra:

    MySQL/Aurora (3306) | TCP (6) | 3306 | <VPC CIDR here>
    
por 21.11.2015 / 13:16
0

Sem usar um VPC personalizado, a maneira mais fácil de adicionar um grupo de segurança existente a instâncias do EB EC2 é usar a configuração simples descrita em link

Por exemplo:

$ cat .ebextensions/securitygroup-addexisting.config
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: rds-launch-wizard-1
    
por 20.10.2018 / 11:59