Ответ 1
Если кто-то ищет ответ, вот совет, который я получил от поддержки aws.
Весь код, развернутый на Elastic Beanstalk, должен быть "без гражданства" I.E. Никогда не вносите изменения непосредственно в исполняемый экземпляр beanstalk с использованием SSH или FTP... Поскольку это приведет к несогласованности и/или потерям данных! - Elastic Beanstalk не предназначен для приложений, которые не являются апатридами. Окружающая среда предназначена для масштабирования вверх и вниз в ожидании загрузки сети/ЦП и создания новых экземпляров из базового AMI. Если у экземпляра есть проблемы или базовое оборудование, Elastic Beanstalk прекратит выполнение этих запущенных экземпляров и заменит их новыми экземплярами. Следовательно, почему никакая модификация кода не должна применяться или выполняться "напрямую" к существующему экземпляру, поскольку новые экземпляры не будут знать об этих прямых изменениях. ВСЕ изменения/код нужно либо загружать в консоль Elastic Beanstalk, либо инструменты CLI, а также загружать все запущенные экземпляры. Более подробную информацию о концепциях дизайна эластичных beanstalk можно прочитать по следующей ссылке http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html
Предлагаемое решение: С учетом вышеизложенного, если вы используете MongoDB для хранения данных приложений, наша рекомендация состояла бы в том, чтобы DE-pair среду MongoDB из вашего приложения Node.js. I.E Создайте MongoDB-сервер за пределами Elastic Beanstalk, например, запуская MongoDB непосредственно на экземпляр EC2, и ваше приложение "Устойчивое Beanstalk Node.js" подключается к серверу MongoDB, используя параметры подключения в вашем приложении.
-Создание MongoDB Ниже приведены некоторые примеры ссылок, которые могут быть полезны для вашего сценария для создания сервера MongoDB. Разверните MongoDB на EC2, https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ Клиент MongoDB node https://docs.mongodb.org/getting-started/node/client/ MongoDB в руководстве быстрого старта AWS Cloud http://docs.aws.amazon.com/quickstart/latest/mongodb/architecture.html
- Добавление переменных среды в Эластичный Beanstalk для ссылки на ваш сервер MongoDB После создания сервера MongoDB вы можете передать необходимые настройки соединения в среду Elastic Beanstalk с использованием переменных окружения. Пример использования .ebextensions.config, который вы можете добавить Mongo URL/ports/users и т.д.
option_settings: - option_name: MONGO_DB_URL значение: "Внутренний IP-адрес вашего MongoDB EC2"
Информация о том, как использовать свойства среды и прочитать их из приложения, приведена ниже. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop И информацию, использующую .ebextensions.config, можно найти по следующей ссылке http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
В качестве альтернативы вы также можете установить переменную среды, используя cli или через консоль AWS Переменные среды eb cli могут быть прочитаны в соответствии с приведенной ниже ссылкой. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html Использование консоли AWS Чтобы установить системные свойства (AWS Management Console) Откройте консоль Elastic Beanstalk. Перейдите в консоль управления для своей среды. Выберите Конфигурация. В разделе "Конфигурация программного обеспечения" выберите "Редактировать". В разделе "Свойства среды" создайте свое имя/значения...
Доступ к настройкам конфигурации среды В среде Node.js, работающей в AWS Elastic Beanstalk, вы можете получить доступ к переменным окружения, используя process.env.ENV_VARIABLE, как показано в следующем примере. process.env.MONGO_DB_URL process.env.PARAM2
Резюме: В целом я бы рекомендовал следующие шаги для интеграции MongoDB с средами с эластичным beanstalk. Шаг 1) Создайте сервер MongoDB за пределами эластичного бобового стежка Шаг 2) Создайте приложение Node.js в Elastic Beanstalk, которое подключится к вашему серверу MongoDB.