AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Google Cloud での接続の管理

Google Cloud PlatformFunctions Atlasを使用して、 クラスターを操作できますGoogle Cloud Platform および の実行。

次のベストプラクティスを使用して、 Google Cloud Platform関数とAtlasの間の接続を適切に管理します。

  • 関数スコープのデータベース接続ではなく、グローバルスコープのデータベース接続を使用して Cloud Function を作成します。

    関数を呼び出すたびに新しいクライアントオブジェクトを定義しないでください。定義すると、ドライバーは関数を呼び出すごとに新しいデータベース接続を作成します。こうなると、コストが高くなり、アプリケーションがデータベース接続制限を超えてしまう可能性があります。最高のパフォーマンスを得るには、次のガイドラインに従ってください。

    1. クライアントオブジェクトを一度だけ作成します。

    2. オブジェクトを保存し、関数の呼び出し全体でクライアントを再利用できるようにします。

    この接続例では、既存のデータベース接続を再利用して、データベースとの通信を高速化し、データベースへの接続数をアプリケーション トラフィックに関して適切なレベルに維持します。

    多数のシャードを含むシャーディングされたクラスターに接続する関数がある場合、パフォーマンスの問題が発生する可能性があります。例、シャーディングされた Atlas クラスターが 10 個ある場合、ドライバーはデフォルトで 30 個の インスタンスすべてに接続します。接続文字列に オプションを使用して、ドライバーが接続するホストの最大数を設定できます。ドライバーのパフォーマンスを向上させるには、mongos を設定します。srvMaxHosts srvMaxHosts=3(例: )。

    mongodb+srv://<db_username>:<db_password>@<clusterName>.mongodb.net/?retryWrites=true&w=majority&srvMaxHosts=3

    接続オプション」を参照してください。

  • Atlas クラスターへのネットワーク アクセスを制限します。

    クラスターと Atlas関数間の ネットワークピアリング接続 を使用してプライベート ネットワーク経由でAtlasGCP クラスターに接続するか、または IPプライベートエンドポイント を使用して、 アクセスIP リスト からプライベート アドレスのみを許可できるようにします。

    プライベートネットワークを使用しない場合は、NAT ゲートウェイ 経由で Atlas クラスターに接続することを検討してください。それ以外の場合は、すべてのIPアドレス(...0 000/0 )に Atlas クラスターへのアクセスを許可する必要があります。

    警告

    などの /0CIDR を追加すると、あらゆる場所からアクセスできるようになります。この構成では、配置を不正アクセス、データの抽出、その他の悪意のあるアクティビティにつながる可能性があります。可能な場合は常に信頼できるIPアドレスまたは 0.0.0.0/0CIDR 範囲へのアクセスを制限し、パブリック インターネットからのアクセスを許可する場合は、すべてのデータベースユーザーについて強力な認証情報を使用します。

    注意

    プロジェクトアクセスリストに IPv4 /0 CIDR(たとえば、0.0.0.0/0 または 10.0.0.0/0)を追加すると、Atlas は、そのプロジェクトに直接ロールが付与されているすべてのユーザー、またはチーム(そのチームにプロジェクトのロールが付与されている場合)を通じて間接的にロールが付与されているすべてのユーザーに、警告メールを送信します。

  • maxIdleTimeMS 60000を1 に設定すると、アイドルタイムが 分経過した後に接続が自動的に閉じられます。 を調整すると、サーバーレス関数からのタイムアウトmaxIdleTimeMS エラーの発生を減らすことができます。
  • 同時実行性を構成します。 新しいGoogle Cloud Platform関数を作成すると、

    • 複数の同時リクエストを処理できる2nd gen環境を選択します。 2と 生成では、関数が多数の同時呼び出しで単一のMongoClientを共有できるようにすることで、サーバーの接続負荷も軽減されます。

    • 同時実行設定を増やすと、コールド スタートが最小限に抑えられ、レイテンシが改善されます。

    注意

    同時実行設定を増やす場合は、最高のパフォーマンスを得るために CPU を増やす必要がある場合があります。詳細については、同時実行性 を参照してください。

次の例では、Node.js Google Cloud Platform 関数を Atlas配置に接続します。 <YOUR-ATLAS-CONNECTION-STRING> を Atlas 接続文字列に置き換えます。

const { MongoClient } = require('mongodb');
let client;
async function getConnection() {
if (!client) {
const client = new MongoClient('<YOUR-ATLAS-CONNECTION-STRING>');
client.on('connectionCreated', () => {
console.log('New connection created successfully.');
});
// Connect to the database in the global scope
await client.connect();
}
return client;
}