MongoDB CompassからDocumentDBに接続する

##経緯

AWSのDocumentDBを使って遊んでるんだけど、ローカルの開発で使ってるMongoDB Compassで接続できないかいろいろ試した結果できたのでまとめ。

##前提
まずは、**接続するマシンに[MongoDB Compass](https://www.mongodb.com/products/compass)を入れておくこと。**WindowsもLinuxあるからお好きなので。

**AWSのDocumentDBには設定用のEC2が接続できていること。**
これはDocumentDBのAWS公式ドキュメントの[Amazon EC2 を使用して接続](https://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/connect-ec2.html)を見ながらやればすぐできると思う。

##下準備 EC2編
* AWSのEC2のインスタンス概要に移動して接続するインスタンスまで移動して、接続ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/2955decd-b5b6-e980-0d7e-8491a92cff4f.png)

* SSHクライアントを選ぶ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/84372f37-e491-576f-57ac-b7feb97af9ca.png)


そこに書いてある**EC2接続用プライベートキーファイル**(AWS-EC2_ExpampleA.pem)と、**ユーザ名（初期値はec2-user）**と**インスタンスのURL**(ec2-user@ec2-AA-BB-CC-DD.compute-1.amazonaws.com)を記録しておく。
プライベートキーファイルはEC2インスタンス作成時にしか表示できないので、保存してなかったらインスタンスを再度作成したほうが早い。


* EC2のインスタンス概要の下にあるセキュリティをクリックしてインバウンドルールに追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/8163db07-b0c7-c771-a383-6a83c3f5ee59.png)
通常だと下記の1と3は設定済のはずなので、自分のマシンからMongoDBを接続するので2を追加してポートを通す。

1. SSH接続用(Port22)と自分のIPv4アドレスを追加
1. MongoDB接続用(Port27017)と自分のIPv4アドレスを追加
1. MongoDB接続用(Port27017)とインスタンスのIPv4アドレスを追加


##下準備 DocumentDB
* AWSのDocumentDBに移動して、クラスタ→接続とセキュティをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/bcad7869-fe28-d841-d868-563f8eb124a1.png)

1. DocumentDBのURL(docdb-YYYY-MM-DD-hh-mm-ss.cluster-sample.A1-east-1.docdb.amazonaws.com)
1. DocumentDB作成時のID
1. DocumentDB作成時のパスワード

DocumentDBのURLは、「mongo シェルでこのクラスターに接続する」に書いてあるとこから引っ張ってくる。


## MongoDB Compassの設定
* MongoDB Compassを起動したら、New ConnectionにあるFill in connection fields individuallyをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/54c0bb54-5605-1f0f-af22-c7c44b00a075.png)

* Authenticationを None → Username/Password に変更する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/a68428aa-a7ec-8711-b7d6-7d3df9607f9b.png)

* ここはDocumentDBの設定項目で、入力内容は以下の通り
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/4ef95517-d699-2c3b-6ef3-3febb8dc3701.png)

1. DocumentDBのURL : docdb-YYYY-MM-DD-hh-mm-ss.cluster-sample.A1-east-1.docdb.amazonaws.com
1. DocumentDBのポート番号 : 27017
1. 認証方法 : Username/Password
1. UserName : DocumentDB作成時のID
1. Password : DocumentDB作成時のパスワード

* More Optionをクリックして入力項目を切り替える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/eed5add1-b4ce-61a0-576e-30fd685e39ed.png)

* 入力項目を切り替える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/c6524f37-ad3e-c5d4-ad6b-aba82a77dc40.png)
SSLをNoneからUnvalidated(insecure)、SSH TunnelをNoneからUse Identity Fileに変更する

* ここはSSHの設定項目で、入力内容は以下の通り　主要箇所だけ記載
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/69210dc0-68fe-6892-b3a8-eb68cc648499.png)

1. EC2インスタンスのURL : ec2-user@ec2-AA-BB-CC-DD.compute-1.amazonaws.com
1. EC2のユーザ名 : ec2-user
1. EC2接続用プライベートキー : AWS-EC2_ExpampleA.pem


これで、入力項目は終わり。

#接続
Connectボタンをクリックすると接続を開始する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/a4f28cbb-e120-437e-5dc7-3c3c79020113.png)


接続に成功すると以下のようなダイアログが表示される。
DocumentDBは純粋なMongoDBでないので、警告メッセージがでてるだけで問題ない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/aab5c4af-fbdf-9894-dd38-af04219deb3b.png)

アプリの左側にも警告メッセージ表示されてるけど通常使用には問題ない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1477929/51eda8dd-7d62-a44c-4fdb-84680f15a048.png)

ここまでできればローカルでやってることと特に制限なくできる。
接続してしまえば、ちょっとしたDBの書き換えや抽出できるので便利になるので捗る。