Как создать базу данных эластичных стеблей с помощью 'eb create' - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать среду ElasticBeanstalk, используя команду 'eb create' для разрабатываемого приложения django - python.

Все необходимые по умолчанию aws -инфруктуры создано. (например, облачная информация, балансировка нагрузки, целевые группы, экземпляр ec2 и т. д.). Мое приложение использует базу данных postgresql. Я использую следующее определение DATABASE в моих производственных настройках:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': os.environ['RDS_DB_NAME'],
    'USER': os.environ['RDS_USERNAME'],
    'PASSWORD': os.environ['RDS_PASSWORD'],
    'HOST': os.environ['RDS_HOSTNAME'],
    'PORT': os.environ['RDS_PORT'],
}}

, которое использует переменные окружения по умолчанию, предоставленные по умолчанию, если эластичный стержень-окружение создает базу данных. Я попытался автоматизировать создание базы данных с помощью расширений, как описано здесь

Я попытался выполнить следующие шаги для автоматического создания базы данных при выполнении 'eb create':

  1. Я добавил следующие записи в мой файл '01_container.config' в каталоге '.ebextensions', который, кстати, определенно используется (потому что здесь я манипулирую другими значениями, и они правильно изменены в конфигурации эластичного боба-контейнера-контейнера)
option_settings:
  aws:rds:dbinstance:
    DBEngine: postgres
    DBEngineVersion: 9.6.16
    DBUser: 'anyuser'
    DBPassword: 'anypassword'
Я также пытался установить те же значения, используя описанные подходы «Файлы конфигурации» и «JSON документ» здесь , и ни один из них не работал

Так что я нужно выполнить 'eb create', чтобы он завершился с ошибкой KeyError: 'RDS_DB_NAME'. Go в среду эластичных бобов, я только что создал и создал RDS вручную. После успешного создания rds-экземпляра выполните команду «eb update» для повторного развертывания приложения, которое затем работает нормально.

Это нужно сделать именно так? Разве нет возможности автоматически создать RDS-экземпляр при первом создании среды?

Я понял, что AWS действительно использует определения, которые я сделал в своем файле конфигурации ebextension. Работая с конфигурациями, я добавил DBSnapshotIdentifier: null в конфигурационную группу aws: rds: dbinstance: '. Конечно, 'eb create' игнорировал настройки при создании экземпляра эластичного боба, но когда я попытался создать RDS-экземпляр в среде beanstalk AWS -elasti c, я получил следующую ошибку:

Service:AmazonCloudFormation, Message:[/Resources/AWSEBRDSDatabase/Type/DBSnapshotIdentifier] 'null' values are not allowed in templates

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...