Elastic Beanstalk имеет встроенную поддержку RDS. Но я хочу использовать Postgresql с Elastic Beanstalk. Какой будет лучший подход для этого?
Самый простой и чистый способ, который я нашел, если вы используете интерфейс командной строки Elastic Beanstalk eb
:
Создайте экземпляр (следуйте инструкциям):
eb init
Это создаст экземпляр с MySQL.
Как только он будет создан, остановите его.
eb stop
Это остановит ваш экземпляр и удалит базу данных MySQL, созданную при первоначальной настройке.
Отредактируйте файл конфигурации вашего экземпляра в .elasticbeanstalk
каталог в корне вашего проекта, замените DBEngine запись в [aws:rds:dbinstance]
раздел по Postgres.
vi .elasticbeanstalk/optionsettings.<my-app>-env
[aws:rds:dbinstance]
DBDeletionPolicy=Delete
DBEngine=postgres
DBInstanceClass=db.t1.micro
DBSnapshotIdentifier=
DBUser=<dbrootuser>
Перезапустите экземпляр:
eb start
Starting application ".<my-app>".
Waiting for environment "<my-app>-env" to launch.
2014-07-17 17:53:15 INFO createEnvironment is starting.
2014-07-17 17:53:21 INFO Using elasticbeanstalk-us-east-1-xxxxxxx as Amazon S3 storage bucket for environment data.
2014-07-17 17:53:52 INFO Created EIP: nn.nnn.nnn.nnn
2014-07-17 17:53:58 INFO Created security group named: awseb-e-xxx
2014-07-17 17:54:10 INFO Creating RDS database named: <db name>. This may take a few minutes.
2014-07-17 18:06:09 INFO Created RDS database named: <db name>
2014-07-17 18:07:07 INFO Waiting for EC2 instances to launch. This may take a few minutes.
Проверить статус. Как только он станет зеленым, у вас появится база данных postgres.
eb status --verbose
URL : <my-app>-env-xxxxx.elasticbeanstalk.com
Status : Ready
Health : Green
RDS Database: YYYYDatabase | <db name>.zzzzzz.us-east-1.rds.amazonaws.com:5432
Database Engine: postgres 9.3.3
Allocated Storage: 10
Instance Class: db.t1.micro
Multi AZ: False
Master Username: <dbrootuser>
Creation Time: 2014-07-17 18:02:28
DB Instance Status: available
Вы можете настроить свою собственную базу данных postgres, работающую где угодно, и сделать так, чтобы ваше приложение rails использовало ее из настроек файла database.yml.
Например,
Вы можете получить размещенный экземпляр postgres на Heroku Postgres - он дает очень хорошо отформатированные детали конфигурации для ActiveRecord. Вам просто нужно поместить их в свой файл database.yml.