Docs 菜单

Docs 主页Atlas App Services

应用程序配置文件(旧版)

在此页面上

  • 概述
  • 何时使用配置文件?
  • 目录结构
  • 应用程序配置
  • 配置
  • 对提供商进行身份验证
  • 配置
  • 功能
  • 配置
  • 源代码
  • MongoDB 服务
  • 服务配置
  • 同步集群配置
  • MongoDB collection 规则(非同步)
  • 外部服务
  • 服务配置
  • 服务规则
  • 和传入网络钩子,
  • 触发器
  • 配置
  • 托管
  • 元数据配置
  • 配置

注意

旧版页面

本页介绍了 realm-cli版本 1 使用的旧版文件格式。有关 Atlas App Services 配置文件的最新说明,请参阅应用配置。

App Services 使用 JSON 文件和源代码文件来定义和配置应用程序的每个组件。 每个组件都有特定的配置文件模式,每个应用程序都使用标准文件结构来组织配置文件。

每个应用程序都由一组collection组成,因此每当创建或修改应用程序时都会使用应用程序文件。如果使用 App Services 用户界面,则很少会直接处理配置文件本身,但其他部署方法(例如App Services CLIGitHub )允许您直接定义和编辑配置文件。

下图显示了应用程序目录结构的高级视图:

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
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
字符串
应用程序的 App ID
name
字符串

应用程序的名称。

注意

应用名称限制

应用程序名称必须介于 1 到 32 个字符之间,并且仅包含 ASCII 字母、数字、下划线和连字符。

security
文档

包含应用程序级安全功能配置选项的文档。

"security": {
"allowed_request_origins": ["<Origin URL>"]
}
字段名称
说明
allowed_request_origins
Array<String>

传入请求可能源自的 URL 数组。 如果您定义了任何允许的请求来源,则 Atlas App Services 会阻止来自未列出来源的任何传入请求。

请求来源是具有以下形式的 URL:

<scheme>://<host>[:port]
hosting
文档

包含所有托管文件的配置选项的文档:

"hosting": {
"enabled": <boolean>,
"custom_domain": "<Custom Domain Name>",
"app_default_domain": "<Default Domain Name>"
}
字段名称
说明
enabled
布尔
如果true ,则表示您的应用程序可以托管静态文件。
custom_domain
字符串
应用程序托管文件的自定义域名
app_default_domain
字符串
应用程序托管文件的默认域。 App Services 会自动设置此值,并且您无法更改它。
config_version
数值
应用程序中的所有配置文件都遵循的模式版本。 此值是机器生成的,通常不应手动设置或修改。
custom_user_data_config
文档

包含自定义用户数据配置选项的文档。

"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>"
}
字段名称
说明
enabled
布尔
如果true,App Services将每个用户与一个文档关联,该文档包含存储在指定collection中的数据。
mongo_service_id
字符串
包含自定义用户数据的MongoDB Atlas 数据源的服务 ID。 您可以在服务配置文件的id字段中找到此值。
database_name
字符串
包含自定义用户数据集合的数据库的名称。
collection_name
字符串
包含自定义用户数据的集合的名称。
user_id_field
字符串
每个自定义数据文档中包含该文档描述的应用程序用户的用户 ID 的字段的名称。
deployment_model
字符串

应用程序的部署模型。 以下值是有效的:

部署模型
"GLOBAL"
"LOCAL"
location
字符串

部署应用程序的云地区的名称。

  • 本地应用程序处理所有
    该地区中的应用程序请求和数据库写入。
  • 全局应用程序处理该区域中的所有数据库写入,但在最近的部署区域中为其他应用程序请求提供服务。

身份验证提供者在应用程序的/auth_providers目录中定义。

每个提供商都在自己的 JSON 文件中定义,该文件以提供商命名。有关配置和使用特定身份验证提供者的详细信息,请参阅该提供商的参考页面。

yourRealmApp/
└── auth_providers/
└── <provider name>.json
<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
字符串
唯一标识身份验证提供者的值。Atlas App Services 在创建提供商时会自动为提供商生成唯一 ID。
name
字符串
身份验证提供程序的名称。
type
字符串

身份验证提供程序的类型

有效选项:

  • "anon-user"

  • "local-userpass"

  • "api-key"

  • "oauth2-apple"

  • "oauth2-google"

  • "oauth2-facebook"

  • "custom-token"

  • "custom-function"

config
文档
包含特定于身份验证提供者的配置值的文档。此字段是否存在及其确切的配置字段取决于提供商类型。
secret_config
文档
一个文档,其中每个字段名称都是提供商的私有配置字段,每个字段的值都是存储配置值的密钥的名称。
metadata_fields
数组<Document>
文档数组,其中每个文档定义一个描述用户的元数据字段。 该字段是否存在以及每个元数据字段文档的确切格式取决于提供商类型。
disabled
布尔
如果true,则您的应用程序未启用此身份验证提供者,因此无法使用。

Atlas Function 在应用程序/functions目录的子目录中定义。 每个函数都映射到与该函数同名的子目录。

每个函数都在config.json中配置,其源代码在source.js中定义。

yourRealmApp/
└── functions/
└── <function name>/
├── config.json
└── source.js
config.json
{
"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
字符串
唯一标识函数的值。 App Services 在创建函数时会自动生成函数的唯一 ID。
name
字符串
函数的名称。 在应用程序的所有函数中,该名称必须是唯一的。
private
布尔
如果true ,则只能从 HTTPS endpoints、规则和命名函数访问此函数。
can_evaluate
文档
当允许执行函数以响应给定请求时,规则表达式的计算结果为true
disable_arg_logs
布尔
如果true ,则 App Services 将省略为函数执行日志条目中的函数提供的参数。
run_as_system
布尔
If true, this function runs as the system user. 这会覆盖为run_as_user_idrun_as_user_id_script_source定义的任何值。
run_as_user_id
字符串
函数执行时始终使用的App Services 用户的唯一 ID。 不能与run_as_user_id_script_source一起使用。
run_as_user_id_script_source
字符串
一个字符串化函数,在调用该函数时运行,并返回该函数执行时使用的App Services 用户的唯一 ID。 不能与run_as_user_id一起使用。
source.js
exports = function() {
// function code
};

链接到应用程序的每个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 集群的配置文件应采用以下形式:

config.json
{
"id": "<Service ID>",
"name": "<Service Name>",
"type": "mongodb-atlas",
"config": {
"clusterName": "<Atlas Cluster Name>",
"readPreference": "<Read Preference>",
"wireProtocolEnabled": <Boolean>,
"sync": <Sync Configuration>
}
}

联合数据源的配置文件应采用以下形式:

config.json
{
"id": "<Service ID>",
"name": "<Service Name>",
"type": "datalake",
"config": {
"dataLakeName": "<Federated database instance name>"
}
}

config.dataLakeNameconfig.clusterName中的一个为必填项,具体取决于您要链接的是集群还是联合数据源。

字段
说明
id
字符串
唯一标识服务的字符串。 创建 MongoDB 服务时,App Services 会自动为其生成唯一 ID。
name
字符串
服务名称。 该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。 对于集群,默认名称为mongodb-atlas 。 对于联合数据源,该值为mongodb-datafederation
type
字符串
对于 MongoDB Atlas 集群,此值始终为"mongodb-atlas" 。 对于联合数据源,此值为"datalake"
config.clusterName
字符串
链接集群时必需。 MongoDB Atlas 中服务的关联集群的名称。
config.dataLakeName
字符串
链接联合数据源时必需。 要链接到应用程序的实例的名称。
config.readPreference
字符串

通过服务发送的查询的读取偏好(read preference)模式。不适用于联合数据源。

模式
说明
App Services 将所有读取操作路由到当前副本集主节点。这是默认的读取偏好模式。
App Services 将所有读取操作路由到当前副本集 主节点 (如果可用)。如果主 节点 不可用,例如在 自动故障转移 期间,读取请求将路由到从节点。
App Services 将所有读取操作路由到当前副本集从节点之一。
App Services 将所有读取操作路由到副本集的可用从节点之一。如果没有可用的从节点,则读取请求将路由到副本集节点。
App Services 将读取操作路由到相对于客户端具有最低网络延迟的副本集成员
config.sync
文档

一种配置文档,用于确定集群是否已同步,如果已同步,则定义集群上同步操作的规则。 不适用于联合数据源。

有关同步配置文档的详细信息,请参阅同步集群配置。

config.jsonconfig.sync字段确定集群是否已同步,如果已同步,则定义集群上同步操作的规则。

config.json
{
...,
"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
布尔
如果为true ,则为集群启用同步,这意味着客户端应用程序可以将集群中的数据与 Realm 数据库同步,并且不应用非同步集合规则
sync.development_mode_enabled
布尔
如果为true ,则为集群启用开发模式。 启用后,Atlas App Services 会将同步对象存储在集群内的特定数据库中,并镜像该数据库的 collection 中的 Realm 对象类型。
sync.database_name
字符串

同步集群中 App Services 应存储同步对象的数据库的名称。

启用开发模式后,App Services 会将同步对象存储在此数据库中。 每种 Realm 对象类型都映射到数据库中自己的 collection,具有与同步对象匹配的模式。

sync.partition.key
字符串
将数据映射到各个同步的 Realm 的分区键字段的名称。
sync.partition.type
字符串
分区键字段值的类型。
sync.partition.permissions
文档
一个文档,用于定义同步集群的readwrite权限。 权限使用规则表达式定义,App Services 将按用户、按分区计算这些规则表达式。 表达式可以使用%%user%%partition扩展。

对于非同步集群,您可以定义 App Services 为每个请求动态评估的 collection-level 规则。每个集合的规则都存储在该集合配置子目录(即data_sources/<data-source-name>/<database-name>/<collection-name>/中的rules.json文件中。

注意

联合数据源不支持规则或模式。只能通过系统函数访问联合数据源。

<database.collection>.json
{
"id": "<Rule ID>",
"database": "<Database Name>",
"collection": "<Collection Name>",
"roles": [<Role>],
"schema": <Document Schema>,
"filters": [<Filter>],
}
字段
说明
id
字符串
唯一标识trigger的字符串。创建触发器时,App Services 会自动为触发器生成唯一 ID。
database
字符串
保存该collection的数据库的名称。
collection
字符串
集合的名称。
roles
数组<Document>

角色配置文档的数组,其形式如下:

{
"name": "<Role Name>",
"apply_when": { Expression },
"document_filters": {
"read": { Expression },
"write": { Expression }
},
"read": { Expression },
"write": { Expression },
"insert": { Expression },
"delete": { Expression },
"search": <Boolean>,
"fields": {
"<Field Name>": {
"read": { Expression },
"write": { Expression },
"fields": { Embedded Fields }
},
...
},
"additional_fields": {
"read": { Expression },
"write": { Expression }
}
}
字段
说明
name
string
角色的名称。角色名称用于识别和区分同一集合中的角色。限制在 100 个字符以内。
apply_when
object

一个表达式,当该角色应用于用户时,该表达式的计算结果为 true。

当未启用 Device Sync(灵活模式)时,App Services 根据每个文档分配角色。当启用 Device Sync(灵活模式)时,App Services 根据每个集合、每个会话分配角色 — 也就是说,当客户端打开同步连接时,它为每个同步集合分配角色。

为分配角色,App Services 会对每个潜在角色的apply_when求值,直到其中一个求值为 true。 潜在角色是在给定集合的rules.json配置文件中指定的任何角色,如果没有找到给定集合的rules.json文件,则为默认角色。 App Services 按照您在配置中指定角色的顺序对角色进行评估。 如果没有角色匹配,则拒绝访问。 有关更多信息,请参阅基于角色的权限。

如果启用 Device Sync(灵活模式),则分配的角色必须是Sync 兼容的。 如果该角色与同步不兼容,但其apply_when计算结果为 true,则不考虑其他角色;访问被拒绝。

document_filters
文档
默认: undefined

具有读取和写入表达式的文档,这些表达式决定是否可以评估角色的其他权限。

如果启用了 Device Sync,则必须同时定义document_filters.readdocument_filters.write以使Sync 角色兼容。 同步不兼容的角色会拒绝对同步请求的所有访问。

如果未启用 Device Sync,则document_filtersdocument_filters.readdocument_filters.write都是可选的;未定义的document_filters.readdocument_filters.write默认为 true,允许评估后续权限。

"document_filters": {
"read": { Expression },
"write": { Expression }
}
document_filters.read
object?
默认: undefined

一个表达式,用于指定是否可以评估readfields中的读取权限和additional_fields中的读取权限。 如果为 false(且document_filters.write为 undefined 或 false),则拒绝对整个文档的读取访问。

为了保持Sync 兼容性,必须定义表达式,并且表达式只能引用可查询字段。

document_filters.write
object?
默认: undefined

一个表达式,用于指定是否可以评估writefields中的写入权限和additional_fields中的写入权限。 如果为 false,则拒绝对整个文档的写入访问。

为了保持Sync 兼容性,必须定义表达式,并且表达式只能引用可查询字段。

read
object?
默认: undefined

如果角色有权读取文档中的所有字段,则该表达式的计算结果为 true。

为了保持Sync 兼容性,表达式必须是布尔值字面量( truefalse )。

Document-level read permissions take priority over any field-level permissions. 如果角色具有文档级read权限,则适用于文档中的所有字段。fieldsadditional_fields指定的读取权限不会覆盖文档级read权限。

要与字段级规则一起定义默认回退,请保留read未定义并使用additional_fields

write
object?
默认: undefined

如果角色有权添加、修改或删除文档中的所有字段,则该表达式的计算结果为 true。

为了保持Sync 兼容性,表达式必须是布尔值字面量( truefalse )。

文档级写入权限具有优先级超过任何字段级权限。如果角色具有文档级write权限,则适用于文档中的所有字段。 fieldsadditional_fields指定的写入权限不会覆盖文档级write权限。

要与字段级规则一起定义默认回退,请保留write未定义并使用additional_fields

您可以在write JSON 表达式中使用%%root%%prevRoot等扩展。

重要

隐式读取权限

每当角色拥有特定范围的write权限时,即使未明确定义,它也拥有read权限。

insert
object?
默认: true

如果角色有权将新文档插入到collection中,则表达式的计算结果为true

App Services 仅在插入操作中评估此表达式的值,并且仅在确定该角色对新文档中的所有字段都具有write权限后才计算。

delete
object?
默认: true

如果角色有权从collection中删除文档,则该表达式的计算结果为 true。

App Services 仅在删除操作中评估此表达式的值,并且仅在确定该角色对要删除的文档中的所有字段都具有write权限之后才计算。

search
布尔
默认: true

如果角色有权使用 Atlas Search 搜索集合,则该 表达式 的计算结果为 true。

重要

App Services 以系统用户身份执行 $search 操作,并对返回的搜索结果强制执行字段级规则。这意味着用户可以搜索他们没有读取权限的字段。在这种情况下,搜索基于指定字段,但返回的文档不包括该字段。

fields
文档
默认: {}

一种文档,其中每个键对应一个字段名称,每个值都定义角色对查询文档中相应字段的字段级readwrite权限。

为了保持Sync 兼容性,内部的readwrite表达式必须是布尔型字面量( truefalse )。

"fields": {
"<Field Name>": {
"read": { Expression },
"write": { Expression },
"fields": <Fields Document>
},
...
}

注意

权限优先级

文档级readwrite权限会覆盖同一类型的所有字段级权限。 如果为包含嵌入式文档的字段定义了权限,则这些权限将覆盖为文档的嵌入式字段定义的任何权限。

fields.<Field Name>.read
object?
默认: false

如果角色有权读取字段,则该表达式的计算结果为 true。

为了保持Sync 兼容性,表达式必须是布尔值字面量( truefalse )。

fields.<Field Name>.write
object?
默认: false

如果角色有权添加、修改或删除字段,则该表达式的计算结果为 true。

为了保持Sync 兼容性,表达式必须是布尔值字面量( truefalse )。

fields.<Field Name>.fields
文档
默认: {}

一个fields文档,为嵌入查询文档中此字段的字段定义readwrite权限。

有关更多信息,请参阅“嵌入式文档的字段级权限”角色模式。

additional_fields
文档
默认: {}

针对查询文档中在fields文档中没有显式定义权限的任何字段,定义角色的字段级readwrite权限的文档。

为了保持Sync 兼容性,内部的readwrite表达式必须是布尔型字面量( truefalse )。

"additional_fields": {
"read": { Expression },
"write": { Expression }
}
additional_fields.read
object?
默认: false

如果角色有权读取在fields中没有字段级权限定义的任何字段,则表达式的计算结果为 true。

为了保持Sync 兼容性,表达式必须为布尔值( truefalse )。

additional_fields.write
object?
默认: false

如果角色有权添加、修改或删除在fields中没有字段级权限定义的任何字段,则表达式的计算结果为 true。

为了保持Sync 兼容性,表达式必须为布尔值( truefalse )。

schema
文档

文档模式。 根级模式必须是对象模式,其形式如下:

{
"bsonType": "object",
"properties": {
"<Field Name>": <Schema Document>
}
}
filters
数组<Document>

筛选器配置文档的数组,其形式如下:

{
"name": "<Filter Name>",
"apply_when": { Expression },
"query": { MongoDB Query },
"projection": { MongoDB Projection }
}
字段
说明
name
string
必需。过滤器的名称。过滤器名称用于识别和区分过滤器。限制在 100 个字符以内。
apply_when
object

一个表达式,用于确定此筛选器何时应用于传入的 MongoDB 操作。

重要

Atlas App Services 将在读取任何文档之前评估并应用过滤器,因此您无法在过滤器的 “Apply When” 表达式中使用 MongoDB 文档扩展。但是,您也可以使用其他扩展,如 %%user%%values%function

query
object
默认: {}

App Services 将其合并到已筛选操作的现有查询中的MongoDB查询。

例子

筛选器使用以下查询保留score低于20的文档:

{ "score": { "$gte": 20 } }
projection
object
默认: {}

App Services 将其合并到已筛选操作的现有投影中的MongoDB投影。

重要

投影冲突

MongoDB 投影可以是包含式的或排除式的,即可以仅返回指定的字段,或者不返回未指定的字段。如果多个过滤器应用于查询,这些过滤器必须全部指定相同类型的投影,否则查询会失败。

例子

过滤器使用以下投影从所有文档中保留_internal字段:

{ "_internal": 0 }

第三方服务/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
config.json
{
"id": "<Service ID>",
"name": "<Service Name>",
"type": "<Service Type>",
"config": {
"<Configuration Option>": <Configuration Value>
},
"secret_config": {
"<Configuration Option>": "<Secret Name>"
},
}
字段
说明
id
字符串
唯一标识服务的字符串。 Atlas App Services 在创建服务时会自动为其生成唯一 ID。
name
字符串
服务名称。 该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。
type
字符串

服务的类型。

有效选项:

  • "http"

  • "aws"

  • "twilio"

  • "github"

  • "gcm"

config
文档

包含映射到服务其他配置选项的字段的文档。确切的配置字段取决于服务type

secret_config
文档
一个文档,其中每个字段名称都是服务的私有配置字段,每个字段的值都是存储配置值的密钥的名称。

针对特定外部服务的规则在/<service name>/rules子目录中定义。

每条规则都映射到与该规则同名的 JSON 文件。

<rule name>.json
{
"id": "<Rule ID>",
"name": "<Rule Name>",
"actions": ["<Service Action Name>"],
"when": <JSON Rule Expression>
}
字段
说明
id
字符串
唯一标识规则的字符串。 App Services 在创建规则时会自动生成规则的唯一 ID。
name
字符串
服务规则的名称。 该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。
actions
Array<String>
应用规则的服务操作列表。 可用的具体操作取决于服务type
when
文档
当规则应用于给定请求时,规则表达式的计算结果为true

特定服务的传入网络钩子在/<service name>/incoming_webhooks/子目录中定义。

传入的 Webhook 使用与函数相同的配置格式,但具有额外的配置参数。

config.json
{
"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
字符串
唯一标识函数的值。 App Services 在创建函数时会自动生成函数的唯一 ID。
name
字符串
函数的名称。 在应用程序的所有函数中,该名称必须是唯一的。
private
布尔
如果true ,则只能从传入的 Webhook、规则和命名函数访问此函数。
can_evaluate
文档
如果允许执行函数以响应给定请求,则规则表达式的计算结果为true
disable_arg_logs
布尔
如果true ,则 App Services 将省略为函数执行日志条目中的函数提供的参数。
run_as_system
布尔
如果为true ,则 Webhook 函数以系统用户身份运行。 这会覆盖为run_as_user_idrun_as_user_id_script_source定义的任何值。
run_as_user_id
字符串
函数执行时始终使用的App Services 用户的唯一 ID。 不能与run_as_user_id_script_source一起使用。
run_as_user_id_script_source
字符串
一个字符串化函数,在调用 Webhook 时运行,并返回该函数执行时使用的App Services 用户的唯一 ID。 不能与run_as_user_id一起使用。
respond_result
布尔
如果true ,则 App Services 将 Webhook 函数返回值作为 HTTP 响应正文包含在内,发送到发起 Webhook 请求的客户端。
options
文档

包含 Webhook 配置选项的文档。

{
"httpMethod": "<HTTP Method>",
"validationMethod": "<Webhook Validation Method>",
"secret": "<Webhook Secret>"
}
字段
说明
httpMethod
字符串
Webhook 接受的 HTTP 方法类型。 传入的 Webhook 请求必须使用此方法。
validationMethod
字符串

Webhook 使用的请求验证方法的名称。

有效选项:

  • "VERIFY_PAYLOAD"

  • "SECRET_AS_QUERY_PARAM"

  • "NO_VALIDATION"

secret
字符串
source.js
exports = function() {
// webhook function code
};

Atlas Triggers在应用程序的/triggers目录中定义。

每个trigger都在自己的 JSON 文件中定义,其名称与trigger相同。

yourRealmApp/
└── triggers/
└── <trigger name>.json
<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
字符串
唯一标识trigger的字符串。Atlas App Services 在创建trigger时会自动为trigger生成唯一 ID。
name
字符串
trigger的名称。该名称的长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。
type
字符串

trigger侦听的应用程序事件的类型

有效选项:

  • "DATABASE"

  • "AUTHENTICATION"

  • "SCHEDULED"

function_name
字符串
触发器每次触发时执行的 Atlas Function 的名称。 触发器根据触发器type自动将参数传递给函数。
config
文档

一个文档,其中包含映射到trigger其他配置选项的字段。确切的配置字段取决于triggertype

disabled
布尔
如果为true,trigger将不会侦听任何事件,也不会触发。

您想要在 Atlas App Services 上托管的文件应包含在应用程序的/hosting目录中。 上传的每个文件都将附带metadata.json中定义的元数据。

您可以在metadata.json配置每个托管文件的元数据。 此元数据配置文件是一个文档数组,每个文档都对应于单个托管文件的元数据属性。

yourRealmApp/
└── hosting/
├── metadata.json
└── files/
└── <files to host>
metadata.json
[
{
"path": "<File Resource Path>",
"attrs": [{
"name": "<Attribute Type>",
"value": "<Attribute Value>"
}]
}
]
字段
说明
path
字符串
文件的资源路径
attrs
数组<Document>

文档数组,其中每个文档代表一个元数据属性。 属性文档具有以下形式:

元数据属性文档
{
"name": "<Attribute Type>",
"value": "<Attribute Value>"
}
字段
说明
name
字符串
元数据属性的名称。 这应该是 App Services 支持的文件元数据属性之一。
value
字符串
元数据属性的值。

注意

如果您没有为托管文件指定Content-Type元数据属性,Atlas App Services 将尝试根据文件扩展名自动向其添加Content-Type属性。

例如,App Services 会自动将属性Content-Type: application/html添加到文件myPage.html中。

值在应用程序的/values目录中定义。

每个值都在以该值命名的自己的 JSON 文件中定义。

yourRealmApp/
└── values/
└── <value name>.json
<value name>.json
{
"id": "<Value ID>",
"name": "<Value Name>",
"from_secret": <boolean>,
"value": <Stored JSON Value|Secret Name>
}
字段
说明
id
字符串
唯一标识该值的字符串。 Atlas App Services 在您创建值时自动为值生成唯一 ID。
name
字符串
值的唯一名称。 此名称是在函数和规则中引用值的方式。
from_secret
布尔
默认值: false 。 如果为true ,则该值会公开密钥,而不是纯文本 JSON 值。
value
字符串、数组或对象

引用该值时 App Services 公开的存储数据。

如果from_secretfalse ,则value可以是标准 JSON 字符串、数组或对象。

如果from_secrettrue ,则value为包含该值公开的密钥名称的字符串。

← 应用程序配置文件 (v20210101) [已弃用]