对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

使用 AWS Lambda 管理连接

使用以下最佳实践来正确管理AWS Lambda和Atlas之间的连接:

  • 在 AWS Lambda处理程序函数之外定义MongoDB服务器的客户端。

    请勿在每次调用函数时都定义新的客户端对象。这样做会导致驱动程序在每次函数调用时创建一个新的数据库连接。这可能会产生高昂的成本,并可能导致应用程序超出数据库连接限制。为获得最佳性能,请遵循以下准则:

    1. 创建一次客户端对象。

    2. 存储该对象,以便函数可以跨函数调用重复使用客户端。

    连接示例重复使用现有数据库连接来加快与数据库的通信,并将数据库连接计数保持在相对于应用程序流量的合理水平。

  • 如果您有一个连接到具有许多分片的分片集群的Lambda函数,则可能会遇到性能问题。示例,对于有 10 个分片的集群,驾驶员默认连接到所有 30 个 mongos 实例。您可以在连接字符串中使用 srvMaxHosts 选项来设立驾驶员连接到的主机的最大数量。要提高驾驶员性能,设立srvMaxHosts=3。示例:
    mongodb+srv://<db_username>:<db_password>@<clusterName>.mongodb.net/?retryWrites=true&w=majority&srvMaxHosts=3

注意

如果您将任何 IPv4 /0 CIDR(例如 0.0.0.0/0 或 10.0.0.0/0)添加到项目访问列表中,Atlas 会向所有直接被授予该项目角色的用户发送告警邮件;对于通过团队成员身份间接获得项目角色的用户(前提是该团队已被授予项目角色),Atlas 也会发送告警邮件。

  • 将 maxIdleTimeMS 设置为 60000,可在 1 分钟的空闲时间后自动关闭连接。调整 maxIdleTimeMS 有助于减少无服务器函数发生超时错误的概率。
  • 设置统一 AWS 访问权限,并尽可能使用 AWS IAM身份验证。

    您可以使用 AWS IAM 角色连接到Atlas集群,而不是在Lambda中硬编码您的凭证。任何访问您的 AWS Lambda环境的人都可以查看硬编码凭证,这可能会带来安全风险。使用 AWS IAM身份验证, Atlas可通过假定的 IAM角色访问 AWS Lambda ,因此您无需在连接字符串中凭证。

    Atlas支持对运行MongoDB 7.0 或更高版本的集群进行 AWS IAM身份验证。如果您的集群符合要求,则强烈建议对Lambda连接使用 AWS IAM身份验证。

  • 分配给Lambda函数的内存量默认为 128 MB。您可以在 128 MB 到 10 240 MB 之间配置分配给Lambda函数的内存量。确保分配足够的内存。增加内存以增加可用虚拟 CPU 的数量并提高MongoDB驾驶员性能。要学习;了解更多信息,请参阅内存和计算能力。

  • 设置 AWS_STS_REGIONAL_ENDPOINTS 和 AWS_REGION 环境变量。

#include <mongoc/mongoc.h>
void lambda_handler ()
{
bson_error_t error;
mongoc_init();
// Parse URI
char *uri_string = "your-mongodb-atlas-connection-string";
mongoc_uri_t *uri = mongoc_uri_new_with_error (uri_string, &error);
if (!uri) {
fprintf (stderr, "Failed to parse URI: %s\n", error.message);
return;
}
// Create client
mongoc_client_t *client = mongoc_client_new_from_uri_with_error(uri, &error);
if (!client) {
fprintf(stderr, "Failed to create client: %s\n", error.message);
return;
}
// Perform client operations here
// Cleanup
mongoc_client_destroy(client);
mongoc_uri_destroy (uri);
mongoc_cleanup();
}
给本页内容打分