Docs Menu
Docs Home
/ /
Archivos de configuración de la aplicación

Archivos de configuración de la aplicación (heredados)

Nota

Página heredada

Esta página describe el formato de archivo de configuración heredado utilizado por realm-cli 1Versión. Para obtener una descripción actualizada de los archivos de configuración de Atlas App Services, consulte Configuración de la aplicación.

App Services utiliza archivos JSON y de código fuente para definir y configurar cada componente de una aplicación. Cada componente tiene un esquema de archivo de configuración específico y cada aplicación utiliza una estructura de archivos estándar para organizar los archivos de configuración.

Cada aplicación se compone de una colección de archivos de configuración, por lo que se utilizan estos archivos al crear o modificar una aplicación. Si se utiliza la interfaz de usuario de App Services, rara vez se trabaja directamente con los archivos de configuración, pero otros métodos de implementación, como la CLI de App Services y GitHub, permiten definir y editar los archivos de configuración directamente.

La siguiente figura muestra una vista de alto nivel de la estructura de directorio de una aplicación:

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

La información de configuración a nivel de aplicación se define en un único documento llamado config.json almacenado en el directorio raíz de su aplicación.

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>
}
Campo
Descripción
app_id
String

La aplicación App ID.

name
String

El nombre de la aplicación.

Nota

Limitaciones del nombre de la aplicación

Los nombres de las aplicaciones deben tener entre 1 y 32 caracteres y solo pueden contener letras ASCII, números, guiones bajos y guiones.

security
Document

Un documento que contiene opciones de configuración para las funcionalidades de seguridad a nivel de aplicación.

"security": {
"allowed_request_origins": ["<Origin URL>"]
}
Nombre de campo
Descripción
allowed_request_origins
Array<String>

Una matriz de URL de las que pueden provenir las solicitudes entrantes. Si define orígenes de solicitud permitidos, Atlas App Services bloqueará cualquier solicitud entrante de un origen que no esté en la lista.

Los orígenes de las solicitudes son URL con el siguiente formato:

<scheme>://<host>[:port]
hosting
Document

Un documento que contiene opciones de configuración para todos los archivos alojados:

"hosting": {
"enabled": <boolean>,
"custom_domain": "<Custom Domain Name>",
"app_default_domain": "<Default Domain Name>"
}
Nombre de campo
Descripción
enabled
Boolean

Si true es, indica que su aplicación puede alojar archivos estáticos.

custom_domain
String

Un nombre de dominio personalizado para los archivos alojados de su aplicación.

app_default_domain
String

El dominio predeterminado para los archivos alojados en tu aplicación. App Services establece este valor automáticamente y no puedes modificarlo.

config_version
Number

La versión del esquema a la que se ajustan todos los archivos de configuración de la aplicación. Este valor se genera automáticamente y, por lo general, no se recomienda configurarlo ni modificarlo manualmente.

custom_user_data_config
Document

Un documento que contiene opciones de configuración para datos de usuario personalizados.

"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>"
}
Nombre de campo
Descripción
enabled
Boolean

Si es true, App Services asocia a cada usuario con un documento que contiene sus datos almacenados en la colección especificada.

mongo_service_id
String

El ID de servicio de la fuente de datos de MongoDB Atlas que contiene los datos de usuario personalizados. Puede encontrar este valor en el id campo del archivo de configuración del servicio.

database_name
String

El nombre de la base de datos que contiene la recopilación de datos de usuario personalizados.

collection_name
String

El nombre de la colección que contiene los datos de usuario personalizados.

user_id_field
String

El nombre del campo en cada documento personalizado que contiene el ID de usuario de la persona usuaria de la aplicación que el documento describe.

deployment_model
String

Modelo de implementación de la aplicación. Los siguientes valores son válidos:

Modelo de implementación
Valor

"GLOBAL"

"LOCAL"

location
String

El nombre de la región de nube en la que está implementada la aplicación.

  • Las aplicaciones locales procesan todo
    solicitudes de aplicaciones y escrituras de bases de datos en esta región.
  • Las aplicaciones globales procesan todas las escrituras de bases de datos en esta región, pero atienden otras solicitudes de aplicaciones en la región de implementación más cercana.

Los proveedores de autenticación se definen en el /auth_providers directorio de su aplicación.

Cada proveedor se define en su propio archivo JSON, que lleva su nombre. Para obtener información detallada sobre la configuración y el uso de un proveedor de autenticación específico, consulte su página de referencia.

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"
}]
}
Campo
Descripción
id
String

Un valor que identifica de forma única al proveedor de autenticación. Atlas App Services genera automáticamente un ID único para un proveedor al crearlo.

name
String

El nombre del proveedor de autenticación.

type
String

El tipo de proveedor de autenticación.

Opciones válidas:

  • "anon-user"

  • "local-userpass"

  • "api-key"

  • "oauth2-apple"

  • "oauth2-google"

  • "oauth2-facebook"

  • "custom-token"

  • "custom-function"

config
Document

Un documento que contiene valores de configuración específicos del proveedor de autenticación. La existencia de este campo y sus campos de configuración exactos dependen del tipo de proveedor.

secret_config
Document

Un documento donde cada nombre de campo es un campo de configuración privado para el proveedor y el valor de cada campo es el nombre de un secreto que almacena el valor de configuración.

metadata_fields
Array<Document>

Una matriz de documentos donde cada documento define un campo de metadatos que describe al usuario. La existencia de este campo y el formato exacto de cada documento de campo de metadatos dependen del tipo de proveedor.

disabled
Boolean

Si es true, este proveedor de autenticación no está habilitado para su aplicación y no se puede utilizar.

Las funciones Atlas se definen en un subdirectorio del directorio /functions de la aplicación. Cada función se asigna a su propio subdirectorio con el mismo nombre.

Cada función está configurada en config.json y tiene su código fuente definido en 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>"
}
Campo
Descripción
id
String

Un valor que identifica de forma única la función. App Services genera automáticamente un ID único para una función al crearla.

name
String

El nombre de la función. Debe ser único entre todas las funciones de la aplicación.

private
Boolean

Si es true, solo se podrá acceder a esta función desde puntos finales, reglas y funciones con nombre HTTPS.

can_evaluate
Document

Una expresión de regla que evalúa como true cuando se permite que la función se ejecute en respuesta a una solicitud determinada.

disable_arg_logs
Boolean

Si true es, App Services omite los argumentos proporcionados a una función de la entrada del registro de ejecución de la función.

run_as_system
Boolean

Si true, esta función se ejecuta como el usuario del sistema. Esto reemplaza cualquier valor definido para run_as_user_id y run_as_user_id_script_source.

run_as_user_id
String

El ID único de un usuario de App Services con el que siempre se ejecuta la función. No se puede usar run_as_user_id_script_source con.

run_as_user_id_script_source
String

Una función convertida en cadena que se ejecuta al llamarse y devuelve el ID único del usuario de App Services que la ejecuta. No se puede usar run_as_user_id con.

fuente.js
exports = function() {
// function code
};

Cada fuente de datos de MongoDB Atlas vinculada a tu aplicación se configura como un servicio en el /services directorio. Cada fuente de datos se asigna a su propio subdirectorio con el mismo nombre que el servicio.

La configuración del servicio principal para una fuente de datos MongoDB Atlas es config.json, que define los parámetros de conexión y las reglas de sincronización.

Si la fuente de datos no es un clúster sincronizado o una instancia de base de datos federada, puede definir reglas a nivel de colección en el /rules subdirectorio.

yourRealmApp/
└── services/
└── <MongoDB Service Name>/
├── config.json
└── rules/
└── <rule name>.json

Importante

Los nombres de los servicios de MongoDB no coinciden necesariamente con el nombre de su fuente de datos vinculada en Atlas. El nombre del servicio de una fuente de datos se define al vincularla a la aplicación. Para clústeres vinculados, el nombre predeterminado del servicio de MongoDB es mongodb-atlas. Para fuentes de datos federadas, el nombre predeterminado es mongodb-datafederation.

El archivo de configuración para vincular un clúster Atlas debe tener el siguiente formato:

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

El archivo de configuración de una fuente de datos federada debe tener el siguiente formato:

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

Se requiere exactamente uno de config.dataLakeName y config.clusterName, dependiendo de si está vinculando un clúster o una fuente de datos federada.

Campo
Descripción
id
String

Una cadena que identifica de forma única el servicio. App Services genera automáticamente un ID único para un servicio MongoDB al crearlo.

name
String

El nombre del servicio. El nombre puede tener como máximo 64 caracteres y solo puede contener letras ASCII, números, guiones bajos y guiones. Para los clústeres, el nombre predeterminado es mongodb-atlas. Para las fuentes de datos federadas, es mongodb-datafederation.

type
String

Para los clústeres de MongoDB Atlas, este valor siempre es "mongodb-atlas". Para las fuentes de datos federadas, este valor es "datalake".

config.clusterName
String

Obligatorio al vincular un clúster. El nombre del clúster vinculado del servicio en MongoDB Atlas.

config.dataLakeName
String

Obligatorio al vincular fuentes de datos federadas. El nombre de la instancia que desea vincular a su aplicación.

config.readPreference
String

El modo de preferencia de lectura para las consultas enviadas a través del servicio. No disponible para fuentes de datos federadas.

Modo
Descripción

primario

App Services dirige todas las operaciones de lectura al nodo principal del conjunto de réplicas actual. Este es el modo de preferencia de lectura predeterminado.

App Services dirige todas las operaciones de lectura al nodo principal del conjunto de réplicas actual, si está disponible. Si el nodo principal no está disponible, como durante una conmutación por error automática, las solicitudes de lectura se dirigen a un nodo secundario.

App Services dirige todas las operaciones de lectura a uno de los nodos secundarios del conjunto de réplicas actual.

App Services dirige todas las operaciones de lectura a uno de los nodos secundarios disponibles en el set de réplicas. Si no hay nodos secundarios disponibles, las solicitudes de lectura se dirigen al primario del set de réplicas.

App Services dirige las operaciones de lectura al miembro del conjunto de réplicas que tiene la latencia de red más baja en relación con el cliente.

config.sync
Document

Un documento de configuración que determina si un clúster está sincronizado y, de ser así, define las reglas para las operaciones de sincronización en él. No disponible para orígenes de datos federados.

Para obtener información detallada sobre los documentos de configuración de sincronización, consulte Configuración de clúster sincronizado.

El campo config.sync de config.json determina si un clúster está sincronizado y, de ser así, define las reglas para las operaciones de sincronización en el clúster.

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>
}
}
}
}
}
Campo
Descripción
sync.state
Boolean
sync.development_mode_enabled
Boolean

Si es true, el modo de desarrollo está habilitado para el clúster. Mientras esté habilitado, Atlas App Services almacena los objetos sincronizados en una base de datos específica dentro del clúster y refleja los tipos de objeto en los esquemas de colección de esa base de datos.

sync.database_name
String

El nombre de la base de datos en el clúster sincronizado donde App Services debe almacenar los objetos sincronizados.

Cuando el modo de desarrollo está habilitado, App Services almacena los objetos sincronizados en esta base de datos. Cada tipo de objeto se asigna a su propia colección en la base de datos con un esquema que coincide con los objetos sincronizados.

sync.partition.key
String

El nombre del campo de clave de partición que asigna datos a reinos sincronizados individuales.

sync.partition.type
String

El tipo de valor del campo de clave de partición.

sync.partition.permissions
Document

Un documento que define los permisos de read y write para el clúster sincronizado. Los permisos se definen con expresiones de reglas que App Services evalúa por usuario y por partición. Las expresiones tienen acceso a las expansiones %%user y %%partition.

Para clústeres no sincronizados, puedes definir reglas a nivel de colección que App Services evalúa dinámicamente para cada solicitud. Las reglas de cada colección se almacenan en un archivo rules.json en su subdirectorio de configuración (data_sources/<data-source-name>/<database-name>/<collection-name>/).

Nota

Las fuentes de datos federadas no admiten reglas ni esquemas. Solo se puede acceder a ellas desde una función del sistema.

<database.collection><colección de base de datos>.json
{
"id": "<Rule ID>",
"database": "<Database Name>",
"collection": "<Collection Name>",
"roles": [<Role>],
"schema": <Document Schema>,
"filters": [<Filter>],
}
Campo
Descripción
id
String

Una cadena que identifica de forma única el disparador. App Services genera automáticamente un ID único para un disparador al crearlo.

database
String

El nombre de la base de datos que contiene la colección.

collection
String

El nombre de la colección.

roles
Array<Document>

Una matriz de documentos de configuración de roles, que tienen el siguiente formato:

{
"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 }
}
}
Campo
Descripción
name
string

El nombre del rol. Los nombres de rol identifican y distinguen entre roles de la misma colección. Limitado a 100 caracteres o menos.

apply_when
object

Una expresión que se evalúa como verdadera cuando este rol se aplica a un usuario.

Cuando la Sincronización de Dispositivos (Modo Flexible) no está habilitada, App Services asigna un rol por documento. Cuando la Sincronización de Dispositivos (Modo Flexible) está habilitada, App Services asigna roles por colección y por sesión; es decir, por cada colección sincronizada cuando un cliente abre una conexión de sincronización.

Para asignar un rol, App Services evalúa el apply_when de cada rol potencial hasta que uno se evalúa como verdadero. Los roles potenciales son cualquier rol especificado en el rules.json archivo de configuración para la colección dada o, si no rules.json se encuentra ningún archivo para la colección dada, los roles predeterminados. App Services evalúa los roles en el orden en que los especifique en su configuración. Si ningún rol coincide, se deniega el acceso. Para obtener más información, consulte Permisos basados ​​en roles.

Si la sincronización de dispositivos (modo flexible) está habilitada, los roles asignados deben ser compatibles con la sincronización. Si el rol no es compatible con la sincronización, pero su apply_when valor es verdadero, no se consideran los demás roles y se deniega el acceso.

document_filters
Document
Default: undefined

Un documento con expresiones de lectura y escritura que determinan si se pueden evaluar otros permisos del rol.

Si la sincronización de dispositivos está habilitada,document_filters.read document_filters.write se deben definir y para que el rol sea compatible con la sincronización. Los roles incompatibles con la sincronización deniegan todo acceso a las solicitudes de sincronización.

Si la sincronización del dispositivo no está habilitada, document_filters, document_filters.read y document_filters.write son todos opcionales; un document_filters.read o document_filters.write no definido tiene como valor predeterminado verdadero, lo que permite evaluar los permisos posteriores.

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

Una expresión que especifica read fields additional_fields si se pueden evaluar los permisos de lectura de, y. Si es falso (y document_filters.write no está definido o es falso), se deniega el acceso de lectura para todo el documento.

Para mantener la compatibilidad de Sync, la expresión debe estar definida y solo puede hacer referencia a campos consultables.

document_filters.write
object?
Default: undefined

Una expresión que especifica write fieldssi additional_fields se pueden evaluar los permisos de escritura de, y. Si es falso, se deniega el acceso de escritura a todo el documento.

Para mantener la compatibilidad de Sync, la expresión debe estar definida y solo puede hacer referencia a campos consultables.

read
object?
Default: undefined

Una expresión que se evalúa como verdadera si el rol tiene permiso para leer todos los campos del documento.

Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano (true falseo).

Los permisos de lectura a nivel de documento tienen prioridad sobre cualquier permiso a nivel de campo. Si un rol tiene permisos a nivel de documento read, este se aplica a todos los campos del documento. Los permisos de lectura especificados por fields o additional_fields no anulan los permisos a nivel de documento read.

Para definir una alternativa predeterminada junto con las reglas a nivel de campo, deje read sin definir y utilice additional_fields.

write
object?
Default: undefined

Una expresión que evalúa como verdadera si el rol tiene permiso para agregar, modificar o remover todos los campos del documento.

Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano (true falseo).

Los permisos de escritura a nivel de documento tienen prioridad sobre los permisos a nivel de campo. Si un rol tiene permisos a nivel de documento write, estos se aplican a todos los campos del documento. Los permisos de escritura especificados por fields o additional_fields no anulan los permisos a nivel de documento write.

Para definir una alternativa predeterminada junto con las reglas a nivel de campo, deje write sin definir y utilice additional_fields.

Puede utilizar expansiones como %%root y %%prevRoot en write expresiones JSON.

Importante

Permiso de lectura implícito

Cada vez que un rol tiene permiso write para un ámbito particular, también tiene permiso read incluso si este no está definido explícitamente.

insert
object?
Default: true

Una expresión que evalúa a true si el rol tiene permiso para insertar un nuevo documento en la colección.

App Services solo evalúa esta expresión para operaciones de inserción y solo después de determinar que el rol tiene permiso write para todos los campos en el nuevo documento.

delete
object?
Default: true

Una expresión que se evalúa como verdadera si el rol tiene permiso para eliminar un documento de la colección.

App Services solo evalúa esta expresión para las operaciones de eliminación y solo después de determinar que el rol tiene permiso de write para todos los campos en el documento que se eliminarán.

search
Boolean
Default: true

Una expresión que se evalúa como verdadera si el rol tiene permiso para buscar en la colección mediante Atlas Search.

Importante

Servicios de aplicaciones realiza $search operaciones como usuario del sistema y aplica reglas a nivel de campo en los resultados de búsqueda. Esto significa que un usuario puede buscar en un campo sin acceso de lectura. En este caso, la búsqueda se basa en el campo especificado, pero ningún documento devuelto lo incluye.

fields
Document
Default: {}

Un documento donde cada clave corresponde a un nombre de campo y cada valor define los permisos de nivel de campo read y write del rol para el campo correspondiente en un documento consultado.

Para mantener la compatibilidad de Sync, las read write expresiones internas y deben ser literales booleanos (true falseo).

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

Nota

Prioridad del permiso

Los permisos read o write a nivel de documento anulan todos los permisos a nivel de campo del mismo tipo. Si se definen permisos para un campo que contiene un documento incrustado, estos permisos anulan cualquier permiso definido para los campos incrustados del documento.

fields.<Field Name>.read
object?
Default: false

Una expresión que se evalúa como verdadera si el rol tiene permiso para leer el campo.

Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano (true falseo).

fields.<Field Name>.write
object?
Default: false

Una expresión que se evalúa como verdadera si el rol tiene permiso para agregar, modificar o eliminar el campo.

Para mantener la compatibilidad con Sync, la expresión debe ser un literal booleano (true falseo).

fields.<Field Name>.fields
Document
Default: {}

Un documento fields que define los permisos read y write para los campos que están integrados dentro de este campo en un documento consultado.

Consulte el patrón de función Permisos a nivel de campo para documentos incrustados para obtener más información.

additional_fields
Document
Default: {}

Un documento que define los permisos de nivel de campo read y write del rol para cualquier campo en un documento consultado que no tenga permisos definidos explícitamente en el documento fields.

Para mantener la compatibilidad de Sync, las read write expresiones internas y deben ser literales booleanos (true falseo).

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

Una expresión que se evalúa como verdadera si el rol tiene permiso para leer cualquier campo que no tenga una definición de permiso a nivel de campo fields en.

Para mantener la compatibilidad con Sync, la expresión debe ser booleana (true falseo).

additional_fields.write
object?
Default: false

Una expresión que se evalúa como verdadera si el rol tiene permiso para agregar, modificar o eliminar cualquier campo que no tenga una definición de permiso a nivel de campo fields en.

Para mantener la compatibilidad con Sync, la expresión debe ser booleana (true falseo).

schema
Document

Un esquema de documento. El esquema de nivel raíz debe ser un esquema de objeto, con la siguiente forma:

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

Un arreglo de documentos de configuración de filtro, que tienen el siguiente formato:

{
"name": "<Filter Name>",
"apply_when": { Expression },
"query": { MongoDB Query },
"projection": { MongoDB Projection }
}
Campo
Descripción
name
string

Obligatorio. El nombre del filtro. Los nombres de los filtros son útiles para identificarlos y distinguirlos. Limitado a 100 caracteres o menos.

apply_when
object

Una expresión que determina cuándo se aplica este filtro a una operación MongoDB entrante.

Importante

Atlas App Services evalúa y aplica filtros antes de leer cualquier documento, por lo que no se pueden usar expansiones de documentos de MongoDB en la expresión "Aplicar cuando" de un filtro. Sin embargo, sí se pueden usar otras expansiones %%user como, %%values y.%function

query
object
Default: {}

Una consulta de MongoDB que App Services fusiona en la consulta existente de una operación filtrada.

Ejemplo

Un filtro retiene documentos que tengan un score por debajo de 20 usando la siguiente query:

{ "score": { "$gte": 20 } }
projection
object
Default: {}

Una proyección de MongoDB que App Services fusiona con la proyección existente de una operación filtrada.

Importante

Conflictos de proyección

Las proyecciones de MongoDB pueden ser inclusivas o exclusivas; es decir, pueden devolver solo los campos especificados o excluir los campos no especificados. Si se aplican varios filtros a una consulta, todos deben especificar el mismo tipo de proyección; de lo contrario, la consulta fallará.

Ejemplo

Un filtro retiene el campo _internal de todos los documentos utilizando la siguiente proyección:

{ "_internal": 0 }

3Los servicios de terceros se definen en el /services directorio. Cada servicio se asigna a su propio subdirectorio con el mismo nombre.

Cada directorio de servicios contiene lo siguiente:

  • config.json:un archivo de configuración de servicio

  • /rules: un subdirectorio de configuraciones de reglas de servicio

  • /incoming_webhooks: un subdirectorio de configuraciones de webhook (si el servicio admite webhooks, es decir, HTTP, GitHub o 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>"
},
}
Campo
Descripción
id
String

Una cadena que identifica de forma única el servicio. Atlas App Services genera automáticamente un ID único para un servicio al crearlo.

name
String

El nombre del servicio. El nombre puede tener como máximo 64 caracteres y solo puede contener letras ASCII, números, guiones bajos y guiones.

type
String

El tipo de servicio.

Opciones válidas:

  • "http"

  • "aws"

  • "twilio"

  • "github"

  • "gcm"

config
Document

Un documento con campos que asignan opciones de configuración adicionales para el servicio. Los campos de configuración exactos dependen del servicio type.

secret_config
Document

Un documento donde cada nombre de campo es un campo de configuración privado para el servicio y el valor de cada campo es el nombre de un secreto que almacena el valor de configuración.

Las reglas para un servicio externo específico se definen en el subdirectorio /<service name>/rules.

Cada regla se asigna a su propio archivo JSON con el mismo nombre que la regla.

<rule name>.json
{
"id": "<Rule ID>",
"name": "<Rule Name>",
"actions": ["<Service Action Name>"],
"when": <JSON Rule Expression>
}
Campo
Descripción
id
String

Una cadena que identifica de forma única la regla. App Services genera automáticamente un ID único para una regla al crearla.

name
String

El nombre de la regla de servicio. El nombre puede tener como máximo 64 caracteres y solo puede contener letras ASCII, números, guiones bajos y guiones.

actions
Array<String>

Una lista de acciones de servicio a las que se aplica la regla. Las acciones específicas disponibles dependen del servicio type.

when
Document

Una expresión de regla que evalúa como true cuando la regla se aplica a una solicitud determinada.

Los webhooks entrantes para un servicio específico se definen en el subdirectorio /<service name>/incoming_webhooks/.

Los webhooks entrantes utilizan el mismo formato de configuración que la función, pero tienen parámetros de configuración adicionales.

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>"
}
}
Campo
Descripción
id
String

Un valor que identifica de forma única la función. App Services genera automáticamente un ID único para una función al crearla.

name
String

El nombre de la función. Debe ser único entre todas las funciones de la aplicación.

private
Boolean

Si es true, solo se podrá acceder a esta función desde webhooks entrantes, reglas y funciones con nombre.

can_evaluate
Document

Una expresión de regla que evalúa true si se permite que la función se ejecute en respuesta a una solicitud determinada.

disable_arg_logs
Boolean

Si true es, App Services omite los argumentos proporcionados a una función de la entrada del registro de ejecución de la función.

run_as_system
Boolean

Si true es, la función de webhook se ejecuta como usuario del sistema. Esto anula cualquier valor definido run_as_user_id para run_as_user_id_script_source y.

run_as_user_id
String

El ID único de un usuario de App Services con el que siempre se ejecuta la función. No se puede usar run_as_user_id_script_source con.

run_as_user_id_script_source
String

Una función convertida en cadena que se ejecuta al llamar al webhook y devuelve el ID único del usuario de App Services que la ejecuta. No se puede usar run_as_user_id con.

respond_result
Boolean

Si es true, App Services incluye el valor de retorno de la función webhook como el cuerpo de la respuesta HTTP que envía al cliente que inició la solicitud de webhook.

options
Document

Un documento que contiene opciones de configuración para el webhook.

{
"httpMethod": "<HTTP Method>",
"validationMethod": "<Webhook Validation Method>",
"secret": "<Webhook Secret>"
}
Campo
Descripción
httpMethod
String

El tipo de método HTTP que acepta el webhook. Las solicitudes entrantes de webhook deben usar este método.

validationMethod
String

El nombre del método de validación de solicitudes utilizado por el webhook.

Opciones válidas:

  • "VERIFY_PAYLOAD"

  • "SECRET_AS_QUERY_PARAM"

  • "NO_VALIDATION"

secret
String

El valor secreto utilizado para validar las solicitudes de webhook entrantes.

fuente.js
exports = function() {
// webhook function code
};

Los activadores se definen en el /triggers directorio de su aplicación.

Cada disparador se define en su propio archivo JSON con el mismo nombre que el disparador.

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>,
}
Campo
Descripción
id
String

Una cadena que identifica de forma única el disparador. Atlas App Services genera automáticamente un ID único para un disparador al crearlo.

name
String

El nombre del disparador. El nombre puede tener como máximo 64 caracteres y solo puede contener letras ASCII, números, guiones bajos y guiones.

type
String

El tipo de evento de aplicación que el disparador escucha.

Opciones válidas:

  • "DATABASE"

  • "AUTHENTICATION"

  • "SCHEDULED"

function_name
String

Nombre de la función Atlas que el disparador ejecuta al activarse. El disparador pasa argumentos automáticamente a la función según el disparador type.

config
Document

Un documento con campos que asignan opciones de configuración adicionales para el disparador. Los campos de configuración exactos dependen del disparador type.

disabled
Boolean

Si es true, el disparador no escuchará ningún evento y no se activará.

Los archivos que desee alojar en Atlas App Services deben incluirse en el directorio de su /hosting aplicación. Cada archivo se cargará con los metadatos definidos metadata.json en.

Puede configurar los metadatos de cada archivo alojado metadata.json en. Este archivo de configuración de metadatos es una matriz de documentos que corresponden a los atributos de metadatos de un archivo alojado.

yourRealmApp/
└── hosting/
├── metadata.json
└── files/
└── <files to host>
metadatos.json
[
{
"path": "<File Resource Path>",
"attrs": [{
"name": "<Attribute Type>",
"value": "<Attribute Value>"
}]
}
]
Campo
Descripción
path
String

La ruta de recursos del archivo.

attrs
Array<Document>

Un arreglo de documentos en la que cada documento representa un solo atributo de metadatos. Los documentos de atributos tienen la siguiente forma:

Metadata Attribute Document
{
"name": "<Attribute Type>",
"value": "<Attribute Value>"
}
Campo
Descripción
name
String

El nombre del atributo de metadatos. Debe ser uno de los atributos de metadatos de archivo compatibles con App Services.

value
String

El valor del atributo de metadatos.

Nota

Si no especifica un atributo de metadatos Content-Type para un archivo alojado, Atlas App Services intentará agregarle automáticamente un atributo Content-Type según la extensión del archivo.

Por ejemplo, App Services agregaría automáticamente el atributo Content-Type: application/html al archivo myPage.html.

Los valores se definen en el directorio /values de su aplicación.

Cada valor se define en su propio archivo JSON que lleva el nombre del valor.

yourRealmApp/
└── values/
└── <value name>.json
<value name>.json
{
"id": "<Value ID>",
"name": "<Value Name>",
"from_secret": <boolean>,
"value": <Stored JSON Value|Secret Name>
}
Campo
Descripción
id
String

Una cadena que identifica de forma única el valor. Atlas App Services genera automáticamente un ID único para un valor al crearlo.

name
String

Un nombre único para el valor. Este nombre es el que se utiliza para referirse al valor en funciones y reglas.

from_secret
Boolean

Valorfalse predeterminado:. Si true es, el valor expone un secreto en lugar de un valor JSON de texto sin formato.

value
String, Array, or Object

Los datos almacenados que App Services expone cuando se hace referencia al valor.

Si from_secret es false, value puede ser una cadena JSON, una matriz o un objeto estándar.

Si from_secret truees, value es una cadena que contiene el nombre del secreto que expone el valor.

Volver

v20210101