アプリをエクスポートする
Overview
アプリの構成ファイルをエクスポートすることで、そのディレクトリをダウンロードできます。 これにより、アプリの構成をソース管理に保存し、App Services CLI や希望のテキスト エディターをローカルで操作できるようになります。
エクスポートされたディレクトリには、データソース、関数、trigger、その他のサービスなど、アプリのほとんどのコンポーネントの構成ファイルが含まれます。 エクスポートされるアプリの内容の詳細については、「アプリ構成 」を参照してください。
エクスポートにはシークレットは含まれません。 エクスポートされた構成ファイルに基づいて新しいアプリを作成する場合は、新しいアプリに シークレット を手動で追加する必要があります。 詳しくは、「アプリをコピーする 」を参照してください。
始める前に
Atlas UI でアプリをエクスポートするには、次のものが必要です。
プロジェクト所有者の権限を持つ MongoDB Atlas アカウント。 無料アカウントの登録方法については、「 Atlasを使い始める 」を参照してください。
CLI でアプリをエクスポートするには、次のものが必要です。
プロジェクト所有者の権限を持つ MongoDB Atlas アカウント。 無料アカウントのサインアップ方法については、「 Atlas の使用 」を参照してください。
MongoDB Atlas Admin APIの公開キーと秘密キーのペア。 App Services Admin API を操作するには、API キーにプロジェクト オーナーの権限が必要です。
ローカル システム
PATH
にインストールおよび追加された App Services CLI のコピー。 詳しくは、「 App Services CLI のインストール 」を参照してください。アプリのクライアント アプリ ID。 これは、アプリ名を含む一意の string です。例:
"myapp-abcde"
。 アプリ ID を見つける方法については、 「 アプリのメタデータを取得する 」を参照してください。
Admin API を使用してアプリをエクスポートするには、次のものが必要です。
プロジェクト所有者の権限を持つ MongoDB Atlas アカウント。 無料アカウントのサインアップ方法については、「 Atlas の使用 」を参照してください。
MongoDB Atlas Admin APIの公開キーと秘密キーのペア。 App Services Admin API を操作するには、API キーにプロジェクト オーナーの権限が必要です。
アプリの内部 ObjectId 16x string と、アプリを含む Atlas プロジェクトのプロジェクト ID。 これらを見つける方法については、 「 アプリのメタデータを取得する 」を参照してください。
手順
アプリ エクスポート コマンドの実行
pull
コマンドは、アプリケーションの構成ファイルをローカル ディレクトリにダウンロードします。 エクスポートするアプリを選択するには、 --remote
フラグでクライアント アプリ ID を指定します。
appservices pull --remote=<Client App ID>
デフォルトでは、コマンドは現在の作業ディレクトリにファイルをプルします。 代わりに、 --local
フラグでディレクトリ パスを指定することで、コマンドが新しいディレクトリを作成するように構成できます。
appservices pull --remote=<App ID> --local=<Output Directory Path>
Tip
--local
で指定されるディレクトリはまだ存在してはなりません。そうでない場合、CLI はエラーをスローし、構成ファイルをプルしません。
コマンドは、アプリをカスタマイズするために任意で含めることができる追加のフラグもサポートしています。 次の表は、使用できる一般的なフラグを示しています。
--include-dependencies | 指定すると、外部依存関係は /functions ディレクトリにnode_modules アーカイブとしてエクスポートされます。 |
--include-hosting | 指定すると、ホストされている静的アセットは /hosting/files ディレクトリにエクスポートされます。 |
MongoDB Atlas ユーザーの認証
MongoDB Atlas API キー ペアを使用して、管理ユーザー認証エンドポイントを呼び出します。
curl -X POST \ https://services.cloud.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "username": "<Public API Key>", "apiKey": "<Private API Key>" }'
認証に成功すると、レスポンス本文にはaccess_token
値を持つ JSON オブジェクトが含まれます。
{ "access_token": "<access_token>", "refresh_token": "<refresh_token>", "user_id": "<user_id>", "device_id": "<device_id>" }
access_token
は App Services Admin API へのアクセスを許可します。 すべての管理 API リクエストのAuthorization
ヘッダーに Bearer トークンとして含める必要があります。
アプリをエクスポートする
アプリをエクスポートするには、 アプリのエクスポートエンドポイントに リクエストを送信します。
管理API access_token
、アプリを含むAtlasプロジェクトの groupId
、およびアプリ内部の appId
16 進stringを必ず含めます。
curl -X GET \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/export \ -H 'Authorization: Bearer <access_token>' \ -H 'Content-Type: application/json' \ --output ./exported-app.zip
URL クエリ パラメータとして配置_id
を指定することで、特定の配置の構成をエクスポートできます。
https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/export?deployment={deploymentId}
リクエストが成功した場合、エンドポイントは200
レスポンスを返します。このレスポンスには、アプリケーションの現在の構成ファイルの.zip
ディレクトリが含まれています。
出力
エクスポートされたアプリには、アプリのすべてのコンポーネントの構成ファイルが含まれます。 各タイプの構成ファイルの詳細については、「アプリ構成 」を参照してください。
エクスポートされた構成ディレクトリの構造は、次のとおりです。
app/ ├── root_config.json ├── auth/ │ ├── providers.json │ └── custom_user_data.json ├── data_sources/ │ └── <service name>/ │ ├── config.json │ └── <database>/ │ └── <collection>/ │ ├── schema.json │ └── rules.json ├── environments/ │ ├── no-environment.json │ ├── development.json │ ├── testing.json │ ├── qa.json │ └── production.json ├── functions/ │ ├── config.json │ ├── <function>.js │ └── <directory>/ │ └── <function>.js ├── graphql/ │ ├── config.json │ └── custom_resolvers │ └── <resolver name>.json ├── hosting/ │ ├── config.json │ ├── metadata.json │ └── files/ │ └── <files to host> ├── http_endpoints/ │ ├── config.json │ ├── data_api_config.json │ └── [Deprecated] <service name>/ │ ├── config.json │ └── incoming_webhooks/ │ ├── config.json │ └── source.js ├── log_forwarders/ │ └── <name>.json ├── sync/ │ └── config.json ├── triggers/ │ └── <trigger name>.json └── values/ └── <value name>.json