Я новичок в Elastic Beanstalk и не очень разбираюсь в администрировании серверов, но мне нужно настроить проект Django на Elastic Beanstalk для подключения к внешней базе данных RDS MySQL.
Я создал отдельную базу данных 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)
Если я войду на сервер EC2 через SSH
eb ssh
а затем проверьте открытые порты с помощью
netstat -lntu
Я не вижу там порта 3306 MySQL, поэтому я предполагаю, что он заблокирован брандмауэром.
Вот что я пробовал в отношении разрешений:
Затем я попытался выполнить повторное развертывание, перезапустить серверы и даже перестроить среду, но ничего не помогло. Порт 3306 MySQL до сих пор не открыт в экземплярах EC2, созданных Elastic Beanstalk.
Что я делаю не так или чего не хватает?
Без использования настраиваемого VPC, самый простой способ добавить существующую группу безопасности в экземпляры EB EC2 - использовать простую конфигурацию, описанную в https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config
Например:
$ cat .ebextensions/securitygroup-addexisting.config
option_settings:
- namespace: aws:autoscaling:launchconfiguration
option_name: SecurityGroups
value: rds-launch-wizard-1
Похоже, в конфигурации было два недостающих пункта:
Мне пришлось воссоздать среду Elastic Beanstalk, чтобы она находилась в том же виртуальном частном облаке (VPC), что и база данных RDS. Это можно сделать:
eb create myapp-staging --vpc
а затем ответить на несколько вопросов, например, что такое идентификатор VPC.
Мне пришлось ввести VPC CIDR (IP) в разрешенные входящие соединения для MySQL для группы безопасности «rds-launch-wizard»:
a) Перейдите на панель управления VPC -> Ваши VPC и скопируйте VPC CIDR.
б) Перейдите в панель управления VPC -> Группы безопасности и выберите группу «rds-launch-wizard», затем отредактируйте правила для входящих подключений и добавьте это правило:
MySQL/Aurora (3306) | TCP (6) | 3306 | <VPC CIDR here>