Я пытаюсь создать среду 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':
- Я добавил следующие записи в мой файл '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