Elastic Beanstalk内置了对RDS的支持。 但是,我想使用Elastic Beanstalk的Postgresql。 这将是最好的做法呢?
我发现最简单,最干净的方式,假设您使用Elastic Beanstalk CLI eb :
创build一个实例(按照下面的步骤):
eb init
这将创build一个与MySQL的实例。
一旦创build,停止它。
eb stop
这将停止您的实例并删除由初始设置创build的MySQL数据库。
在工程根目录的.elasticbeanstalk目录中编辑实例configuration文件,用postgresreplace[aws:rds:dbinstance]部分的DBEngine条目。
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文件设置。
例如
您可以在Heroku Postgres上获得一个托pipe的postgres实例 – 它为ActiveRecord提供了非常好的格式化configuration细节。 你只需要把它们放到你的database.yml文件中。