mongoシェル をインストール
以下のコマンドを EC2 実行します。
echo -e "[mongodb-org-3.6] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc" | sudo tee /etc/yum.repos.d/mongodb-org-3.6.repo
yum install -y mongodb-org-shell
mongoシェル の動作確認
wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
mongo --ssl --host xxx.ap-northeast-1.docdb.amazonaws.com:27017 --sslCAFile rds-combined-ca-bundle.pem --username your_name --password your_password
※ xxx.ap-northeast-1.docdb.amazonaws.com
の部分は、DocumentDB の クラスターのエンドポイントを入力する。
※ your_name
は DocumentDB を作成したときのユーザー名を入力する
※ your_password
は DocumentDB を作成したときのパスワードを入力する
php-pecl-mongodb をインストールする
★ remi リポジトリから php がインストールしてある状態
はじめは、以下コマンドで実行しました。
yum install --disablerepo=amzn-main --enablerepo=remi-php70 php-pecl-mongodb
が、 scl-utils
がないというエラーが表示されるので、先にパッケージを追加します。
rpm -Uvh ftp://ftp.scientificlinux.org/linux/scientific/6.4/x86_64/updates/fastbugs/scl-utils-20120927-8.el6.x86_64.rpm
再度、以下コマンドを実行しました。
yum install --disablerepo=amzn-main --enablerepo=remi-php70 php-pecl-mongodb
が、 snappy
がないというエラーが表示されるので、 --disablerepo=amzn-main
を削除して実行します。
yum install --enablerepo=remi-php70 php-pecl-mongodb
php-pecl-mongodb の動作確認
$dns = 'mongodb://your_name:your_password@xxx.ap-northeast-1.docdb.amazonaws.com:27017/?replicaSet=rs0';
$urlOptions = [
'ssl' => true
];
$driverOptions = [
'ca_file' => '/path/to/rds-combined-ca-bundle.pem'
];
$manager = new \MongoDB\Driver\Manager($dns, $urlOptions, $driverOptions);
$bulk = new \MongoDB\Driver\BulkWrite;
$bulk->insert(['name' => 'qiita']);
$manager->executeBulkWrite('database_name.collection_name', $bulk);
以下を設定すると、エラーログにデバッグ情報が出力されるので、接続できない場合などに何や役立つかも・・・
ini_set('mongodb.debug', 'stderr');
公式ライブラリを使う
composer require mongodb/mongodb
$dns = 'mongodb://your_name:your_password@xxx.ap-northeast-1.docdb.amazonaws.com:27017/?replicaSet=rs0'
$uriOptions = ['ssl' => true];
$driverOptions = ['ca_file' => '/path/to/rds-combined-ca-bundle.pem'];
$client = new \MongoDB\Client($dns, $uriOptions, $driverOptions);
$db = $client->selectDatabase('database_name');
$collections = $db->listCollections();
ローカルマシンからの接続(GUI)
MongoDB Compass
であれば、 SSH接続でEC2踏み台経由 & SSL証明書 で接続ができました。