Docs Menu
Docs Home
/ /
Atlas App Services
/ /

애플리케이션 구성 파일(레거시)

이 페이지의 내용

  • 개요
  • 구성 파일은 언제 사용하나요?
  • 디렉토리 구조
  • 애플리케이션 구성
  • 구성
  • 인증 공급자
  • 구성
  • 함수
  • 구성
  • 소스 코드
  • MongoDB 서비스
  • 서비스 구성
  • 동기화된 클러스터 구성
  • MongoDB collection 규칙(비동기화)
  • 외부 서비스
  • 서비스 구성
  • 서비스 규칙
  • 수신 Webhooks
  • 트리거
  • 구성
  • 호스팅
  • 메타데이터 구성
  • Values
  • 구성

참고

레거시 페이지

이 페이지에서는 realm-cli 버전 1에서 사용되는 레거시 구성 파일 형식에 대해 설명합니다. Atlas App Services 구성 파일에 대한 최신 설명은 앱 구성을 참조하세요.

App Services는 JSON 파일과 소스 코드 파일을 사용하여 애플리케이션의 모든 구성 요소를 정의하고 구성합니다. 각 구성 요소에는 특정 구성 파일 스키마가 있으며 모든 애플리케이션은 표준 파일 구조를 사용하여 구성 파일을 구성합니다.

모든 앱은 구성 파일 collection으로 구성되므로 앱을 만들거나 수정할 때마다 애플리케이션 구성 파일을 사용합니다. Realm UI를 사용하는 경우 구성 파일 자체를 직접 처리하는 경우는 거의 없지만, 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
String
애플리케이션의 App ID 입니다.
name
String

애플리케이션의 이름입니다.

참고

앱 이름 제한

애플리케이션 이름은 1자에서 32자 사이여야 하며 ASCII 문자, 숫자, 밑줄 및 하이픈만 포함할 수 있습니다.

security
Document

애플리케이션 수준 보안 기능에 대한 구성 옵션이 포함된 문서입니다.

"security": {
"allowed_request_origins": ["<Origin URL>"]
}
필드 이름
설명
allowed_request_origins
Array<String>

수신 요청이 시작될 수 있는 URL의 배열입니다. 허용된 요청 출처를 정의하면 Atlas App Services는 목록에 없는 출처에서 들어오는 모든 요청을 차단합니다.

요청 출처는 다음 형식의 URL입니다.

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

모든 호스팅된 파일에 대한 구성 옵션이 포함된 문서입니다.

"hosting": {
"enabled": <boolean>,
"custom_domain": "<Custom Domain Name>",
"app_default_domain": "<Default Domain Name>"
}
필드 이름
설명
enabled
Boolean
custom_domain
String
애플리케이션의 호스팅된 파일에 대한 사용자 지정 도메인 이름 입니다.
app_default_domain
String
애플리케이션의 호스팅 파일에 대한 기본 도메인입니다. App Services에서 이 값을 자동으로 설정하며 사용자는 변경할 수 없습니다.
config_version
Number
애플리케이션의 모든 구성 파일이 준수하는 스키마 버전입니다. 이 값은 기계적으로 생성되므로 일반적으로 수동으로 설정하거나 수정해서는 안 됩니다.
custom_user_data_config
Document

사용자 지정 사용자 데이터에 대한 구성 옵션이 포함된 문서입니다.

"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
Boolean
true 인 경우 App Services는 각 사용자를 지정된 collection에 저장된 데이터가 포함된 문서와 연결합니다.
mongo_service_id
String
사용자 지정 사용자 데이터가 포함된 MongoDB Atlas 데이터 소스 의 서비스 ID입니다. 이 값은 서비스 구성 파일의 id 필드에서 찾을 수 있습니다.
database_name
String
사용자 지정 사용자 데이터 컬렉션이 포함된 데이터베이스의 이름입니다.
collection_name
String
사용자 지정 사용자 데이터가 포함된 collection의 이름입니다.
user_id_field
String
문서에서 설명하는 애플리케이션 사용자의 사용자 ID를 포함하는 각 사용자 지정 데이터 문서의 필드 이름입니다.
deployment_model
String

애플리케이션의 배포 모델 유효한 값은 다음과 같습니다.

배포 모델
"GLOBAL"
"LOCAL"
location
String

애플리케이션이 배포되는 클라우드 리전 의 이름입니다.

  • 로컬 애플리케이션 은 모든 프로세스
    이 리전의 애플리케이션 요청 및 데이터베이스 쓰기 수입니다.
  • 글로벌 애플리케이션 은 이 리전에서 모든 데이터베이스 쓰기를 처리하지만 가장 가까운 배포 리전에서 다른 애플리케이션 요청을 처리합니다.

인증 제공자 는 애플리케이션의 /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
String
인증 제공자를 고유하게 식별하는 값입니다. Atlas App Services는 제공자를 만들 때 제공자의 고유 ID를 자동으로 생성합니다.
name
String
인증 제공자의 이름입니다.
type
String

인증 제공자의 유형 입니다.

유효한 옵션은 다음과 같습니다.

  • "anon-user"

  • "local-userpass"

  • "api-key"

  • "oauth2-apple"

  • "oauth2-google"

  • "oauth2-facebook"

  • "custom-token"

  • "custom-function"

config
Document
인증 제공자와 관련된 구성 값이 포함된 문서입니다. 이 필드의 존재 여부와 정확한 구성 필드는 제공자 유형에 따라 다릅니다.
secret_config
Document
각 필드 이름이 제공자의 비공개 구성 필드이고 각 필드의 값이 구성 값을 저장하는 Secret 의 이름인 문서입니다.
metadata_fields
Array<Document>
각 문서가 사용자를 설명하는 메타데이터 필드를 정의하는 문서 배열입니다. 이 필드의 존재 여부와 각 메타데이터 필드 문서의 정확한 형식은 제공자 유형에 따라 다릅니다.
disabled
Boolean
true 인 경우 이 인증 제공자는 애플리케이션에서 활성화되지 않으므로 사용할 수 없습니다.

Atlas Functions는 애플리케이션 /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
String
함수를 고유하게 식별하는 값입니다. App Services는 함수를 만들 때 함수에 대한 고유 ID를 자동으로 생성합니다.
name
String
함수의 이름입니다. 이름은 애플리케이션의 모든 기능 중에서 고유해야 합니다.
private
Boolean
true 인 경우, 이 함수는 HTTPS endpoints, 규칙 및 명명된 함수에서만 액세스할 수 있습니다.
can_evaluate
Document
특정 요청에 대한 응답으로 함수가 실행되도록 허용될 때 true 으)로 평가되는 규칙 표현식 입니다.
disable_arg_logs
Boolean
run_as_system
Boolean
true 인 경우 이 함수 는 시스템 사용자로 실행됩니다. 이는 run_as_user_idrun_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
함수가 호출될 때마다 실행되고 함수가 실행되는 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 cluster를 연결하기 위한 구성 파일의 형식은 다음과 같아야 합니다.

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>"
}
}

cluster를 연결하는지 또는 연합 데이터 소스를 연결하는지에 따라 config.dataLakeNameconfig.clusterName 중 정확히 하나가 필요합니다.

필드
설명
id
String
서비스를 고유하게 식별하는 문자열입니다. App Services는 MongoDB 서비스를 만들 때 해당 서비스의 고유 ID를 자동으로 생성합니다.
name
String
서비스의 이름입니다. 이름은 최대 64자까지 입력할 수 있으며 ASCII 문자, 숫자, 밑줄, 하이픈만 포함할 수 있습니다. cluster의 경우 기본 이름은 mongodb-atlas 입니다. 연합 데이터 소스의 경우 mongodb-datafederation 입니다.
type
String
MongoDB Atlas cluster의 경우 이 값은 항상 "mongodb-atlas" 입니다. 연합 데이터 소스의 경우 이 값은 "datalake" 입니다.
config.clusterName
String
cluster를 연결할 때 필요합니다. MongoDB Atlas에 있는 서비스의 연결된 클러스터 이름입니다.
config.dataLakeName
String
연합 데이터 소스를 연결할 때 필요합니다. 애플리케이션에 연결하려는 인스턴스의 이름입니다.
config.readPreference
String

서비스를 통해 전송된 쿼리에 대한 읽기 설정 (read preference) 모드입니다. 연합 데이터 소스에는 사용할 수 없습니다.

모드
설명
기본
Atlas App Services는 모든 읽기 작업을 현재 복제본 세트 프라이머리 노드 로 라우팅합니다. 이는 기본 읽기 설정 모드입니다.
Atlas App Services는 모든 읽기 작업을 현재 복제본 세트 프라이머리 노드 (사용 가능한 경우)로 라우팅합니다. 자동 페일오버 와 같이 프라이머리 노드를 사용할 수 없는 경우 읽기 요청은 대신 세컨더리 노드 로 라우팅됩니다.
Atlas App Services는 모든 읽기 작업을 현재 복제본 세트 세컨더리 노드 중 하나로 라우팅합니다.
Atlas App Services는 모든 읽기 작업을 복제본 세트의 사용 가능한 세컨더리 노드 중 하나로 라우팅합니다. 사용할 수 있는 세컨더리가 없는 경우 읽기 요청은 대신 복제본 세트 프라이머리 로 라우팅됩니다.
Atlas App Services는 클라이언트에 비해 네트워크 지연 시간이 가장 짧은 복제본 세트 멤버 로 읽기 작업을 라우팅합니다.
config.sync
Document

구성 document로 cluster의 동기화 여부를 결정하고, 동기화 된 경우 cluster에서의 동기화 작업에 대한 규칙을 정의합니다. 연합 데이터 소스에는 사용할 수 없습니다.

동기화 구성 문서에 대한 자세한 내용은 동기화된 클러스터 구성을 참조하세요.

config.jsonconfig.sync 필드는 cluster가 동기화 되었는지 여부를 결정하고 동기화된 경우 cluster에서 동기화 작업에 대한 규칙을 정의합니다.

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
Boolean
true 인 경우 클러스터 에 대해 동기화 가 활성화되어 클라이언트 애플리케이션이 클러스터 의 데이터를 Realm 데이터베이스와 동기화 할 수 있으며 비동기화 컬렉션 규칙 이 적용 되지 않습니다.
sync.development_mode_enabled
Boolean
true 인 경우 cluster에 대해 개발 모드가 활성화됩니다. 이 옵션을 활성화하면 Atlas App Services는 동기화된 객체를 cluster 내의 특정 데이터베이스에 저장하고, 해당 데이터베이스의 collection 스키마에 Realm 객체 유형을 미러링합니다.
sync.database_name
String

App Services가 동기화된 객체를 저장해야 하는 동기화된 클러스터의 데이터베이스 이름입니다.

개발 모드가 활성화되면 App Services는 동기화된 객체를 이 데이터베이스에 저장합니다. 각 Realm 객체 유형은 동기화된 객체와 일치하는 스키마를 사용하여 데이터베이스의 자체 collection에 매핑됩니다.

sync.partition.key
String
데이터를 개별 동기화 영역에 매핑하는 파티션 키 필드의 이름입니다.
sync.partition.type
String
파티션 키 필드 값의 유형입니다.
sync.partition.permissions
Document
동기화된 클러스터에 대한 readwrite 권한을 정의하는 문서입니다. 권한은 App Services가 사용자별, 파티션별로 평가하는 규칙 표현식 으로 정의됩니다. 표현식은 %%user%%partition 확장에 액세스할 수 있습니다.

동기화된 클러스터의 경우, App Services가 각 요청에 대해 동적으로 평가하는 collection 수준 규칙을 정의할 수 있습니다. 각 컬렉션의 규칙은 해당 컬렉션의 구성 하위 디렉토리인 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
String
트리거를 고유하게 식별하는 문자열입니다. App Services는 트리거를 만들 때 트리거에 대한 고유 ID를 자동으로 생성합니다.
database
String
collection을 보유한 데이터베이스의 이름입니다.
collection
String
컬렉션의 이름입니다.
roles
Array<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

역할 이 사용자에게 적용될 때 참으로 평가되는 표현식 입니다.

Realm Mobile Sync(유연 모드)가 활성화되어 있지 않으면 App Services는 문서별로 역할을 할당합니다. Realm Mobile Sync(유연 모드)가 활성화되면 App Services는 collection별, 세션별로 즉, 클라이언트가 동기화 연결을 열 때 동기화된 각 collection에 대해 역할을 할당합니다.

App Services는 역할을 할당하기 위해 역할이 참으로 평가될 때까지 각 잠재적 역할의 apply_when 를 평가합니다. 잠재적 역할은 지정된 collection의 rules.json 구성 파일에 지정된 역할이거나, 지정된 collection에 대해 rules.json 파일이 없는 경우 기본 역할입니다. App Services는 구성에서 지정한 순서대로 역할을 평가합니다. 일치하는 역할이 없으면 액세스가 거부됩니다. 자세한 내용은 역할 기반 권한을 참조하세요.

Realm Mobile Sync(유연 모드)가 활성화된 경우, 할당된 역할은 동기화와 호환 되어야 합니다. 역할이 동기화와 호환되지 않지만 apply_when 가 참으로 평가되면 다른 역할은 고려되지 않습니다. 액세스가 거부되었습니다.

document_filters
Document
Default: undefined

역할의 다른 권한을 평가할 수 있는지 여부를 결정하는 읽기 및 쓰기 표현식이 포함된 문서입니다.

Realm Mobile Sync가 활성화된 경우 document_filters.readdocument_filters.write 를 모두 정의해야 역할 동기화 호환 가능 합니다. 동기화와 호환되지 않는 역할은 동기화 요청에 대한 모든 액세스를 거부합니다.

Realm Mobile Sync가 활성화되어 있지 않은 경우 document_filters, document_filters.readdocument_filters.write 는 모두 선택 사항입니다. 정의되지 않은 document_filters.read 또는 document_filters.write 의 기본값은 true이므로 후속 권한을 평가할 수 있습니다.

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

read, fields 의 읽기 권한 및 additional_fields 의 읽기 권한을 평가할 수 있는지 여부를 지정하는 표현식 입니다. 거짓인 경우(그리고 document_filters.write 가 정의되지 않았거나 거짓인 경우) 전체 문서에 대한 읽기 액세스가 거부됩니다.

동기화 호환성 을 유지하려면 표현식을 정의해야 하며 쿼리 가능한 필드만 참조할 수 있습니다.

document_filters.write
object?
Default: undefined

write, fields 의 쓰기 권한 및 additional_fields 의 쓰기 권한을 평가할 수 있는지 여부를 지정하는 표현식 입니다. false인 경우 전체 문서에 대한 쓰기 액세스가 거부됩니다.

동기화 호환성 을 유지하려면 표현식을 정의해야 하며 쿼리 가능한 필드만 참조할 수 있습니다.

read
object?
Default: undefined

역할에 문서의 모든 필드를 읽을 수 있는 권한이 있는 경우 참으로 평가되는 표현식 입니다.

동기화 호환성 을 유지하려면 표현식이 부울 리터럴( true 또는 false)이어야 합니다.

문서 수준 읽기 권한은 모든 필드 수준 권한보다 우선 순위를 가집니다. 역할에 문서 수준 read 권한이 있는 경우 문서의 모든 필드에 적용됩니다. fields 또는 additional_fields (으)로 지정된 읽기 권한은 문서 수준 read 권한을 재정의하지 않습니다.

필드 수준 규칙과 함께 기본 대체를 정의하려면 read additional_fields 을 사용합니다.

write
object?
Default: undefined

역할에 문서의 모든 필드를 추가, 수정 또는 제거할 수 있는 권한이 있는 경우 참으로 평가되는 표현식 입니다.

동기화 호환성 을 유지하려면 표현식이 부울 리터럴( true 또는 false)이어야 합니다.

문서 수준 쓰기 권한은 모든 필드 수준 권한보다 우선합니다. 역할에 문서 수준 write 권한이 있는 경우 문서의 모든 필드에 적용됩니다. fields 또는 additional_fields (으)로 지정된 쓰기 권한은 문서 수준 write 권한을 재정의하지 않습니다.

필드 수준 규칙과 함께 기본 대체를 정의하려면 write additional_fields 을 사용합니다.

write JSON 표현식에서 %%root%%prevRoot 과 같은 확장을 사용할 수 있습니다.

중요

암시적 읽기 권한

역할에 특정 범위에 대한 write 권한이 있을 때마다 명시적으로 정의되지 않았더라도 read 권한도 갖게 됩니다.

insert
object?
Default: true

역할에 새 document를 collection에 삽입할 수 있는 권한이 있는 경우 true 으)로 평가되는 표현식 입니다.

App Services는 삽입 작업에 대해 그리고 역할에 새 문서의 모든 필드에 대한 write 권한이 있는지 확인한 후에만 이 표현식을 평가합니다.

delete
object?
Default: true

역할에 collection에서 문서를 삭제할 수 있는 권한이 있는 경우 true로 평가되는 표현식 입니다.

App Services는 삭제 작업에 대해 그리고 역할에 삭제할 문서의 모든 필드에 대한 write 권한이 있는지 확인한 후에만 삭제 작업에 대해 이 표현식을 평가합니다.

search
Boolean
Default: true

역할에 Atlas Search를 사용하여 컬렉션 Atlas Search에 대한 권한이 있는 경우 true로 평가되는 표현식 입니다 Atlas Search

중요

App Services는 시스템 사용자로 $search 작업을 수행하고 반환된 검색 결과에 필드 수준 규칙을 적용합니다. 즉, 사용자가 읽기 액세스 권한이 없는 필드에서 검색할 수 있습니다. 이 경우 검색은 지정된 필드를 기반으로 하지만 반환된 문서에는 필드가 포함되지 않습니다.

fields
Document
Default: {}

각 키가 필드 이름에 해당하고 각 값이 쿼리된 문서의 해당 필드에 대한 역할의 필드 수준 readwrite 권한을 정의하는 문서입니다.

동기화 호환성 을 유지하려면 내부 readwrite 표현식이 부울 리터럴( true 또는 false)이어야 합니다.

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

참고

권한 우선 순위

문서 수준 read 또는 write 권한은 동일한 유형의 모든 필드 수준 권한을 재정의합니다. 내장된 문서가 포함된 필드에 대해 권한이 정의된 경우 해당 권한은 문서의 내장된 필드에 정의된 모든 권한보다 우선합니다.

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

역할에 필드를 읽을 수 있는 권한이 있는 경우 true로 평가되는 표현식 입니다.

동기화 호환성 을 유지하려면 표현식이 부울 리터럴( true 또는 false)이어야 합니다.

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

역할에 필드를 추가, 수정 또는 제거할 수 있는 권한이 있는 경우 true로 평가되는 표현식 입니다.

동기화 호환성 을 유지하려면 표현식이 부울 리터럴( true 또는 false)이어야 합니다.

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

쿼리된 문서에서 이 필드 내에 포함된 필드에 대한 readwrite 권한을 정의하는 fields 문서입니다.

자세한 내용은 내장된 문서에 대한 필드 수준 권한 역할 패턴을 참조하세요.

additional_fields
Document
Default: {}

fields 문서에 권한이 명시적으로 정의되지 않은 쿼리된 문서의 모든 필드에 대한 역할의 필드 수준 readwrite 권한을 정의하는 문서입니다.

동기화 호환성 을 유지하려면 내부 readwrite 표현식이 부울 리터럴( true 또는 false)이어야 합니다.

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

fields 에 필드 수준 권한 정의가 없는 필드를 읽을 수 있는 권한이 역할에 있는 경우 true로 평가되는 표현식 입니다.

동기화 호환성 을 유지하려면 표현식이 부울( true 또는 false)이어야 합니다.

additional_fields.write
object?
Default: false

fields 에 필드 수준 권한 정의가 없는 필드를 추가, 수정 또는 제거할 수 있는 권한이 역할에 있는 경우 true로 평가되는 표현식 입니다.

동기화 호환성 을 유지하려면 표현식이 부울( true 또는 false)이어야 합니다.

schema
Document

문서 스키마. 루트 수준 스키마는 다음 형식을 갖는 객체 스키마 여야 합니다.

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

다음과 같은 형식을 갖는 필터 구성 문서 의 배열입니다.

{
"name": "<Filter Name>",
"apply_when": { Expression },
"query": { MongoDB Query },
"projection": { MongoDB Projection }
}
필드
설명
name
string
필수입니다. 필터의 이름입니다. 필터 이름은 필터를 식별하고 구분하는 데 유용합니다. 100자 이하로 제한됩니다.
apply_when
object

이 필터가 수신 MongoDB 작업에 적용되는 시기를 결정하는 표현식 입니다.

중요

Atlas App Services는 문서를 읽기 전에 필터를 평가하고 적용하므로 필터의 적용 시기 표현식에서 MongoDB 문서 확장을 사용할 수 없습니다. 그러나 %%user, %%values%function와(과) 같은 다른 확장을 사용할 수 있습니다.

query
object
Default: {}

Atlas App Services가 필터링된 작업의 기존 쿼리에 병합하는 MongoDB 쿼리 입니다.

예시

필터는 다음 쿼리를 사용하여 미만의 가 있는 문서를 보류합니다.score 20

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

Atlas App Services가 필터링된 작업의 기존 프로젝션에 병합하는 MongoDB 프로젝션 입니다.

중요

프로젝션 충돌

MongoDB 프로젝션은 포괄적 또는 배타적일 수 있습니다. 즉, 지정된 필드만 반환하거나 지정되지 않은 필드를 보류할 수 있습니다. 쿼리에 여러 필터가 적용되는 경우 필터가 모두 동일한 유형의 프로젝션을 지정해야 하며, 그렇지 않으면 쿼리가 실패합니다.

예시

필터는 다음 프로젝션을 사용하여 모든 문서에서 _internal 필드를 보류합니다.

{ "_internal": 0 }

타사 서비스/services 디렉토리에 정의되어 있습니다. 각 서비스는 서비스와 동일한 이름을 가진 자체 하위 디렉토리에 매핑됩니다.

각 서비스 디렉토리에는 다음이 포함됩니다.

  • config.json: 서비스 구성 파일

  • /rules: 서비스 규칙 구성의 하위 디렉토리

  • /incoming_webhooks: 웹훅 구성의 하위 디렉토리(서비스가 웹훅을 지원하는 경우, 즉 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
String
서비스를 고유하게 식별하는 문자열입니다. Atlas App Services는 사용자가 서비스를 생성할 때 서비스의 고유 ID를 자동으로 생성합니다.
name
String
서비스의 이름입니다. 이름은 최대 64자까지 입력할 수 있으며 ASCII 문자, 숫자, 밑줄, 하이픈만 포함할 수 있습니다.
type
String

서비스의 유형입니다.

유효한 옵션은 다음과 같습니다.

  • "http"

  • "aws"

  • "twilio"

  • "github"

  • "gcm"

config
Document

서비스의 추가 구성 옵션에 매핑되는 필드가 있는 문서입니다. 정확한 구성 필드는 type 서비스에 따라 다릅니다.

secret_config
Document
각 필드 이름이 해당 서비스의 비공개 구성 필드이고 각 필드의 값이 구성 값을 저장하는 Secret 의 이름인 문서입니다.

특정 외부 서비스에 대한 규칙은 /<service name>/rules 하위 디렉토리에 정의되어 있습니다.

각 규칙은 규칙과 이름이 같은 자체 JSON 파일에 매핑됩니다.

<rule name>.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 으)로 평가되는 규칙 표현식 입니다.

특정 서비스에 대한 수신 webhooks는 /<service name>/incoming_webhooks/ 하위 디렉토리에 정의되어 있습니다.

수신 웹훅 은 함수와 동일한 구성 형식을 사용 하지만 추가 구성 매개변수가 있습니다.

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
String
함수를 고유하게 식별하는 값입니다. App Services는 함수를 만들 때 함수에 대한 고유 ID를 자동으로 생성합니다.
name
String
함수의 이름입니다. 이름은 애플리케이션의 모든 기능 중에서 고유해야 합니다.
private
Boolean
true 인 경우, 이 함수는 수신 웹훅, 규칙 및 명명된 함수에서만 액세스할 수 있습니다.
can_evaluate
Document
주어진 요청에 대한 응답으로 함수가 실행되도록 허용된 경우 true 으)로 평가되는 규칙 표현식 입니다.
disable_arg_logs
Boolean
run_as_system
Boolean
true 인 경우, 웹훅 함수 는 시스템 사용자로 실행됩니다. 이는 run_as_user_idrun_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
웹훅이 호출될 때마다 실행되고 함수 가 실행되는 App Services 사용자 의 고유 ID를 반환하는 문자열화된 함수입니다. run_as_user_id 와 함께 사용할 수 없습니다.
respond_result
Boolean
true 인 경우 App Services는 웹훅 요청을 시작한 클라이언트에 전송하는 HTTP 응답의 본문으로 웹훅 함수 반환 값을 포함합니다.
options
Document

웹훅에 대한 구성 옵션이 포함된 문서입니다.

{
"httpMethod": "<HTTP Method>",
"validationMethod": "<Webhook Validation Method>",
"secret": "<Webhook Secret>"
}
필드
설명
httpMethod
String
웹훅이 허용하는 HTTP 메서드 유형입니다. 수신 웹훅 요청은 이 메서드를 사용해야 합니다.
validationMethod
String

웹훅이 사용하는 요청 유효성 검사 메서드 의 이름입니다.

유효한 옵션은 다음과 같습니다.

  • "VERIFY_PAYLOAD"

  • "SECRET_AS_QUERY_PARAM"

  • "NO_VALIDATION"

secret
String
source.js
exports = function() {
// webhook function code
};

Atlas Triggers 는 애플리케이션의 /triggers 디렉토리에 정의되어 있습니다.

각 trigger는 trigger와 이름이 같은 자체 JSON 파일에 정의되어 있습니다.

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
String
trigger를 고유하게 식별하는 문자열입니다. Atlas App Services는 trigger를 생성할 때 trigger에 대한 고유 ID를 자동으로 생성합니다.
name
String
trigger의 이름입니다. 이름은 최대 64자까지 입력할 수 있으며 ASCII 문자, 숫자, 밑줄, 하이픈만 포함할 수 있습니다.
type
String

trigger가 수신 대기하는 애플리케이션 이벤트 유형 입니다.

유효한 옵션은 다음과 같습니다.

  • "DATABASE"

  • "AUTHENTICATION"

  • "SCHEDULED"

function_name
String
트리거가 실행될 때마다 실행하는 Atlas Function의 이름입니다. trigger는 trigger type 에 따라 인수를 함수에 자동으로 전달합니다.
config
Document

트리거의 추가 구성 옵션에 매핑되는 필드가 있는 문서입니다. 정확한 필드는 trigger type 에 따라 달라집니다.

disabled
Boolean
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
String
파일의 리소스 경로 입니다.
attrs
Array<Document>

각 문서가 단일 메타데이터 속성을 나타내는 문서 배열입니다. 속성 문서의 형식은 다음과 같습니다.

메타데이터 속성 문서
{
"name": "<Attribute Type>",
"value": "<Attribute Value>"
}
필드
설명
name
String
메타데이터 속성의 이름입니다. App Services에서 지원하는 파일 메타데이터 속성 중 하나여야 합니다.
value
String
메타데이터 속성의 값입니다.

참고

호스팅된 파일에 Content-Type 메타데이터 속성을 지정하지 않으면 Atlas App Services는 파일 확장자를 기반으로 Content-Type 속성을 자동으로 추가하려고 시도합니다.

예를 들어 App Services는 myPage.html 파일에 Content-Type: application/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
String
값을 고유하게 식별하는 문자열입니다. Atlas App Services는 값을 만들 때 값에 대한 고유 ID를 자동으로 생성합니다.
name
String
값의 고유한 이름입니다. 이 이름은 함수와 규칙에서 값을 참조하는 방법입니다.
from_secret
Boolean
기본값: false. true 인 경우, 이 값은 일반 텍스트 JSON 값 대신 Secret 을 노출합니다.
value
String, Array, or Object

값이 참조될 때 App Services가 노출하는 저장된 데이터입니다.

from_secretfalse 인 경우, value 는 표준 JSON 문자열, 배열 또는 객체일 수 있습니다.

from_secrettrue 인 경우, value 는 값이 노출하는 Secret 의 이름을 포함하는 문자열입니다.

돌아가기

v20210101 [사용 중단됨]