HerokuアプリケーションのデフォルトDBであるPostgreSQLをAmazonRDSに変更する手順を記します。
https://devcenter.heroku.com/articles/amazon_rds
環境
MacOSX
準備
Herokuのアプリケーション
Amazon Web Serviceのアカウント
Amazon RDSのインスタンス(us-eastリージョンのみ)
Amazon RDS Command Line Toolkit
・brew install rds-command-line-tools
Gem
・gem install heroku
・gem install sqlite3
AWSの準備
環境変数
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home"
export EC2_PRIVATE_KEY="$(/bin/ls $HOME/.ec2/pk-aws-account.pem)"
export EC2_CERT="$(/bin/ls $HOME/.ec2/cert-aws-account.pem)"
export AWS_RDS_HOME="/usr/local/Cellar/rds-command-line-tools/1.12.002/libexec"
EC2_PRIVATE_KEYとEC2_CERTは下記の手順でダウンロードして.ec2フォルダに配置する
rds-command-line-toolsのバージョンとか自分の環境に合わせる
AWS Management Console > Security Credentials > X.509 Certificates
インスタンス情報の取得(疎通確認)
> rds-describe-db-instances
DBINSTANCE test_databases 2013-08-05T15:59:54.972Z db.t1.micro mysql 20 test_databases available test_databases.camuimfljs7b.us-east-1.rds.amazonaws.com 3306 us-east-1a 1 n 5.6.12 general-public-license
SECGROUP default active
PARAMGRP default.mysql5.6 in-sync
OPTIONGROUP default:mysql-5-6 in-sync
インスタンス情報が返ってくれば、rds-command-line-toolsでAPIにアクセスできることが確認できる
Heroku設定
Herokuからの通信許可
> rds-authorize-db-security-group-ingress \
--db-security-group-name default --ec2-security-group-name default \
--ec2-security-group-owner-id 098166147350
SECGROUP default default
EC2-SECGROUP default sg-2aca2f43 098166147350 authorizing
IP-RANGE 1.1.1.1/32 authorized
IP-RANGE 118.109.37.163/32 authorized
HerokuアプリケーションにAddOnとしてAmazonRDSの追加
> heroku addons:add amazon_rds --url=mysql2://test_databases:test_databases@test_databases.camuimfljs7b.us-east-1.rds.amazonaws.com/test_databases
Adding amazon_rds on test_databases... done, v10 (free)
Use `heroku addons:docs amazon_rds` to view documentation.
アプリケーションに設定されているDBを確認する
> heroku config:get DATABASE_URL
mysql2://test_databases:test_databases@test_databases.camuimfljs7b.us-east-1.rds.amazonaws.com/test_databases
参考
Heroku で Flask + SQLAlchemy + Amazon RDS をやってみる。
http://d.hatena.ne.jp/tell-k/20111106/1320583957