Observação
Página legado
Esta página descreve o formato de arquivo de configuração legado utilizado pelo realm-cli versão 1. Para uma descrição atualizada dos arquivos de configuração do Atlas App Services, consulte Configuração da aplicação.
Visão geral
O App Services usa arquivos JSON e arquivos de código-fonte para definir e configurar todos os componentes de um aplicativo. Cada componente possui um esquema de arquivo de configuração específico e cada aplicativo usa uma estrutura de arquivo padrão para organizar os arquivos de configuração.
Quando usarei arquivos de configuração?
Cada aplicação é composta por uma collection de arquivos de configuração, então você utiliza os arquivos de configuração do aplicativo sempre que criar ou modificar uma aplicação. Se você usa a interface do usuário do App Services, raramente lida diretamente com os arquivos de configuração, mas outros métodos de implantação, como o App Services CLI e o GitHub , permitem que você defina e edite os arquivos de configuração diretamente.
Estrutura de Diretórios
A figura a seguir mostra uma visualização de alto nível da estrutura de diretório de um aplicativo:
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
Configuração do aplicativo
As informações de configuração no nível do aplicativo são definidas em um único documento chamado config.json armazenado no diretório raiz do seu aplicativo.
yourRealmApp/ └── config.json
Configuração
{ "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 | Descrição | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
app_idString | O App ID do aplicativo. | |||||||||||||||||||
nameString | O nome do aplicativo. ObservaçãoLimitações de nome da aplicaçãoOs nomes das aplicações devem ter entre 1 e 32 caracteres e podem conter apenas letras, números, sublinhados e hifens ASCII. | |||||||||||||||||||
securityDocument | Um documento que contém opções de configuração para recursos de segurança em nível de aplicativo.
| |||||||||||||||||||
hostingDocument | Um documento que contém opções de configuração para todos os arquivos hospedados:
| |||||||||||||||||||
config_versionNumber | A versão do esquema à qual todos os arquivos de configuração do aplicativo estão em conformidade. Este valor é gerado por máquina e normalmente você não deve defini-lo ou modificá-lo manualmente. | |||||||||||||||||||
custom_user_data_configDocument | Um documento que contém opções de configuração para dados de usuário personalizados.
| |||||||||||||||||||
deployment_modelString | O modelo de sistema do aplicativo . Os seguintes valores são válidos:
| |||||||||||||||||||
locationString | O nome da região de cloud na qual a aplicação está implementado.
|
Provedores de autenticação
Os provedores de autenticação são definidos no diretório /auth_providers do seu aplicativo.
Cada fornecedor é definido em seu próprio arquivo JSON com o nome do fornecedor. Para obter informações detalhadas sobre como configurar e usar um provedor de autenticação específico, consulte a página de referência do provedor.
yourRealmApp/ └── auth_providers/ └── <provider name>.json
Configuração
{ "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 | Descrição |
|---|---|
idString | Um valor que identifica exclusivamente o provedor de autenticação. O Atlas App Services gera automaticamente um ID exclusivo para um fornecedor quando você o cria. |
nameString | O nome do provedor de autenticação. |
typeString | O tipo do provedor de autenticação. Opções válidas:
|
configDocument | Um documento que contém valores de configuração específicos para o provedor de autenticação. A existência deste campo e seus campos de configuração exatos dependem do tipo de provedor. |
secret_configDocument | Um documento em que cada nome de campo é um campo de configuração privada para o provedor e o valor de cada campo é o nome de um segredo que armazena o valor de configuração. |
metadata_fieldsArray<Document> | Uma array de documentos, onde cada documento define um campo de metadados que descreve o usuário. A existência deste campo e o formato exato de cada documento de campo de metadados dependem do tipo de fornecedor. |
disabledBoolean | Se |
Funções
As Função de Realm são definidas em um subdiretório do diretório /functions da sua aplicação. Cada função mapeia para seu próprio subdiretório com o mesmo nome da função.
Cada função é configurada no config.json e tem seu código-fonte definido no source.js.
yourRealmApp/ └── functions/ └── <function name>/ ├── config.json └── source.js
Configuração
{ "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 | Descrição |
|---|---|
idString | Um valor que identifica exclusivamente a função. O App Services gera automaticamente um ID exclusivo para uma função quando você a cria. |
nameString | O nome da função. O nome deve ser exclusivo entre todas as funções do seu aplicativo. |
privateBoolean | Se |
can_evaluateDocument | Uma expressão de regra que avalia para |
disable_arg_logsBoolean | Se |
run_as_systemBoolean | Se |
run_as_user_idString | O ID exclusivo de um usuário do App Services com o qual a função sempre é executada. Não é possível usar com |
run_as_user_id_script_sourceString | Uma função em string que é executada sempre que a função é chamada e retorna o ID exclusivo de um usuário do App Services com o qual a função é executada. Não é possível usar com |
código fonte
exports = function() { // function code };
Serviços do MongoDB
Cada conjunto de dados do MongoDB Atlas vinculada ao seu aplicativo é configurada como um serviço no diretório /services . Cada fonte de dados mapeia para seu próprio subdiretório com o mesmo nome do serviço.
A configuração de serviço primária para uma fonte de dados do MongoDB Atlas é config.json , que define parâmetros de conexão e regras de sincronização.
Se a fonte de dados não for um cluster sincronizado ou uma instância de banco de dados federado , você poderá definir as regras em nível de coleção no subdiretório /rules .
yourRealmApp/ └── services/ └── <MongoDB Service Name>/ ├── config.json └── rules/ └── <rule name>.json
Importante
Os nomes de serviço do MongoDB não são necessariamente iguais ao nome da fonte de dados vinculada no Atlas. Você define o nome de serviço para uma fonte de dados quando a vincula ao seu aplicativo. Para clusters vinculados, o nome padrão do serviço MongoDB é mongodb-atlas. Para conjunto de dados federadas, o nome do serviço padrão é mongodb-datafederation.
Configuração do serviço
O arquivo de configuração para vincular um cluster do Atlas deve ter o seguinte formulário:
{ "id": "<Service ID>", "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean>, "sync": <Sync Configuration> } }
O arquivo de configuração de um conjunto de dados federado deve ter o seguinte formato:
{ "id": "<Service ID>", "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
Exatamente um de config.dataLakeName e config.clusterName é necessário, dependendo se você está vinculando um cluster ou uma fonte de dados federada.
Campo | Descrição | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idString | Uma string que identifica exclusivamente o serviço. O App Services gera automaticamente um ID exclusivo para um serviço MongoDB quando você o cria. | ||||||||||||
nameString | O nome do serviço. O nome pode ter no máximo 64 caracteres e só pode conter letras, números, sublinhados e hífens ASCII. Para clusters, o nome padrão é | ||||||||||||
typeString | Para o MongoDB Atlas, esse valor é sempre | ||||||||||||
config.clusterNameString | Obrigatório ao vincular um cluster. O nome do cluster vinculado do serviço no MongoDB Atlas. | ||||||||||||
config.dataLakeNameString | Obrigatório ao vincular um conjunto de dados federados. O nome da instância que você deseja vincular ao seu aplicativo. | ||||||||||||
config.readPreferenceString | O modo de read preference para queries enviadas por meio do serviço. Não disponível para conjunto de dados federados.
| ||||||||||||
config.syncDocument | Um documento de configuração que determina se um cluster está sincronizado e, se estiver, define as regras para operações de sincronização no cluster. Não disponível para conjunto de dados federados. Para obter informações detalhadas sobre documentos de configuração de sincronização, consulte Configuração de cluster sincronizado. |
Configuração do cluster sincronizado
O campo config.sync de config.json determina se um cluster está sincronizado e, se estiver, define as regras para operações de sincronização no cluster.
{ ..., "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 | Descrição |
|---|---|
sync.stateBoolean | Se |
sync.development_mode_enabledBoolean | Se |
sync.database_nameString | O nome do reconhecimento de data center no cluster sincronizado em que o App Services deve armazenar objeto sincronizados. Quando o modo de desenvolvimento está habilitado, o App Services armazena objetos sincronizados nesse banco de dados. Cada Tipo de objeto de Realm é mapeado para sua própria collection no reconhecimento de data center com um esquema que corresponde ao objeto sincronizado. |
sync.partition.keyString | O nome do campo chave da partição que mapeia os dados em domínios sincronizados individuais. |
sync.partition.typeString | O tipo do valor do campo chave da partição. |
sync.partition.permissionsDocument | Um documento que define as permissões |
Regras de coleção do MongoDB (não sincronizadas)
Para cluster sincronizado, você pode definir regras em nível de collection que o App Services avalia dinamicamente para cada solicitação. As regras de cada coleção são armazenadas em um arquivo rules.json no subdiretório de configuração dessa coleção, que é data_sources/<data-source-name>/<database-name>/<collection-name>/.
Observação
As fontes de dados federadas não suportam regras ou esquemas. Você só pode acessar uma fonte de dados federada a partir de uma função do sistema.
{ "id": "<Rule ID>", "database": "<Database Name>", "collection": "<Collection Name>", "roles": [<Role>], "schema": <Document Schema>, "filters": [<Filter>], }
Campo | Descrição | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idString | Uma string que identifica exclusivamente o trigger. O App Services gera automaticamente um ID exclusivo para um trigger quando você o cria. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
databaseString | O nome do reconhecimento de data center que contém a collection. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
collectionString | O nome da collection. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rolesArray<Document> | Uma matriz de documentos de configuração de funções, com o seguinte formato:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
schemaDocument | Um esquema de documento. O esquema de nível raiz deve ser um esquema de objeto, que possui o seguinte formato: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
filtersArray<Document> | Uma array de documentos de configuração de filtros, que têm o seguinte formato:
|
Serviços externos
os serviços de terceiros são definidos no diretório /services . Cada serviço é mapeado para seu próprio subdiretório com o mesmo nome do serviço.
Cada diretório de serviço contém o seguinte:
config.json: um arquivo de configuração de serviço/rules: um subdiretório de configurações de regras de serviço/incoming_webhooks: um subdiretório de configurações do webhook (se o serviço oferecer suporte a webhooks, ou seja, HTTP, Github ou Twilio)
yourRealmApp/ └── services/ └── <services name>/ ├── config.json ├── incoming_webhooks/ │ ├── config.json │ └── source.js └── rules/ └── <rule name>.json
Configuração do serviço
{ "id": "<Service ID>", "name": "<Service Name>", "type": "<Service Type>", "config": { "<Configuration Option>": <Configuration Value> }, "secret_config": { "<Configuration Option>": "<Secret Name>" }, }
Campo | Descrição |
|---|---|
idString | Uma string que identifica exclusivamente o serviço. O Atlas App Services gera automaticamente um ID exclusivo para um serviço quando você o cria. |
nameString | O nome do serviço. O nome pode ter no máximo 64 caracteres e só pode conter letras, números, sublinhados e hífens ASCII. |
typeString | O tipo do serviço. Opções válidas:
|
configDocument | Um documento com campos que são mapeados para opções de configuração adicionais para o serviço. Os campos de configuração exatos dependem do serviço |
secret_configDocument | Um documento em que cada nome de campo é um campo de configuração privada para o serviço e o valor de cada campo é o nome de um segredo que armazena o valor de configuração. |
Regras de serviço
As regras para um serviço externo específico são definidas no subdiretório /<service
name>/rules .
Cada regra é mapeada para seu próprio arquivo JSON com o mesmo nome da regra.
{ "id": "<Rule ID>", "name": "<Rule Name>", "actions": ["<Service Action Name>"], "when": <JSON Rule Expression> }
Campo | Descrição |
|---|---|
idString | Uma string que identifica exclusivamente a regra. O App Services gera automaticamente um ID exclusivo para uma regra quando você a cria. |
nameString | O nome da regra de serviço. O nome pode ter no máximo 64 caracteres e só pode conter letras, números, sublinhados e hífens ASCII. |
actionsArray<String> | Uma lista de ação de serviço às quais a regra se aplica. A ação específica disponível depende do serviço |
whenDocument | Uma expressão de regra que avalia para |
Webhooks recebidos
Os webhooks recebidos para um serviço específico são definidos no subdiretório /<service name>/incoming_webhooks/ .
Os webhooks recebidos usam o mesmo formato de configuração que a função, mas têm parâmetros de configuração adicionais.
Configuração
{ "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 | Descrição | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
idString | Um valor que identifica exclusivamente a função. O App Services gera automaticamente um ID exclusivo para uma função quando você a cria. | |||||||||||||
nameString | O nome da função. O nome deve ser exclusivo entre todas as funções do seu aplicativo. | |||||||||||||
privateBoolean | Se | |||||||||||||
can_evaluateDocument | Uma expressão de regra que avalia para | |||||||||||||
disable_arg_logsBoolean | Se | |||||||||||||
run_as_systemBoolean | Se | |||||||||||||
run_as_user_idString | O ID exclusivo de um usuário do App Services com o qual a função sempre é executada. Não é possível usar com | |||||||||||||
run_as_user_id_script_sourceString | Uma função em string que é executada sempre que o webhook é chamado e retorna o ID exclusivo de um usuário do App Services com o qual a função é executada. Não é possível usar com | |||||||||||||
respond_resultBoolean | Se | |||||||||||||
optionsDocument | Um documento que contém opções de configuração para o webhook.
|
código fonte
exports = function() { // webhook function code };
Acionadores
Os Atlas Triggers são definidos no diretório /triggers da sua aplicação.
Cada trigger é definido em seu próprio arquivo JSON com o mesmo nome do trigger.
yourRealmApp/ └── triggers/ └── <trigger name>.json
Configuração
{ "id": "<Trigger ID>", "name": "<Trigger Name>", "type": "<Trigger Type>", "function_name": "<Trigger Function Name>", "config": { "<Configuration Option>": <Configuration Value> }, "disabled": <Boolean>, }
Campo | Descrição |
|---|---|
idString | Uma string que identifica exclusivamente o trigger. O Atlas App Services gera automaticamente um ID exclusivo para um trigger quando você o cria. |
nameString | O nome do trigger. O nome pode ter no máximo 64 caracteres e só pode conter letras, números, sublinhados e hífens ASCII. |
typeString | O tipo de evento do aplicativo que o trigger escuta. Opções válidas:
|
function_nameString | O nome da Função de Realm que o trigger executa sempre que é disparado. O trigger passa automaticamente argumentos para a função dependendo do trigger |
configDocument | Um documento com campos que são mapeados para opções de configuração adicionais para o trigger. Os campos de configuração exatos dependem do trigger |
disabledBoolean | Se |
Hospedagem
Os arquivos que você deseja hospedar no Atlas App Services devem ser incluídos no diretório /hosting do seu aplicativo. Cada arquivo será carregado com os metadados definidos em metadata.json.
Você pode configurar os metadados para cada arquivo hospedado no metadata.json. Esse arquivo de configuração de metadados é um array de documentos que cada um corresponde aos atributos de metadados de um único arquivo hospedado.
yourRealmApp/ └── hosting/ ├── metadata.json └── files/ └── <files to host>
Configuração de metadados
[ { "path": "<File Resource Path>", "attrs": [{ "name": "<Attribute Type>", "value": "<Attribute Value>" }] } ]
Campo | Descrição | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
pathString | O caminho do recurso do arquivo. | ||||||||||
attrsArray<Document> | Uma array de documentos, onde cada documento representa um único atributo de metadados. Os documentos de atributos têm o seguinte formato: Documento de atributo de metadados
|
Observação
Se você não especificar um atributo de metadados Content-Type para um arquivo hospedado, o Atlas App Services tentará adicionar automaticamente um atributo Content-Type a ele com base na extensão do arquivo.
Por exemplo, o App Services adicionaria automaticamente o atributo Content-Type: application/html ao arquivo myPage.html.
Values
Os valores são definidos no diretório /values do seu aplicativo.
Cada valor é definido em seu próprio arquivo JSON nomeado após o valor.
yourRealmApp/ └── values/ └── <value name>.json
Configuração
{ "id": "<Value ID>", "name": "<Value Name>", "from_secret": <boolean>, "value": <Stored JSON Value|Secret Name> }
Campo | Descrição |
|---|---|
idString | Uma string que identifica exclusivamente o valor. O Atlas App Services gera automaticamente um ID exclusivo para um valor quando você o cria. |
nameString | Um nome exclusivo para o valor. Esse nome é como você se refere ao valor em funções e regras. |
from_secretBoolean | Padrão: |
valueString, Array, or Object | Os dados armazenados que o App Services expõem quando o valor é referenciado. Se Se |