Docs 菜单
Docs 主页
/ /
Atlas App Services
/

连接到Edge Server - 预览

在此页面上

  • 从 连接到Edge ServerAtlas Device SDK
  • 支持的身份验证提供程序
  • 在边缘服务器之间漫游
  • 示例:SwiftUI 模板应用
  • 使用Edge Server MongoDB驱动程序和工具连接到
  • 匿名连接
  • 支持的 MongoDB API
  • 连接MongoDB Compass

Edge Server实例配置完成并运行后,您可以从客户端应用程序连接到该实例。

您可以通过三种方式从客户端连接到Edge Server实例:

  • Atlas Device SDK : Device Sync自动跨设备同步数据以及与Edge Server同步数据。

  • MongoDB驱动程序和工具:使用支持的CRUD MongoDBAPI 子集执行 操作。

  • MongoDB Compass :探索同步到Edge Server实例的文档,并对这些文档进行更新。

要从Edge Server Atlas Device SDK客户端连接到 实例,您的应用必须:

  • 将应用配置上的同步 URL 设置为您在边缘服务器edge_config.json baseURL字段中设置的可公开访问的 DNS 地址。

  • 如果未启用 TLS,请通过端口 80 使用 HTTP。

提示

当您的边缘服务器部署处于开发阶段时,为简单起见,我们建议通过端口 80 使用 HTTP 进行连接。 在投入生产之前,您可以与产品或客户代表协调,使用自签名证书配置 HTTPS。

有关自定义应用配置的信息,请参阅首选 SDK 的文档:

在与 SDK 连接时, Edge Server目前支持以下身份验证提供者子集:

SDK 客户端可以在Edge Server实例之间漫游,或者在Edge Server实例和Atlas之间漫游。

漫游需要更改客户端应用配置中的基本URL 。 有关详细信息,请参阅上面链接的 SDK 文档。

当 SDK 用户漫游时,客户端应用必须在连接到新服务器时执行客户端重置。 有关客户端重置的更多信息,请参阅客户端重置。

在Edge Server实例之间或Edge Server实例和Atlas之间漫游时,匿名用户不会跨服务器持久存在。 Atlas 为客户端连接到的每个服务器创建一个新的匿名用户,并且不会在服务器之间持久保存本地数据。

对于所有其他受支持的身份验证提供程序,用户会持久存在并可以跨服务器访问权限预期数据。

要使用模板应用快速进行概念证明,您可以对 Swift 模板应用 进行如下修改 连接到Edge Server 实例:

1

在 Swift 模板应用的atlasConfig中,将值设置为:

baseUrl
Edge Server实例主机的可公开访问的 DNS。 这是http:// ,如果启用了 TLS,则为 ,后跟https:// IPEdge Server容器配置中公开的 地址。
appId
已启用边缘服务器的 App Services App 的应用程序 ID。有关查找应用程序 ID的更多信息,请参阅查找您的应用程序 ID。
2

如果您的应用使用 TLS,则可以忽略此步骤。 如果您正在开发边缘服务器应用程序,并且在开发过程中未启用 TLS,则必须完成此步骤。

对于 iOS,Apple 默认禁用不安全连接。 您必须为可公开访问的 DNS 添加例外,以允许客户端应用程序连接到它。

选择应用目标,然后Go到 Signing & Capabilities标签页。 按+ Capability按钮,然后搜索App Transport Security Settings 。 将其添加到您的应用中。

为可公开访问的 DNS 添加例外域。 这应该只是字符串域,类似于: ec2-13-58-70-88.us-east-2.compute.amazonaws.com

这会在您的项目中创建一个Info.plist文件。 Go 到此 文件 进行以下调整。

将此String键更改为Dictionary 。 再添加两个键:

类型
NSIncludesSubdomains
布尔
YES
NSExceptionAllowsInsecureHTTPLoads
布尔
YES

这会使您的 iOS 客户端连接到不安全的 HTTP DNS。

您的Info.plist文件应类似于以下内容:

显示上述设置的 Info.plist 文件的屏幕截图
3

如果您想获取有关与边缘服务器通信状态的其他详细信息,可以调整日志级别。

App文件中,您可以添加.onAppear区块来设置日志级别。 在此区块中添加日志级别行以获取其他信息:

var body: some Scene {
WindowGroup {
ContentView(app: app)
.environmentObject(errorHandler)
.alert(Text("Error"), isPresented: .constant(errorHandler.error != nil)) {
Button("OK", role: .cancel) { errorHandler.error = nil }
} message: {
Text(errorHandler.error?.localizedDescription ?? "")
}
.onAppear {
Logger.shared.level = .trace
}
}
}

有关设置日志级别的更多信息,请参阅日志记录 - Swift SDK。

4

现在您可以构建并运行应用。 登录,该应用会连接到Edge Server实例。 当您创建新项目时,这些项目会与实例同步。 然后,该实例与Atlas App Services App 同步。

您可以从托管检查Edge Server实例的状态。 在客户端运行时,您可以在实例状态中看到"num_local_clients": 1 。 您还可以看到同步状态中反映的错误消息。

下次Edge Server实例与您的App Services App同步后,您可以看到同步的更改反映在链接的Atlas集合中。

重要

如果您以前使用 Device Sync 直接从客户端连接到 App Services App,则可能需要清除模拟器或设备上的状态。 重置缓存使客户端能够连接到Edge Server实例。

在控制台应用程序中,删除mongodb-realm目录。 如果您使用的是 iOS 或 Android 模拟器或设备,请卸载并重新安装该应用。

您可以使用标准 MongoDB 驱动程序和工具连接到边缘服务器。 客户端使用专门的 MongoDB URI 连接字符串连接到边缘服务器并发送请求。

传输协议服务器接受这些传入连接。 您可以使用MongoDB URI 连接到托管。

此 URI 可能因身份验证类型而异。 从广义上讲,它类似于以下形式:

mongodb://<username>:<password>@<hostname>:<port>?authMechanism=PLAIN
元素
说明
<username>
Atlas user的用户名。 对于电子邮件/密码用户,这可能类似于first.last@example.com 。 如果此用户名包含@符号,则必须对@符号进行转义。 例如, john.doe@example.com变为john.doe%40example.com
<password>
Atlas user的密码。 这可能看起来与myPassword123456类似。
<hostname>
Edge Server托管的公共 DNS。 在本地开发中,这可能是localhost 。 否则,它可能看起来类似于ec2-13-58-70-88.us-east-2.compute.amazonaws.com 。 有关详细信息,请参阅安装和配置Edge Server实例。
<port>
Edge Server传输协议侦听端口。 默认端口为27021 。 有关详细信息,请参阅安装和配置Edge Server实例。
authMechanism=PLAIN
身份验证机制。 目前,唯一支持的值为PLAIN

例子

EC 上托管的 实例的传输协议连接 URIEdge Server Amazon2可能如下所示:

mongodb://example-user:my-password@ec2-13-58-70-88.us-east-2.compute.amazonaws.com:27021?authMechanism=PLAIN

您可以启用匿名连接,并在不指定用户名或密码的情况下进行连接。 默认情况下,此选项处于禁用状态。

重要

在生产环境中禁用匿名连接

启用匿名连接可以绕过身份验证流程,从而简化开发过程。 这仅用于帮助开发;不要在生产环境中绕过身份验证流程。

1

要启用匿名连接,请启动Edge Server ,并将 --insecure-disable-auth 标志设立为 true。 这样您就可以在不指定用户名和密码的情况下进行连接。

默认情况下,此设置为false 。 将此项设置为true可以使连接绕过身份验证。

有关使用 edgectl 配置和启动Edge Server实例的详细信息,请参阅安装和配置Edge Server实例。

2

在未经身份验证的情况下进行连接时, MongoDB URI 会省略与身份验证相关的参数。 这个简化的 URI 是:

mongodb://<hostname>:<port>

例子

EC 上托管的 实例的匿名传输协议连接 URIEdge Server Amazon2可能如下所示:

mongodb://ec2-13-58-70-88.us-east-2.compute.amazonaws.com:27021

开发期间与计算机上运行的Edge Server实例的匿名连接可能类似于:

mongodb://localhost:27021

Edge Server目前支持MongoDB API 的子集。 有关支持的 API 的信息,请参阅Edge Server MongoDB API支持 - 预览。

您可以通过 使用Edge Server MongoDBURIMongoDB Compass 连接到 实例。Compass使您能够浏览同步到Edge Server实例的文档,并对这些文档进行更新。

Edge Server对Compass的支持是有限的。 您可以将其用于:

  • 浏览Edge Server实例中的数据库、集合和文档。

  • CRUD对 实例中的文档执行基本Edge Server 操作。

Edge Server目前不支持与Compass进行聚合。

后退

配置边缘服务器