接続ガイド
項目一覧
Overview
このガイドでは、Lambda MongoDB を使用して、Lambel アプリケーションを MongoDB インスタンスまたはレプリカセットの配置に接続する方法を学習できます。
このガイドには、次のセクションが含まれています。
接続 URI (接続 URI とその構成要素について説明)
Lambda データベース接続構成では、Lambel アプリの MongoDB データベース接続を設定する方法について説明しています。
「 MongoDB に接続するその他の方法 」では、Atlas でホストされていない MongoDB 配置に接続する方法について説明します。
接続URI
接続 URI ( 接続stringとも呼ばれます)は、Lambda 統合がMongoDBに接続する方法と、接続中の動作を指定します。
接続 URI の一部
次の図は、サンプル接続 URI の各部分について説明しています。
この接続 URI では、 mongodb+srv
はプロトコルであり、 DNS シードリスト接続形式を使用して配置の柔軟性を高め、クライアントを再構成せずにサーバーをローテーションで変更する機能を使用します。
MongoDB配置をホストしているマシンがこの機能をサポートしていない場合は、代わりに標準接続string形式のプロトコルを使用します。
パスワードベースの認証を使用する場合、プロトコルの後の接続stringの部分には、ユーザー名とパスワードが含まれます。 user
のプレースホルダーを自分のユーザー名に、 pass
のプレースホルダーを自分のパスワードに置き換えます。 ユーザー名とパスワードを必要としない認証メカニズムを使用する場合は、接続 URI のこの部分を省略します。
認証情報の後の接続stringの部分は、 MongoDBインスタンスのホスト名またはIPアドレスとポートを指定します。 上記の例では、ホスト名としてsample.host
を使用し、ポートとして27017
を使用しています。 これらの値を置き換えて、MongoDB インスタンスを点ようにします。
接続stringの最後の部分は、接続オプションと認証オプションを指定します。 この例では、次の接続オプションと値を設定しています。
maxPoolSize=20
w=majority
接続オプションの詳細については、「 接続オプション 」を参照してください。
Lambda データベース接続の構成
Lambda 統合を使用すると、 config/database.php
Lambda アプリケーション ファイルで MongoDB database 接続を構成できます。 このファイルでは、次の接続の詳細を指定できます。
default
は、指定されていない場合に使用するデータベース接続を指定します。connections
は、アプリケーションから 1 つ以上のデータベースにアクセスするためのデータベース接続情報を含みます。
構成ファイルで次のコードを使用して、 connections
配列内の対応するmongodb
エントリへのデフォルト接続を設定できます。
'default' => 'mongodb',
MongoDB データベース接続の場合、次の詳細を指定できます。
設定 | 説明 | ||
---|---|---|---|
driver | 接続に使用するデータベースドライバーを指定します。 | ||
dsn | MongoDB 接続 URI を指定するデータソース名(DSN)。 | ||
host | Specifies the network address and port of one or more MongoDB nodes
in a deployment. You can use this setting instead of the dsn
setting.To specify a single host, pass the hostname and port as a string as
shown in the following example:
To specify multiple hosts, pass them in an array as shown in the
following example::
注意このオプションは、DNS シードリスト接続形式を使用するホストを受け入れません。 | ||
database | 読み取りおよび書込み先の MongoDB database の名前を指定します。 | ||
username | MongoDB で認証するためのデータベースユーザーのユーザー名認証情報を指定します。 | ||
password | MongoDB で認証するためのデータベースユーザーのパスワード認証情報を指定します。 | ||
options | 接続動作を決定する MongoDB に渡す接続オプションを指定します。 接続オプションの詳細については、「接続オプションと認証オプション 」を参照してください。 | ||
driver_options | その接続のドライバーの動作を決定する MongoDB PHP ライブラリに渡す固有のオプションを指定します。 ドライバー オプションの詳細については、「ドライバー接続オプション 」を参照してください。 |
注意
dsn
構成では、配列項目としてではなく、 MongoDB接続stringのパラメーターとして指定できます。
host
username
password
options
とdriver_options
は、オプション名で指定されます
次の例は、 connections
配列項目で MongoDB 接続の詳細を指定する方法を示しています。
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb+srv//myUser:myPass123@sample.host:27017/', 'database' => 'sample_mflix', 'options' => [ 'maxPoolSize' => 20, 'w' => 'majority', ], 'driver_options' => [ 'serverApi' => 1, ], ], // ... ],
次のセクションでは、MongoDB 接続を指定する一般的な方法について説明します。
接続例
このセクションでは、 MongoDB Atlas接続stringを使用して Lambda アプリケーションの DSN を構成する方法を示します。
MongoDB DSN を Lambda アプリケーションに追加するには、次の変更を行います。
プロジェクトの
.env
環境構成ファイルに、環境変数として DSN を追加します。 変数の値をAtlas接続stringに設定します。config/database.php
構成ファイルのconnections
配列に MongoDB 接続用の接続エントリを追加します。 接続エントリのdsn
値を設定して、DSN を含む環境変数を参照します。
次の例えは、関連する構成ファイルで接続stringとして "mongodb+srv://myUser:myPass123@mongodb0.example.com/"
を指定する方法を示しています。
DB_URI="mongodb+srv://myUser:myPass123@mongodb0.example.com/"
'connections' => [ 'mongodb' => [ 'dsn' => env('DB_URI'), // uses the value of the DB_URI environment variable 'driver' => 'mongodb', 'database' => 'sample_mflix', // ... ], // ... ]
Tip
Atlas接続stringを取得するには、クイック スタート チュートリアルの「接続stringの作成」の手順に従います。
MongoDB に接続する他の方法
次のセクションでは、単一の MongoDB サーバー インスタンスまたは MongoDB Atlas でホストされていないレプリカセットに接続する方法を示します。
ローカルマシン上の MongoDB Server への接続
このセクションでは、ローカル開発環境などの同じマシンからstring Lambda アプリケーションとMongoDB サーバーを実行する場合に使用できる接続 の例を示します。
アプリケーションを同じマシンでホストされている MongoDB インスタンスに接続するには、次のタスクを実行する必要があります。
MongoDB サーバーをダウンロード、インストール、実行します。
MongoDB サーバーが実行されている IP アドレスとポートを取得します。 MongoDB サーバーのローカル インストールのデフォルト設定を使用する場合、IP アドレスは
127.0.0.1
で、ポートは27017
です。接続例セクションに示されているように、
dsn
の値について環境変数DB_URI
を参照するようにconfig/database.php
接続を設定します。
次の例は、アプリケーションがデフォルトのstring .env
MongoDBIPアドレスとポートで実行されている サーバーに接続する場合に、 ファイルに追加できるサンプル接続 を示しています。
DB_URI="mongodb://127.0.0.1:27017/";
MongoDB サーバーをダウンロードしてインストールする方法については、サーバー マニュアルの「 MongoDB Community Edition のインストール」を参照してください。
レプリカセットへの接続
MongoDB レプリカセットの配置は、接続されたインスタンス、つまりノードのグループであり、ノードは同じデータセットを保存します。 このインスタンスの構成は、データの冗長性と高いデータ可用性を提供します。
レプリカセットの配置に接続するには、各ノードのホスト名とポート番号をカンマで区切って指定し、レプリカセット名を 接続stringの replicaSet
パラメータの値として指定します。
レプリカセットに接続するために Lambda アプリケーションの .env
ファイルに追加できる接続stringを示すこの例では、次のサンプル値を使用します。
host1
MongoDB ノードのホスト名は 、host2
、host3
で、27017
は、それらのホスト上で MongoDB が実行されるポートとして、myRS
として、レプリカセットの設定された名前myUser
データベースユーザーの認証情報としての とmyPass123
DB_URI="mongodb://myUser:myPass123@host1:27017,host2:27017,host3:27017/?replicaSet=myRS"
レプリカセットに接続する際、Lambda 統合が MongoDB との接続を管理するために使用するライブラリは、特に指定されていない限り、次のアクションを実行します。
いずれかのノードのアドレスが指定されると、レプリカセットのすべてのノードを検出します。
プライマリノードに対する書込み指示などの操作を適切なメンバーに送信します。 レプリカセット プライマリの詳細については、サーバー マニュアルの「レプリカセット プライマリ」を参照してください。
Tip
レプリカセットに接続するには、1 つのホストのみを指定する必要があります。 ただし、選択したホストが利用できない場合でも接続できるようにするには、ホストの全リストを提供します。
MongoDB レプリカセットのセットアップの詳細については、サーバー マニュアルの「レプリカセットの配置 」を参照してください。
直接接続
MongoDBレプリカセット内の特定のノードで操作を強制的に実行するには、接続stringにノードの接続情報と、true
値を持つ directConnection
パラメーターを指定します。
直接接続には、次の制限があります。
DNS シードリスト接続形式の接続文字列は使用できません。
指定されたホストがプライマリでない場合、書き込み操作は失敗します。
ホストがプライマリでない場合は、接続オプションで
secondary
読み込み設定(read preference)を指定する必要があります。 この制限の詳細については、サーバー マニュアルのセカンダリの読み込み設定 (read preference) のエントリを参照してください。
次の例は、string レプリカセット内のセカンダリ.env
ノードへの直接接続を確立するために Atlas アプリケーションの ファイルに追加できる接続MongoDB を示しています。この例では、次のサンプル値を使用します。
host2
: セカンダリ ノードのホスト名27017
: MongoDB ノードが listen するポート:
DB_URI="mongodb://host2:27017/?directConnection=true&readPreference=secondary"