1

私がやろうとしているのは、RDS上のdbインスタンスを使用してHerokuにRailsアプリをデプロイすることだけです。これは簡単なはずです。

私は自分でmysql2アダプターを使用しており、herokuにプッシュして、この回答database.ymlに従ってdbインスタンスを追加しました。私は基本的にそれをTまでたどりましたが、エラーは発生しません。しかし、これは明らかにするものです:missing gemheroku logs

/app/vendor/bundle/ruby/1.9.1/bundler/gems/mysql2-e5992664a7bc/lib/mysql2/client.rb:56:in connect': Can't connect to MySQL server on 'nickcoxrails.cud3e2tma07q.us-east-1.rds.amazonaws.com' (110) (Mysql2::Error)

また、私のRDSインスタンスがus-eastにあることに注意してください。これは、ここでの問題であると聞きました。

私のgemfileには、次のものがあります。

gem 'mysql2', :git => 'git://github.com/brianmario/mysql2.git'

私のmysql2gemは、ローカルで動作させる唯一の方法だったため(Rails 3.2.6を使用しているため、最初の回答でバージョン0.3未満を使用すると、ローカルRailsサーバーでエラーが発生したため)、多くのこと(ローカルマシンでmysqlを実行するのに本当に問題がありました)。

私は間違いなくこの回答ごとにセキュリティグループを追加し、この回答ごとにmysql2データベースを追加しました。また、herokuアカウントにRDSアドオンを追加しました。私はandandrake db:createとすべてrake db:schema:loadを実行しrake db:migrateましたが、ローカルデータベースをRDSインスタンスにエクスポートしたので(そのデータをそのまま保持する必要があります)、それは何も新しいことをしません。また、Sequel Proを介してRDSインスタンスに接続できるので、クレデンシャルの問題ではないことがわかります。

これは私の最初のRailsアプリのデプロイなので、恐れずに答えをおろそかにして、「プラグインされていますか?」に相当するものを教えてください。heroku / Rails /RDS/などのテクニカルサポートの質問。

4

3 に答える 3

4

Herokuは、HerokuサーバーがRDSインスタンスに接続できるように手順を変更しました。この質問に対する受け入れられた答えは、それがもはやどのように行われるべきかではありません。

HerokudynosにRDSインスタンスへのアクセスを許可する必要があります。これを行うための推奨される方法は、SSL暗号化接続のみを受け入れるようにRDSインスタンスを設定し、すべてのIPからの入力を許可するようにインスタンスのセキュリティグループを設定することです。

以前、Herokuは、AWS RDSインスタンスへのアクセスを許可する方法として、AWSアカウントIDとセキュリティグループ名を公開していました。これは推奨されなくなりました。

参照:https ://devcenter.heroku.com/articles/amazon_rds

于 2013-11-18T16:07:53.497 に答える
2

defaultHerokuが所有するAWSアカウント098166147350からセキュリティグループを承認していることを確認してください。エラーメッセージは、接続が許可されていないことを示しています。

于 2012-12-03T00:36:50.580 に答える
0

Heroku + AWS(MySQLインスタンス)で勝利を収めました。これを解決するには、サポートチケットをHerokuにドロップする必要があり(オペレーターエラー)、他の人を助けるためにこの情報を投稿したいと思いました。私はこの糸にぶつかり続けました。

私はHerokuw/ Amazon MySQL RDSでRails(4)を使用しています。はい、SSL(pemファイルとそのすべての楽しみ)を構成する必要があります。しかし、Railsを接続することができず、すべてのウォークスルーを非常に近くで追跡しました。Amazon DBは機能しており、Heroku / Railsの外部に問題なく接続できました(IP経由)。

問題はセキュリティグループとIPアクセスにありました。私のサポートチケット「[your]RDSmysqlDB...すべてのIPからの入力を許可する必要があります」を介して。これは、Herokuが提供したリンクでした:https : //devcenter.heroku.com/articles/amazon_rds#require-ssl Herokuが現在述べている場所:

「HerokudynosにRDSインスタンスへのアクセスを許可する必要があります。これを行うための推奨される方法は、許可されたユーザーからのSSL暗号化接続のみを受け入れるようにRDSインスタンスを構成し、すべてのIPからの入力を許可するようにインスタンスのセキュリティグループを構成することです。 「」

いくつかの検索により、すぐにAWS DBインスタンスのデフォルトのセキュリティグループを変更し、次のCIDR/IPエントリを追加することになりました。

0.0.0.0/0

基本的にすべてのIPを許可します。それが承認されるとすぐに、すべてが接続されました。

私はまだこの設定を確認し、友人やコミュニティからのフィードバックを求めています。幸いなことに、私はまだ開発中であり、この設定を消化する時間があります。

これにより誰かの時間を節約できることを願っています。これが、HerokuDynosを介してAWSDBに接続するための現在の方法のようです。

幸運を祈ります。フィードバックをお待ちしています。

編集:設定でスリープした後、デフォルトから0.0.0.0/0を削除し、分離されたセキュリティグループに追加して、テストしました-動作しています。デフォルトのセキュリティグループが。で適用されているのではないかと心配していました非SSLDBでのスタイルのIPアクセス。それは間違っていると感じました。

于 2014-02-20T02:25:14.793 に答える