Amazon VPC の外部から Amazon DocumentDB クラスターへの接続
Amazon DocumentDB (MongoDB 互換) クラスターは、Amazon VPC (Amazon Virtual Private Cloud) 内にデプロイされます。それらのクラスターには、同じ Amazon VPC にデプロイされている Amazon EC2 インスタンスや他の AWS のサービスから直接アクセスできます。また、Amazon DocumentDB には、同じ AWS のリージョン内に、あるいは VPC ピアリングを介する別のリージョン内にある異なる VPC の中の EC2 インスタンスや他の AWS リージョン のサービスによってアクセスできます。
ただし、お客様のユースケースで、お客様 (またはお客様のアプリケーション) が、クラスターの VPC の外部から Amazon DocumentDB リソースにアクセスする必要があるとします。その場合は、SSH トンネリング (ポート転送 とも呼ばれる) を使用して、Amazon DocumentDB リソースにアクセスできます。
SSH トンネリングに関する詳細な説明は、このトピックでは扱いません。SSH トンネリングの詳細については、次のドキュメントを参照してください。
-
SSH ポート転送の例
、特に「ローカル転送 」セクション
SSH トンネルを作成するには、Amazon DocumentDB クラスターと同じ Amazon VPC で実行中の Amazon EC2 インスタンスが必要です。クラスターと同じ VPC で既存の EC2 インスタンスを使用するか、新しい EC2 インスタンスを作成できます。詳細については、以下でオペレーティングシステムに該当するトピックを参照してください。
通常、以下のコマンドを使用して EC2 インスタンスに接続します。
ssh -i "ec2Access.pem" ubuntu@ec2-34-229-221-164.compute-1.amazonaws.com
その場合、ローカルコンピュータで以下のコマンドを実行することにより Amazon DocumentDB クラスターsample-cluster.node.us-east-1.docdb.amazonaws.com
に SSH トンネルを設定できます。ローカルポートの転送を行う場合は、-L
フラグを使用します。SSH トンネルを使用する場合は、クラスターエンドポイントを使用してクラスターに接続することをお勧めします。レプリカセットモード (接続文字列に replicaSet=rs0
を指定) で接続するとエラーが発生します。
ssh -i "ec2Access.pem" -L 27017:sample-cluster.node.us-east-1.docdb.amazonaws.com:27017 ubuntu@ec2-34-229-221-164.compute-1.amazonaws.com -N
SSH トンネルが作成されると、localhost:27017
に対して発行するすべてのコマンドは、Amazon VPC で実行中の Amazon DocumentDB クラスター sample-cluster
に転送されます。Amazon DocumentDB クラスターで TLS (Transport Layer Security) が有効になっている場合は、Amazon DocumentDB のhttps://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
注記
TLS は、新しい Amazon DocumentDB クラスターに対してデフォルトで有効になっています。ただし、無効にすることは可能です。詳細については、「Amazon DocumentDB クラスター TLS 設定の管理」を参照してください。
Amazon VPC の外部から Amazon DocumentDB クラスターに接続するには、以下のコマンドを使用します。
mongo --sslAllowInvalidHostnames --ssl --sslCAFile global-bundle.pem --username <yourUsername> --password <yourPassword>