アプリケーション構成ファイル(レガシー)
項目一覧
注意
レガシーページ
このページでは、 realm-cli
バージョン 1 で使用されるレガシー構成ファイル形式について説明します。 Atlas App Services の構成ファイルの最新の説明については、 「アプリ構成」 を参照してください。
Overview
Atlas App Services は JSON ファイルとソースコード ファイルを使用して、アプリケーションのすべてのコンポーネントの定義と構成を行います。 各コンポーネントには特定の構成ファイル スキーマがあり、すべてのアプリケーションは標準のファイル構造を使用して構成ファイルを整理します。
構成ファイルをいつ使用するか?
すべてのアプリは構成ファイルのコレクションで構成されているため、アプリを作成または変更するたびにアプリケーション構成ファイルを使用します。 App Services UI を使用する場合、構成ファイル自体を直接操作することはほとんどありませんが、 App Services CLIやGithubなどの他の配置方法では、構成ファイルを直接定義および編集できます。
ディレクトリ構造
次の図は、アプリのディレクトリ構造の高レベルのビューを示しています。
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
構成
{ "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 | アプリケーション レベルのセキュリティ機能の構成オプションを含むドキュメントです。
| |||||||||||||||||||
hosting Document | ホストされたすべてのファイルの構成オプションを含むドキュメント:
| |||||||||||||||||||
config_version Number | アプリケーション内のすべての構成ファイルが準拠するスキーマ バージョン。 この値はマシンで生成された値であり、通常、手動で設定したり変更したりしないでください。 | |||||||||||||||||||
custom_user_data_config Document | カスタム ユーザー データの構成オプションを含むドキュメント。
| |||||||||||||||||||
deployment_model String | ||||||||||||||||||||
location String | アプリケーションが配置されるクラウド リージョンの名前。
|
認証プロバイダ
認証プロバイダは、アプリケーションの/auth_providers
ディレクトリで定義されます。
各プロバイダーは、プロバイダーにちなんで命名された独自の JSON ファイルで定義されます。 特定の認証プロバイダーの使用と設定の詳細については、そのプロバイダーのリファレンス ページを参照してください。
yourRealmApp/ └── auth_providers/ └── <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 | 認証プロバイダのタイプ。 有効なオプション:
|
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
構成
{ "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 | true の場合、Atlas App Services は関数の実行ログ エントリから関数に提供された引数を省略します。 |
run_as_system Boolean | true の場合、この関数は システムユーザー として実行されます。 これにより、 run_as_user_id とrun_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 |
ソースコード
exports = function() { // function code };
MongoDB Services
アプリにリンクされたすべての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 クラスターをリンクするための構成ファイルは、次の形式である必要があります。
{ "id": "<Service ID>", "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean>, "sync": <Sync Configuration> } }
フェデレーティッド データソースの構成ファイルの形式は次のとおりです。
{ "id": "<Service ID>", "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
クラスターとフェデレーティッド データソースのどちらにリンクしているかに応じて、 config.dataLakeName
とconfig.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 ) モード フェデレーティッド データソースでは使用できません。
| ||||||||||||
config.sync Document | クラスターが同期されるかどうかを決定し、同期されている場合はクラスターでの同期操作のルールを定義する構成ドキュメント。 フェデレーティッド データソースでは使用できません。 同期構成ドキュメントの詳細については、「 同期されたクラスター構成 」を参照してください。 |
同期されたクラスター構成
config.json
のconfig.sync
フィールドは、クラスターが同期されているかどうかを決定し、同期されている場合は、クラスターでの同期操作のルールを定義します。
{ ..., "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 | 同期されたクラスターの read とwrite 権限を定義するドキュメント。 権限は、App Services がユーザーごと、パーティションごとに評価するルール式で定義されます。 式は%%user と%%partition の展開にアクセスします。 |
MongoDB コレクション ルール(非同期)
同期されていないクラスターの場合、App Services がリクエストごとに動的に評価するコレクション レベルのルールを定義できます。 各コレクションのルールは、そのコレクションの構成サブディレクトリ内のrules.json
ファイルに保存されます。このファイルはdata_sources/<data-source-name>/<database-name>/<collection-name>/
です。
注意
フェデレーティッド データソースは、ルールまたは スキーマ をサポートしていません。 フェデレーティッド データソースには、システム関数からのみアクセスできます。
{ "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> | 次の形式を持つロール構成ドキュメントの配列。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
schema Document | ドキュメント スキーマ。 ルート レベル スキーマは、次の形式を持つオブジェクト スキーマである必要があります。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
filters Array<Document> | 次の形式を持つフィルター構成ドキュメントの配列。
|
外部サービス
サードパーティ サービスは/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
サービス構成
{ "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 | サービスの種類。 有効なオプション:
|
config Document | サービスの追加設定オプションにマップされるフィールドを含むドキュメント。 正確な構成フィールドは、サービス |
secret_config Document | App Services のプライベート構成フィールドで、各フィールドの値が構成値を保存するシークレットの名前であるドキュメント。 |
サービス ルール
特定の外部サービスのルールは、 /<service
name>/rules
サブディレクトリで定義されます。
各ルールは、ルールと同じ名前の独自の 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
特定のサービスの受信 Webhook は、 /<service name>/incoming_webhooks/
サブディレクトリで定義されます。
受信 Webhook は関数と同じ構成形式を使用しますが、追加の構成パラメーターがあります。
構成
{ "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 | true の場合、Atlas App Services は関数の実行ログ エントリから関数に提供された引数を省略します。 | |||||||||||||
run_as_system Boolean | true の場合、Webhook 関数はシステムユーザー として実行されます。 これにより、 run_as_user_id とrun_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 | ||||||||||||||
respond_result Boolean | true の場合、App Services は、Webhook リクエストを開始したクライアントに送信する HTTP 応答の本体として Webhook 関数の戻り値を含めます。 | |||||||||||||
options Document | Webhook の構成オプションを含むドキュメント。
|
ソースコード
exports = function() { // webhook function code };
トリガー
triggerはアプリケーションの/triggers
ディレクトリで定義されます。
各 trigger は、trigger と同じ名前で独自の JSON ファイルで定義されます。
yourRealmApp/ └── triggers/ └── <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 | |
function_name String | trigger が起動するたびに実行する Atlas Function の名前。 trigger は、 trigger type に応じて関数に引数を自動的に渡します。 |
config Document | trigger の追加構成オプションにマップされるフィールドを持つドキュメント。 正確な構成フィールドは、trigger |
disabled Boolean | true の場合、trigger はイベントをリッスンせず、起動しません。 |
ホスティング
Atlas App Services でホストするファイルは、アプリケーションの/hosting
ディレクトリに含まれている必要があります。 各ファイルは、 metadata.json
で定義されたメタデータを使用してアップロードされます。
metadata.json
でホストされている各ファイルのメタデータを構成できます。 このメタデータ構成ファイルは、それぞれが 1 つのホストされたファイルのメタデータ属性に対応するドキュメントの配列です。
yourRealmApp/ └── hosting/ ├── metadata.json └── files/ └── <files to host>
メタデータ構成
[ { "path": "<File Resource Path>", "attrs": [{ "name": "<Attribute Type>", "value": "<Attribute Value>" }] } ]
フィールド | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
path String | ファイルのリソース パス。 | ||||||||||
attrs Array<Document> | 各ドキュメントが 1 つのメタデータ属性を表すドキュメントの配列。 属性ドキュメントの形式は次のとおりです。 Metadata Attribute Document
|
注意
ホストされたファイルにContent-Type
メタデータ属性を指定しない場合、Atlas App Services はファイル拡張子に基づいてContent-Type
属性を自動的に追加しようとします。
たとえば、Atlas App Services はファイルmyPage.html
に属性Content-Type: application/html
を自動的に追加します。
Values
値はアプリケーションの/values
ディレクトリで定義されます。
各値は、値にちなんで命名された独自の JSON ファイルで定義されます。
yourRealmApp/ └── values/ └── <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 | |
value String, Array, or Object | 値が参照されるときに App Services が公開する保存済みデータ。
|