Docs Menu
Docs Home
/ / /
Lambda MongoDB
/ /

接続ガイド

項目一覧

  • Overview
  • 接続URI
  • 接続 URI の一部
  • Lambda データベース接続の構成
  • 接続例
  • MongoDB に接続する他の方法
  • ローカルマシン上の MongoDB Server への接続
  • レプリカセットへの接続

このガイドでは、Lambda MongoDB を使用して、Lambel アプリケーションを MongoDB インスタンスまたはレプリカセットの配置に接続する方法を学習できます。

このガイドには、次のセクションが含まれています。

  • 接続 URI (接続 URI とその構成要素について説明)

  • Lambda データベース接続構成では、Lambel アプリの MongoDB データベース接続を設定する方法について説明しています。

  • 接続例 接続 を使用してMongoDB Atlasstringに接続する方法を示す例えを示します。

  • MongoDB に接続するその他の方法 」では、Atlas でホストされていない MongoDB 配置に接続する方法について説明します。

接続 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 統合を使用すると、 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:
'host' => 'myhost.example.com:27017',
To specify multiple hosts, pass them in an array as shown in the following example::
'host' => ['node1.example.com:27017', 'node2.example.com:27017', 'node3.example.com:27017'],

注意

このオプションは、DNS シードリスト接続形式を使用するホストを受け入れません。

database
読み取りおよび書込み先の MongoDB database の名前を指定します。
username
MongoDB で認証するためのデータベースユーザーのユーザー名認証情報を指定します。
password
MongoDB で認証するためのデータベースユーザーのパスワード認証情報を指定します。
options
接続動作を決定する MongoDB に渡す接続オプションを指定します。 接続オプションの詳細については、「接続オプションと認証オプション 」を参照してください。
driver_options
その接続のドライバーの動作を決定する MongoDB PHP ライブラリに渡す固有のオプションを指定します。 ドライバー オプションの詳細については、「ドライバー接続オプション 」を参照してください。

注意

dsn 構成では、配列項目としてではなく、 MongoDB接続stringのパラメーターとして指定できます。

  • host

  • username

  • password

  • optionsdriver_optionsは、オプション名で指定されます

次の例は、 connections配列項目で MongoDB 接続の詳細を指定する方法を示しています。

config/database.config 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/" を指定する方法を示しています。

サンプル .env 環境構成
DB_URI="mongodb+srv://myUser:myPass123@mongodb0.example.com/"
サンプル config/database.html 接続エントリ
'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 Atlas でホストされていないレプリカセットに接続する方法を示します。

このセクションでは、ローカル開発環境などの同じマシンからstring Lambda アプリケーションとMongoDB サーバーを実行する場合に使用できる接続 の例を示します。

アプリケーションを同じマシンでホストされている MongoDB インスタンスに接続するには、次のタスクを実行する必要があります。

  • MongoDB サーバーをダウンロード、インストール、実行します。

  • MongoDB サーバーが実行されている IP アドレスとポートを取得します。 MongoDB サーバーのローカル インストールのデフォルト設定を使用する場合、IP アドレスは127.0.0.1で、ポートは27017です。

  • 接続例セクションに示されているように、 dsnの値について環境変数DB_URIを参照するようにconfig/database.php接続を設定します。

次の例は、アプリケーションがデフォルトのstring .envMongoDBIPアドレスとポートで実行されている サーバーに接続する場合に、 ファイルに追加できるサンプル接続 を示しています。

サンプル .env ローカル MongoDB サーバーに接続するための環境構成。
DB_URI="mongodb://127.0.0.1:27017/";

MongoDB サーバーをダウンロードしてインストールする方法については、サーバー マニュアルの「 MongoDB Community Edition のインストール」を参照してください。

MongoDB レプリカセットの配置は、接続されたインスタンス、つまりノードのグループであり、ノードは同じデータセットを保存します。 このインスタンスの構成は、データの冗長性と高いデータ可用性を提供します。

レプリカセットの配置に接続するには、各ノードのホスト名とポート番号をカンマで区切って指定し、レプリカセット名を 接続stringの replicaSet パラメータの値として指定します。

レプリカセットに接続するために Lambda アプリケーションの .env ファイルに追加できる接続stringを示すこの例では、次のサンプル値を使用します。

  • host1MongoDB ノードのホスト名は 、 host2host3で、

  • 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 するポート:

サンプル .env 直接接続を有効にするための 環境構成
DB_URI="mongodb://host2:27017/?directConnection=true&readPreference=secondary"

戻る

接続