0

GAEにデモアプリケーションをデプロイして、mLabでうまく動作しますが、GCE(MongoDB(Google Click to Deploy))にmongodbをデプロイしようとすると、デプロイは成功しますがGAEで実行しているアプリケーションでte URIを設定する方法を知らないGAEでmongodbにアクセスする方法

私は内部および外部IPを試していますが、動作していないようです!

ありがとうございました

+0

mongodbトラフィック(ポート27017)を許可するには、GCEファイアウォールでファイアウォールルールを作成していますか。 – Faizan

答えて

4

GAE標準配備はサンドボックスです。したがって、GCEインスタンスの内部IPに接続することはできません。 2つの異なるプライベートネットワーク上で、内部IPを使用して互いに通信することができない2つの異なるデバイスとして想像することができます。ただし、デバイスの1つ(この場合はGCEインスタンス)にパブリックIPがあり、そのデバイスが必要とするポートを介したプライベートネットワーク(ファイアウォール)トラフィックが許可されていれば、常に通信できます。

一方、GAEデプロイメントがフレックス環境にある場合、内部IPを介してAPIを使用してdbに接続できるはずです。

フレックス環境example私はこのフレックス環境で、内部と外部の両方のIPアドレスを試して成功しました。あなたのように、私はCloud Launcherを使ってMongodbを展開しました。これは公開IPとネットワークタグmongodbとmongodb-dbでGCEインスタンスを作成しました。 SSH経由でプライマリdbインスタンスに接続して、db、username、およびパスワードcreatedを取得します。

次のように、たとえばあたりの内部IP、I先ほど作成/修正keys.jsonファイルを使用するには:

{ 
    "mongoHost": "internal IP address", 
    "mongoPort": "27017", 
    "mongoDatabase": "db", 
    "mongoUser": "username", 
    "mongoPass": "password" 
} 

をだから私は、サーバーのコードとしてURIを心配する必要はありませんでした。

mongodb://${user}:${pass}@${host}:${port} 

しかし、あなたのデモアプリケーションのために、あなたは、標準の接続文字列の書式URIのためのMongoDBの公式マニュアルを確認する必要があります:jsがこの文字列を渡して、それの世話をしました。

パブリックIPの使用に関しては、MongoDBインスタンスへのアクセスだけを制限するために、ターゲットタグをネットワークタグと同じにしてポート27017でtcp入力を許可するネットワークファイアウォールルールを作成する必要がありました。次に、上記のように内部IPをパブリックに置き換えてkeys.jsonファイルを変更しました。

+1

公式のMongoDB標準URIスキームには、[link](https://docs.mongodb.com/manual/reference/connection-string/#standard-connection-string-format)があります。 – Fady

関連する問題