Назад | Перейти на главную страницу

Как настроить Elastic Beanstalk для использования Rails с Postgres?

Elastic Beanstalk имеет встроенную поддержку RDS. Но я хочу использовать Postgresql с Elastic Beanstalk. Какой будет лучший подход для этого?

Самый простой и чистый способ, который я нашел, если вы используете интерфейс командной строки Elastic Beanstalk eb:

  1. Создайте экземпляр (следуйте инструкциям):

    eb init
    

    Это создаст экземпляр с MySQL.

  2. Как только он будет создан, остановите его.

    eb stop
    

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

  3. Отредактируйте файл конфигурации вашего экземпляра в .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>
    
  4. Перезапустите экземпляр:

    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.
    
  5. Проверить статус. Как только он станет зеленым, у вас появится база данных 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.