«Выбранный» ответ верен, но я хотел добавить некоторую дополнительную информацию, поскольку большинство людей, использующих EB и RDS вместе, должны предъявлять одинаковые требования - даже если они еще этого не знают.
Первый вопрос : почему вы хотите, чтобы экземпляр RDS существовал вне среды EB?
Ответ : чтобы время жизни экземпляра RDS не было связано со временем жизни среды EB. то есть, когда вы удаляете среду, вы не хотите уничтожать БД вместе с ней. Существует очень мало причин, по которым вы хотите связать свой экземпляр RDS с вашей средой.
Проблема с настройкой RDS независимо от EB заключается в том, что переменные RDS_ * не заполняются автоматически и, следовательно, вам необходимо получить их значения и заполнить их самостоятельно через веб-консоль или .ebextensions. Однако не рекомендуется добавлять учетные данные в ваш код, поскольку это может быть дырой в безопасности.
Но затем следующая проблема заключается в том, что если вы хотите программно создавать среды (например, для сине-зеленых развертываний с нулевым временем простоя), то вам необходимо решение, как каждый раз заполнять конфиденциальные значения RDS (например, пароль). К сожалению, для этого требуется, чтобы вы опустились в стек AWS и использовали шаблон CloudFormation.
Идеальным решением является расширение EB, чтобы ссылка «использовать существующую базу данных», упомянутая в вопросе, фактически позволяла вам вручную связать существующую базу данных RDS, а затем снова автоматически заполнить переменные среды RDS_ *, вместо того, чтобы перенаправлять вас на бесполезную документацию. , Служба поддержки AWS заявила, что это было поднято как запрос на добавление функции, но, конечно, сроки не указаны.
Ответ от службы поддержки AWS :
источник
Недавно мне это понадобилось, а также я хотел автоматизировать шаги с помощью интерфейса командной строки AWS CLI / EB. В любом случае, вот основные шаги, которые я выполнил (при условии, что вы уже создали экземпляр RDS):
aws ec2 create-security-group
(AWS CLI) и связать его с экземпляром RDS с помощьюaws rds modify-db-instance
(AWS CLI).eb init
(EB CLI)).aws rds describe-db-instances
для этого.RDS_*
переменные среды в экземпляре EB при создании среды (или развертывании среды позже). Вы можете сделать это с помощьюeb create
/eb deploy
(EB CLI). При первоначальном создании среды она будет ухудшена, поскольку группы безопасности для доступа к базе данных RDS настроены неправильно.aws elasticbeanstalk describe-configuration-settings
(AWS CLI) для этого.aws ec2 authorize-security-group-ingress
(AWS CLI) для этого, который использует группы безопасности VPC (не группы безопасности DB). Вероятно, вы можете добиться того же с группами безопасности БД, если они поддерживаются в вашем регионе. При настройке правила входящего трафика убедитесь, что вы используете правильный протокол и порт для своей базы данных.aws rds modify-db-instance
(AWS CLI)).eb deploy
(EB CLI)). Мне пришлось сделать повторное развертывание, так как я запускаю миграции на развертываниях.Это в основном это. Теперь вы должны иметь возможность увеличивать / уменьшать экземпляры RDS, не заботясь об экземплярах EB, если вы сохраняете одинаковые имена хоста и базы данных. При таком подходе вы также можете выполнять сине-зеленые развертывания (но вам может потребоваться выполнить некоторые дополнительные шаги, чтобы также отозвать доступ к группе безопасности).
источник
Самым простым для добавления существующей группы безопасности в экземпляры EB EC2 по конфигурации является использование простого файла, описанного в https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/. безопасность конфигурация / SecurityGroup-addexisting.config
Например:
источник
Я столкнулся с той же проблемой и исправил с помощью следующих шагов:
1) Перейдите к экземпляру EC2 и запишите пример вашей группы безопасности "sg-121212121212"
2) Перейти в группу безопасности RDS ad = nd входящий трафик
3) Измените правило, выберите весь трафик и добавьте новую группу безопасности ebs "sg-121212121212".
Надеюсь, это будет полезно
источник
создать RDS под Elastic; это добавит новую правильную группу безопасности; изменить группу безопасности старых существующих RDS; установить правильную строку подключения в веб-конфигурации и все работает ...
источник