1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2 で Amazon DocumentDB を使う

Last updated at Posted at 2019-07-23

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証明書 で接続ができました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?