应用程序配置文件(旧版)
在此页面上
Overview
App Services 使用 JSON 文件和源代码文件来定义和配置应用程序的每个组件。 每个组件都有特定的配置文件模式,每个应用程序都使用标准文件结构来组织配置文件。
何时使用配置文件?
每个应用程序都由一组collection组成,因此每当创建或修改应用程序时都会使用应用程序文件。如果使用 App Services 用户界面,则很少会直接处理配置文件本身,但其他部署方法(例如App Services CLI和GitHub )允许您直接定义和编辑配置文件。
目录结构
下图显示了应用程序目录结构的高级视图:
yourRealmApp/ ├── config.json ├── secrets.json ├── auth_providers/ │ └── <provider name>.json ├── functions/ │ └── <function name>/ │ ├── config.json │ └── source.js ├── services/ │ └── <service name>/ │ ├── config.json │ ├── incoming_webhooks/ │ │ ├── config.json │ │ └── source.js │ └── rules/ │ └── <rule name>.json ├── triggers/ │ └── <trigger name>.json ├── hosting/ │ ├── metadata.json │ └── files/ │ └── <files to host> └── values/ └── <value name>.json
应用程序配置
应用程序级配置信息在应用程序根目录中存储的名为config.json
的单个文档中定义。
yourRealmApp/ └── config.json
配置
{ "app_id": "", "name": "", "security": { "allowed_request_origins": ["<Origin URL>"] }, "hosting": { "enabled": <boolean>, "custom_domain": "<Custom Domain Name>", "app_default_domain": "<Default Domain Name>" }, "custom_user_data_config": { "enabled": <Boolean> "mongo_service_id": "<MongoDB Service ID>", "database_name": "<Database Name>", "collection_name": "<Collection Name>", "user_id_field": "<Field Name>" } "deployment_model": "<Deployment Model Type>", "location": "<Deployment Cloud Region Name>", "config_version": <Version Number> }
字段 | 说明 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
app_id String | 应用程序的 App ID 。 | |||||||||||||||||||
name String | 应用程序的名称。 注意应用名称限制应用程序名称必须介于 1 到 32 个字符之间,并且仅包含 ASCII 字母、数字、下划线和连字符。 | |||||||||||||||||||
security Document | 包含应用程序级安全功能配置选项的文档。
| |||||||||||||||||||
hosting Document | 包含所有托管文件的配置选项的文档:
| |||||||||||||||||||
config_version Number | 应用程序中的所有配置文件都遵循的模式版本。 此值是机器生成的,通常不应手动设置或修改。 | |||||||||||||||||||
custom_user_data_config Document |
| |||||||||||||||||||
deployment_model String | ||||||||||||||||||||
location String |
对提供商进行身份验证
身份验证提供者在应用程序的/auth_providers
目录中定义。
每个提供商都在自己的 JSON 文件中定义,该文件以提供商命名。有关配置和使用特定身份验证提供者的详细信息,请参阅该提供商的参考页面。
yourRealmApp/ └── auth_providers/ └── <provider name>.json
配置
{ "id": "<Provider ID>", "name": "<Provider Name>", "type": "<Provider Type>", "disabled": <Boolean>, "config": { "<Configuration Option>": <Configuration Value> }, "secret_config": { "<Configuration Option>": "<Secret Name>" }, "metadata_fields": [{ "required": <Boolean>, "name": "Field Name" }] }
字段 | 说明 |
---|---|
id String | 唯一标识身份验证提供者的值。Atlas App Services 在创建提供商时会自动为提供商生成唯一 ID。 |
name String | 身份验证提供程序的名称。 |
type String | 身份验证提供程序的类型。 有效选项:
|
config Document | 包含特定于身份验证提供者的配置值的文档。此字段是否存在及其确切的配置字段取决于提供商类型。 |
secret_config Document | 一个文档,其中每个字段名称都是提供商的私有配置字段,每个字段的值都是存储配置值的密钥的名称。 |
metadata_fields Array<Document> | 文档数组,其中每个文档定义一个描述用户的元数据字段。 该字段是否存在以及每个元数据字段文档的确切格式取决于提供商类型。 |
disabled Boolean | 如果 true ,则您的应用程序未启用此身份验证提供者,因此无法使用。 |
功能
Atlas Function 在应用程序/functions
目录的子目录中定义。 每个函数都映射到与该函数同名的子目录。
每个函数都在config.json
中配置,其源代码在source.js
中定义。
yourRealmApp/ └── functions/ └── <function name>/ ├── config.json └── source.js
配置
{ "id": "<Function ID>", "name": "<Function Name>", "private": <Boolean>, "can_evaluate": <Rule Expression>, "disable_arg_logs": <Boolean>, "run_as_system": <Boolean>, "run_as_user_id": "<App Services User ID>", "run_as_user_id_script_source": "<Function Source Code>" }
字段 | 说明 |
---|---|
id String | 唯一标识函数的值。 App Services 在创建函数时会自动生成函数的唯一 ID。 |
name String | 函数的名称。 在应用程序的所有函数中,该名称必须是唯一的。 |
private Boolean | 如果 true ,则只能从 HTTPS endpoints、规则和命名函数访问此函数。 |
can_evaluate Document | 当允许执行函数以响应给定请求时,规则表达式的计算结果为 true 。 |
disable_arg_logs Boolean | 如果 true ,则 App Services 将省略为函数执行日志条目中的函数提供的参数。 |
run_as_system Boolean | If true , this function runs as the system user. 这会覆盖为run_as_user_id 和run_as_user_id_script_source 定义的任何值。 |
run_as_user_id String | 函数执行时始终使用的App Services 用户的唯一 ID。 不能与 run_as_user_id_script_source 一起使用。 |
run_as_user_id_script_source String |
源代码
exports = function() { // function code };
MongoDB 服务
链接到应用程序的每个MongoDB Atlas 数据源都被配置为/services
目录中的服务。 每个数据源都映射到自己的与服务同名的子目录。
MongoDB Atlas 数据源的主服务配置是config.json
,它定义了连接参数和同步规则。
如果数据源不是同步集群或联合数据库实例,则可以在/rules
目录中定义collection规则。
yourRealmApp/ └── services/ └── <MongoDB Service Name>/ ├── config.json └── rules/ └── <rule name>.json
重要
MongoDB 服务名称不一定与其在 Atlas 中链接的数据源的名称相同。 将数据源链接到应用程序时,可以定义该数据源的服务名称。 对于关联集群,默认 MongoDB 服务名称为mongodb-atlas
。 对于联合数据源,默认服务名称为mongodb-datafederation
。
服务配置
链接 Atlas 集群的配置文件应采用以下形式:
{ "id": "<Service ID>", "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean>, "sync": <Sync Configuration> } }
联合数据源的配置文件应采用以下形式:
{ "id": "<Service ID>", "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
config.dataLakeName
和config.clusterName
中的一个为必填项,具体取决于您要链接的是集群还是联合数据源。
字段 | 说明 |
---|---|
id String | 唯一标识服务的字符串。 创建 MongoDB 服务时,App Services 会自动为其生成唯一 ID。 |
name String | 服务名称。 该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。 对于集群,默认名称为 mongodb-atlas 。 对于联合数据源,该值为mongodb-datafederation 。 |
type String | 对于 MongoDB Atlas 集群,此值始终为 "mongodb-atlas" 。 对于联合数据源,此值为"datalake" 。 |
config.clusterName String | 链接集群时必需。 MongoDB Atlas 中服务的关联集群的名称。 |
config.dataLakeName String | 链接联合数据源时必需。 要链接到应用程序的实例的名称。 |
config.readPreference String | 通过服务发送的查询的读取偏好(read preference)模式。不适用于联合数据源。 |
config.sync Document |
同步集群配置
config.json
的config.sync
字段确定集群是否已同步,如果已同步,则定义集群上同步操作的规则。
{ ..., "config": { ..., "sync": { "state": <Boolean>, "development_mode_enabled": <Boolean>, "database_name": "<Development Mode Database Name>", "partition": { "key": "<Partition Key Field Name>", "type": "<Partition Key Value Type>", "permissions": { "read": <JSON Expression>, "write": <JSON Expression> } } } } }
字段 | 说明 |
---|---|
sync.state Boolean | |
sync.development_mode_enabled Boolean | 如果为 true ,则为集群启用开发模式。 启用后,Atlas App Services 会将同步对象存储在集群内的特定数据库中,并镜像该数据库的 collection 中的 Realm 对象类型。 |
sync.database_name String | 同步集群中 App Services 应存储同步对象的数据库的名称。 启用开发模式后,App Services 会将同步对象存储在此数据库中。 每种 Realm 对象类型都映射到数据库中自己的 collection,具有与同步对象匹配的模式。 |
sync.partition.key String | 将数据映射到各个同步的 Realm 的分区键字段的名称。 |
sync.partition.type String | 分区键字段值的类型。 |
sync.partition.permissions Document | 一个文档,用于定义同步集群的 read 和write 权限。 权限使用规则表达式定义,App Services 将按用户、按分区计算这些规则表达式。 表达式可以使用%%user 和%%partition 扩展。 |
MongoDB collection 规则(非同步)
对于非同步集群,您可以定义 App Services 为每个请求动态评估的 collection-level 规则。每个集合的规则都存储在该集合配置子目录(即data_sources/<data-source-name>/<database-name>/<collection-name>/
中的rules.json
文件中。
注意
联合数据源不支持规则或模式。只能通过系统函数访问联合数据源。
{ "id": "<Rule ID>", "database": "<Database Name>", "collection": "<Collection Name>", "roles": [<Role>], "schema": <Document Schema>, "filters": [<Filter>], }
字段 | 说明 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id String | 唯一标识trigger的字符串。创建触发器时,App Services 会自动为触发器生成唯一 ID。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
database String | 保存该collection的数据库的名称。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
collection String | 集合的名称。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
roles Array<Document> | 角色配置文档的数组,其形式如下:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
schema Document | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
filters Array<Document> | 筛选器配置文档的数组,其形式如下:
|
外部服务
第三方服务在/services
目录中定义。 每个服务都映射到自己的同名子目录。
每个服务目录包含以下内容:
config.json
:服务配置文件/rules
:服务规则配置的子目录/incoming_webhooks
:Webhook 配置的子目录(如果服务支持 Webhook,即 HTTP、GitHub 或 Twilio)
yourRealmApp/ └── services/ └── <services name>/ ├── config.json ├── incoming_webhooks/ │ ├── config.json │ └── source.js └── rules/ └── <rule name>.json
服务配置
{ "id": "<Service ID>", "name": "<Service Name>", "type": "<Service Type>", "config": { "<Configuration Option>": <Configuration Value> }, "secret_config": { "<Configuration Option>": "<Secret Name>" }, }
字段 | 说明 |
---|---|
id String | 唯一标识服务的字符串。 Atlas App Services 在创建服务时会自动为其生成唯一 ID。 |
name String | 服务名称。 该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。 |
type String | 服务的类型。 有效选项:
|
config Document | 包含映射到服务其他配置选项的字段的文档。确切的配置字段取决于服务 |
secret_config Document | 一个文档,其中每个字段名称都是服务的私有配置字段,每个字段的值都是存储配置值的密钥的名称。 |
服务规则
针对特定外部服务的规则在/<service
name>/rules
子目录中定义。
每条规则都映射到与该规则同名的 JSON 文件。
{ "id": "<Rule ID>", "name": "<Rule Name>", "actions": ["<Service Action Name>"], "when": <JSON Rule Expression> }
字段 | 说明 |
---|---|
id String | 唯一标识规则的字符串。 App Services 在创建规则时会自动生成规则的唯一 ID。 |
name String | 服务规则的名称。 该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。 |
actions Array<String> | 应用规则的服务操作列表。 可用的具体操作取决于服务 type 。 |
when Document | 当规则应用于给定请求时,规则表达式的计算结果为 true 。 |
和传入网络钩子,
特定服务的传入网络钩子在/<service name>/incoming_webhooks/
子目录中定义。
传入的 Webhook 使用与函数相同的配置格式,但具有额外的配置参数。
配置
{ "id": "<Function ID>", "name": "<Function Name>", "private": <Boolean>, "can_evaluate": <Rule Expression>, "disable_arg_logs": <Boolean>, "run_as_system": <Boolean>, "run_as_user_id": "<App Services User ID>", "run_as_user_id_script_source": "<Function Source Code>", "respond_result": <Boolean>, "options": { "httpMethod": "<HTTP Method>", "validationMethod": "<Webhook Validation Method>", "secret": "<Webhook Secret>" } }
字段 | 说明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id String | 唯一标识函数的值。 App Services 在创建函数时会自动生成函数的唯一 ID。 | |||||||||||||
name String | 函数的名称。 在应用程序的所有函数中,该名称必须是唯一的。 | |||||||||||||
private Boolean | 如果 true ,则只能从传入的 Webhook、规则和命名函数访问此函数。 | |||||||||||||
can_evaluate Document | 如果允许执行函数以响应给定请求,则规则表达式的计算结果为 true 。 | |||||||||||||
disable_arg_logs Boolean | 如果 true ,则 App Services 将省略为函数执行日志条目中的函数提供的参数。 | |||||||||||||
run_as_system Boolean | ||||||||||||||
run_as_user_id String | 函数执行时始终使用的App Services 用户的唯一 ID。 不能与 run_as_user_id_script_source 一起使用。 | |||||||||||||
run_as_user_id_script_source String | ||||||||||||||
respond_result Boolean | 如果 true ,则 App Services 将 Webhook 函数返回值作为 HTTP 响应正文包含在内,发送到发起 Webhook 请求的客户端。 | |||||||||||||
options Document | 包含 Webhook 配置选项的文档。
|
源代码
exports = function() { // webhook function code };
Triggers
Atlas Triggers在应用程序的/triggers
目录中定义。
每个trigger都在自己的 JSON 文件中定义,其名称与trigger相同。
yourRealmApp/ └── triggers/ └── <trigger name>.json
配置
{ "id": "<Trigger ID>", "name": "<Trigger Name>", "type": "<Trigger Type>", "function_name": "<Trigger Function Name>", "config": { "<Configuration Option>": <Configuration Value> }, "disabled": <Boolean>, }
字段 | 说明 |
---|---|
id String | 唯一标识trigger的字符串。Atlas App Services 在创建trigger时会自动为trigger生成唯一 ID。 |
name String | trigger的名称。该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。 |
type String | |
function_name String | 触发器每次触发时执行的 Atlas Function 的名称。 触发器根据触发器 type 自动将参数传递给函数。 |
config Document | |
disabled Boolean | 如果为 true ,trigger将不会侦听任何事件,也不会触发。 |
托管
您想要在 Atlas App Services 上托管的文件应包含在应用程序的/hosting
目录中。 上传的每个文件都将附带metadata.json
中定义的元数据。
您可以在metadata.json
中配置每个托管文件的元数据。 此元数据配置文件是一个文档数组,每个文档都对应于单个托管文件的元数据属性。
yourRealmApp/ └── hosting/ ├── metadata.json └── files/ └── <files to host>
元数据配置
[ { "path": "<File Resource Path>", "attrs": [{ "name": "<Attribute Type>", "value": "<Attribute Value>" }] } ]
字段 | 说明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
path String | 文件的资源路径。 | ||||||||||
attrs Array<Document> | 文档数组,其中每个文档代表一个元数据属性。 属性文档具有以下形式: 元数据属性文档
|
注意
如果您没有为托管文件指定Content-Type
元数据属性,Atlas App Services 将尝试根据文件扩展名自动向其添加Content-Type
属性。
例如,App Services 会自动将属性Content-Type: application/html
添加到文件myPage.html
中。
Values
值在应用程序的/values
目录中定义。
每个值都在以该值命名的自己的 JSON 文件中定义。
yourRealmApp/ └── values/ └── <value name>.json
配置
{ "id": "<Value ID>", "name": "<Value Name>", "from_secret": <boolean>, "value": <Stored JSON Value|Secret Name> }
字段 | 说明 |
---|---|
id String | 唯一标识该值的字符串。 Atlas App Services 在您创建值时自动为值生成唯一 ID。 |
name String | 值的唯一名称。 此名称是在函数和规则中引用值的方式。 |
from_secret Boolean | |
value String, Array, or Object | 引用该值时 App Services 公开的存储数据。 如果 如果 |