Docs Menu
Docs Home
/ /
Atlas App Services
/ /

アプリケーション構成ファイル(レガシー)

項目一覧

  • Overview
  • 構成ファイルをいつ使用するか?
  • ディレクトリ構造
  • アプリケーション構成
  • 構成
  • 認証プロバイダ
  • 構成
  • 関数
  • 構成
  • ソースコード
  • MongoDB Services
  • サービス構成
  • 同期されたクラスター構成
  • MongoDB コレクション ルール(非同期)
  • 外部サービス
  • サービス構成
  • サービス ルール
  • 受信 Webhook
  • トリガー
  • 構成
  • ホスティング
  • メタデータ構成
  • Values
  • 構成

注意

レガシーページ

このページでは、 realm-cliバージョン 1 で使用されるレガシー構成ファイル形式について説明します。 Atlas App Services の構成ファイルの最新の説明については、 「アプリ構成」 を参照してください。

Atlas App Services は JSON ファイルとソースコード ファイルを使用して、アプリケーションのすべてのコンポーネントの定義と構成を行います。 各コンポーネントには特定の構成ファイル スキーマがあり、すべてのアプリケーションは標準のファイル構造を使用して構成ファイルを整理します。

すべてのアプリは構成ファイルのコレクションで構成されているため、アプリを作成または変更するたびにアプリケーション構成ファイルを使用します。 App Services 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
trueの場合、 はアプリケーションが静的ファイルをホストできることを示します。
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 は各ユーザーを、指定されたコレクションに保存されているデータを含むドキュメントに関連付けます。
mongo_service_id
String
カスタム ユーザー データを含むMongoDB Atlas データソースのサービス ID。 この値は、サービス構成ファイルのidフィールドで確認できます。
database_name
String
カスタム ユーザー データ コレクションを含むデータベースの名前。
collection_name
String
カスタム ユーザー データが含まれるコレクションの名前。
user_id_field
String
ドキュメントが記述するアプリケーション ユーザーのユーザー ID を含む各カスタム データ ドキュメント内のフィールドの名前。
deployment_model
String

アプリケーションの配置モデル。 次の値が有効です。

配置モデル
"GLOBAL"
"LOCAL"
location
String

アプリケーションが配置されるクラウド リージョンの名前。

  • ローカル アプリケーションはすべてを処理します
    このリージョンのアプリケーション リクエストとデータベース書込み (write)。
  • グローバル アプリケーションはこのリージョンのすべてのデータベース書込みを処理しますが、他のアプリケーション リクエストは最も近い配置リージョンで処理されます。

認証プロバイダは、アプリケーションの/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
各フィールド名がプロバイダーのプライベート構成フィールドで、各フィールドの値が構成値を保存するシークレットの名前であるドキュメント。
metadata_fields
Array<Document>
各ドキュメントがユーザーを説明するメタデータ フィールドを定義するドキュメントの配列。 このフィールドの有無と各メタデータ フィールド ドキュメントの正確な形式は、プロバイダーの種類によって異なります。
disabled
Boolean
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
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サブディレクトリでコレクション レベルのルールを定義できます。

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

重要

MongoDB Service 名は、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の 1 つが必要になります。

フィールド
説明
id
String
サービスを一意に識別するstring 。 App Services は、MongoDB サービスを作成すると、そのサービス用に一意の ID を自動的に生成します。
name
String
サービスの名前。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。 クラスターのデフォルト名はmongodb-atlasです。 フェデレーティッド データソースの場合はmongodb-datafederationです。
type
String
MongoDB Atlas クラスターの場合、この値は常に"mongodb-atlas"です。 フェデレーティッド データソースの場合、この値は"datalake"です。
config.clusterName
String
クラスターをリンクする場合に必要です。 MongoDB Atlas 内のサービスの連結クラスターの名前。
config.dataLakeName
String
フェデレーティッド データ ソースをリンクする場合に必要です。 アプリケーションにリンクするインスタンスの名前。
config.readPreference
String

サービスを通じて送信されたクエリの 読み込み設定( read preference ) モード フェデレーティッド データソースでは使用できません。

モード
説明
プライマリ
App Services はすべての読み取り操作を現在のレプリカセットプライマリ ノードにルーティングします。 これは、デフォルトの読み込み設定 (read preference) モードです。
App Services は、すべての読み取り操作を現在のレプリカセットのプライマリ ノードにルーティングします(使用可能な場合)。 自動フェイルオーバー中などプライマリが使用できない場合は、代わりに読み取りリクエストはセカンダリ ノードにルーティングされます。
App Services は、すべての読み取り操作を現在のレプリカセットのセカンダリ ノードの 1 つにルーティングします。
App Services は、すべての読み取り操作をレプリカセットの使用可能なセカンダリ ノードの 1 つにルーティングします。 セカンダリが使用できない場合、読み取りリクエストは代わりにレプリカセットのプライマリにルーティングされます。
App Services は、クライアントと比較してネットワーク レイテンシが最も低いレプリカセット メンバーに読み取り操作をルーティングします。
config.sync
Document

クラスターが同期されるかどうかを決定し、同期されている場合はクラスターでの同期操作のルールを定義する構成ドキュメント。 フェデレーティッド データソースでは使用できません。

同期構成ドキュメントの詳細については、「 同期されたクラスター構成 」を参照してください。

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
Boolean
trueの場合、クラスターの同期は有効になっています。つまり、クライアント アプリケーションは Realm Database を使用してクラスター内のデータを同期でき、非同期コレクション ルールは適用されません。
sync.development_mode_enabled
Boolean
trueの場合、クラスターで開発モードが有効になります。 有効にすると、Atlas App Services は同期されたオブジェクトをクラスター内の特定のデータベースに保存し、そのデータベースのコレクション スキーマのオブジェクトタイプをミラーリングします。
sync.database_name
String

App Services が同期されたオブジェクトを保存する同期されたクラスター内のデータベースの名前。

開発モードが有効になっている場合、App Services は同期されたオブジェクトをこのデータベースに保存します。 各オブジェクトタイプは、同期されたオブジェクトに一致するスキーマを持つ データベース内の独自のコレクションにマッピングします。

sync.partition.key
String
同期された個々の Realm にデータをマッピングするパーティションキーフィールドの名前。
sync.partition.type
String
パーティションキー フィールド値の型。
sync.partition.permissions
Document
同期されたクラスターのreadwrite権限を定義するドキュメント。 権限は、App Services がユーザーごと、パーティションごとに評価するルール式で定義されます。 式は%%user%%partitionの展開にアクセスします。

同期されていないクラスターの場合、App Services がリクエストごとに動的に評価するコレクション レベルのルールを定義できます。 各コレクションのルールは、そのコレクションの構成サブディレクトリ内のrules.jsonファイルに保存されます。このファイルはdata_sources/<data-source-name>/<database-name>/<collection-name>/です。

注意

フェデレーティッド データソースは、ルールまたは スキーマ をサポートしていません。 フェデレーティッド データソースには、システム関数からのみアクセスできます。

<database.collection>.json
{
"id": "<Rule ID>",
"database": "<Database Name>",
"collection": "<Collection Name>",
"roles": [<Role>],
"schema": <Document Schema>,
"filters": [<Filter>],
}
フィールド
説明
id
String
trigger を一意に識別する string。 App Services は、trigger が作成されると、一意の ID を自動的に生成します。
database
String
コレクションを保持するデータベースの名前。
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

この ロール がユーザーに適用される場合に true と評価される 式 。

Device Sync(フレキシブルモード)が有効になっていない場合、App Services はドキュメントごとにロールを割り当てます。 Device Sync(フレキシブルモード)が有効になっている場合、App Services はコレクションごと、セッションごとに、つまりクライアントが同期接続を開くときに同期されたコレクションごとにロールを割り当てます。

ロールを割り当てるために、App Services は、1 つのロールが true と評価されるまで、各潜在的なロールのapply_whenを評価します。 潜在的なロールとは、特定のコレクションのrules.json構成ファイルで指定されたロールであり、特定のコレクションにrules.jsonファイルが見つからない場合は、デフォルトのロールです。 App Services は、構成で指定した順序でロールを評価します。 一致するロールがない場合、アクセスは拒否されます。 詳細については、「ロールベースの権限 」を参照してください。

Device Sync(フレキシブルモード)が有効な場合、割り当てられたロールはSync に互換性がなければなりません。 ロールが同期に互換性がないが、 apply_whenが true と評価された場合、他のロールは考慮されません。アクセスは拒否されます。

document_filters
Document
Default: undefined

ロールの他の権限を評価できるかどうかを決定する読み取り式と書込み式を含むドキュメント。

Device Sync が有効な場合、ロールを Sync と互換性document_filters.read document_filters.writeのある にするには、 と の両方を定義する 必要 があります。同期と互換性のないロールでは、同期リクエストへのすべてのアクセスが拒否されます。

Device Sync が有効になっていない場合、 document_filtersdocument_filters.readdocument_filters.writeはすべて任意です。未定義のdocument_filters.readまたはdocument_filters.writeはデフォルトで true になり、後続の権限を評価できます。

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

readfieldsの読み取り権限、 additional_fieldsの読み取り権限 を評価できるかどうかを指定する。 false の場合(かつdocument_filters.writeが未定義または false の場合)、ドキュメント全体の読み取りアクセスは拒否されます。

同期の互換性を維持するには、 式は定義する必要があります。この式はクエリ可能なフィールドのみを参照できます。

document_filters.write
object?
Default: undefined

writefieldsの書込み権限、 additional_fieldsの書込み権限 を評価できるかどうかを指定する。 false の場合、ドキュメント全体の書込みアクセスが拒否されます。

同期の互換性を維持するには、 式は定義する必要があります。この式はクエリ可能なフィールドのみを参照できます。

read
object?
Default: undefined

ロールがドキュメント内のすべてのフィールドを読み取る権限を持つ場合に true と評価される

同期の互換性を維持するには、式はブール値のリテラル( trueまたはfalseのいずれか)である必要があります。

ドキュメントレベルの読み取り権限は、フィールドレベルの権限よりも優先されます。 ロールにドキュメントレベルのread権限がある場合、ドキュメント内のすべてのフィールドに適用されます。 fieldsまたはadditional_fieldsで指定された読み取り権限は、ドキュメントレベルのread権限を上書きしません。

フィールドレベルのルールと並行してデフォルトのフォールバックを定義するには、 readを未定義のままにし、 additional_fieldsを使用します。

write
object?
Default: undefined

ロールがドキュメント内のすべてのフィールドを追加、変更、または削除する権限を持つ場合に true と評価される

同期の互換性を維持するには、式はブール値のリテラル( trueまたはfalseのいずれか)である必要があります。

ドキュメントレベルの書込み権限は、フィールドレベルの権限よりも優先されます。 ロールにドキュメントレベルのwrite権限がある場合、ドキュメント内のすべてのフィールドに適用されます。 fieldsまたはadditional_fieldsで指定された書込み権限は、ドキュメントレベルのwrite権限を上書きしません。

フィールドレベルのルールと並行してデフォルトのフォールバックを定義するには、 writeを未定義のままにし、 additional_fieldsを使用します。

write JSON 式では、 %%root%%prevRootなどの展開を使用できます。

重要

暗黙的な読み取り権限

ロールが特定のスコープに対してwrite権限を持つたびに、明示的に定義されていない場合でも、 read権限も付与されます。

insert
object?
Default: true

ロールに新しいドキュメントをコレクションに挿入する権限がある場合は、 trueと評価される

Atlas App Services は、挿入操作でのみ、および新しいドキュメントのすべてのフィールドに対してwrite権限があると判断した後にのみ、この式を評価します。

delete
object?
Default: true

ロールがコレクションからドキュメントを削除する権限を持つ場合に true と評価される

App Services は、削除操作でのみ、および削除されるドキュメント内のすべてのフィールドに対してロールがwrite権限を持っていると判断した後にのみ、この式を評価します。

search
Boolean
Default: true

ロールが Atlas Search を使用してコレクションを検索する権限を持っている場合に true と評価される 式 。

重要

App Services はシステムユーザーとして$search操作を実行し、返された検索結果に対してフィールドレベルのルールを適用します。 つまり、ユーザーは読み取りアクセス権のないフィールドを検索できます。 この場合、検索は指定された フィールドに基づいて行われますが、返されたドキュメントには フィールドが含まれません。

fields
Document
Default: {}

各キーがフィールド名に対応し、各値がクエリされたドキュメント内の対応するフィールドに対するロールのフィールドレベルのreadおよびwrite権限を定義するドキュメント。

同期の互換性を維持するには、内部のread式とwrite式はブール値のリテラル( 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ドキュメントで明示的に定義された権限を持たない、クエリされたドキュメント内のフィールドに対するロールのフィールドレベルのread権限とwrite権限を定義するドキュメント。

同期の互換性を維持するには、内部のread式とwrite式はブール値のリテラル( 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 はドキュメントを読み取る前にフィルターを評価して適用するため、フィルターの Apply When 式でMongoDB ドキュメント展開を使用することはできません。ただし、 %%user%%values%functionなどの他の展開を使用することはできます。

query
object
Default: {}

App Services がフィルタリングされた操作の既存のクエリにマージするMongoDB クエリ

フィルターは、次のクエリを使用して、score20 より低いドキュメントを除外します。

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

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
String
サービスを一意に識別するstring 。 Atlas App Services は、サービスを作成すると、一意の ID を自動的に生成します。
name
String
サービスの名前。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。
type
String

サービスの種類。

有効なオプション:

  • "http"

  • "aws"

  • "twilio"

  • "github"

  • "gcm"

config
Document

サービスの追加設定オプションにマップされるフィールドを含むドキュメント。 正確な構成フィールドは、サービスtypeによって異なります。

secret_config
Document
App Services のプライベート構成フィールドで、各フィールドの値が構成値を保存するシークレットの名前であるドキュメント。

特定の外部サービスのルールは、 /<service name>/rulesサブディレクトリで定義されます。

各ルールは、ルールと同じ名前の独自の JSON ファイルにマップされます。

<rule name>.json
{
"id": "<Rule ID>",
"name": "<Rule Name>",
"actions": ["<Service Action Name>"],
"when": <JSON Rule Expression>
}
フィールド
説明
id
String
ルールを一意に識別する string。 App Services は、ルールを作成すると、一意の ID を自動的に生成します。
name
String
サービス ルールの名前。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。
actions
Array<String>
ルールが適用されるサービス アクションのリスト。 利用可能な具体的なアクションは、サービスtypeによって異なります。
when
Document
特定のリクエストにルールが適用される場合にtrueと評価されるルール式

特定のサービスの受信 Webhook は、 /<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
String
関数を一意に識別する値。 App Services は、関数を作成すると、一意の ID を自動的に生成します。
name
String
関数の名前。 名前は、アプリケーション内のすべての関数間で一意である必要があります。
private
Boolean
trueの場合、この関数は受信 Webhook、ルール、名前付き関数からのみアクセスできます。
can_evaluate
Document
特定のリクエストに応じて関数の実行が許可されている場合にtrueと評価されるルール式
disable_arg_logs
Boolean
run_as_system
Boolean
trueの場合、Webhook 関数はシステムユーザー として実行されます。 これにより、 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
Webhook が呼び出されるたびに実行され、関数が実行されるApp Services ユーザーの一意の ID を返す文字列化された関数。 run_as_user_idとは併用できません。
respond_result
Boolean
trueの場合、App Services は、Webhook リクエストを開始したクライアントに送信する HTTP 応答の本体として Webhook 関数の戻り値を含めます。
options
Document

Webhook の構成オプションを含むドキュメント。

{
"httpMethod": "<HTTP Method>",
"validationMethod": "<Webhook Validation Method>",
"secret": "<Webhook Secret>"
}
フィールド
説明
httpMethod
String
Webhook が受け入れる HTTP メソッドの種類。 受信 Webhook リクエストは、このメソッドを使用する必要があります。
validationMethod
String

Webhook が使用するリクエスト検証方法の名前。

有効なオプション:

  • "VERIFY_PAYLOAD"

  • "SECRET_AS_QUERY_PARAM"

  • "NO_VALIDATION"

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

triggerはアプリケーションの/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 を一意に識別する string です。 Atlas App Services は、trigger が作成されると、一意の ID を自動的に生成します。
name
String
trigger の名前。 名前の長さは最大 64 文字で、ASCII 文字、数字、アンダースコア、ハイフンのみを含めることができます。
type
String

trigger が listen するアプリケーション イベントのタイプ

有効なオプション:

  • "DATABASE"

  • "AUTHENTICATION"

  • "SCHEDULED"

function_name
String
trigger が起動するたびに実行する Atlas Function の名前。 trigger は、 trigger typeに応じて関数に引数を自動的に渡します。
config
Document

trigger の追加構成オプションにマップされるフィールドを持つドキュメント。 正確な構成フィールドは、trigger typeによって異なります。

disabled
Boolean
trueの場合、trigger はイベントをリッスンせず、起動しません。

Atlas App Services でホストするファイルは、アプリケーションの/hostingディレクトリに含まれている必要があります。 各ファイルは、 metadata.jsonで定義されたメタデータを使用してアップロードされます。

metadata.jsonでホストされている各ファイルのメタデータを構成できます。 このメタデータ構成ファイルは、それぞれが 1 つのホストされたファイルのメタデータ属性に対応するドキュメントの配列です。

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>

各ドキュメントが 1 つのメタデータ属性を表すドキュメントの配列。 属性ドキュメントの形式は次のとおりです。

Metadata Attribute Document
{
"name": "<Attribute Type>",
"value": "<Attribute Value>"
}
フィールド
説明
name
String
メタデータ属性の名前。 これは、App Services がサポートするファイル メタデータ属性の 1 つです。
value
String
メタデータ属性の値。

注意

ホストされたファイルにContent-Typeメタデータ属性を指定しない場合、Atlas App Services はファイル拡張子に基づいてContent-Type属性を自動的に追加しようとします。

たとえば、Atlas 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
値を一意に識別する string。 Atlas App Services は、値を作成するときに一意の ID を自動的に生成します。
name
String
値の一意の名前。 この名前は、関数とルールで値を参照する方法です。
from_secret
Boolean
デフォルト: falsetrueの場合、値はプレーンテキストの JSON 値ではなくシークレットを公開します。
value
String, Array, or Object

値が参照されるときに App Services が公開する保存済みデータ。

from_secretfalseの場合、 valueは標準の JSON string、配列、またはオブジェクトになります。

from_secrettrueの場合、 valueは 値が公開するシークレットの名前を含む string です。

戻る

v20210101 [非推奨]