App Hosting は、複雑な一連のバックグラウンド タスクを処理して、アプリのデプロイを簡素化します。このページでは、そのタスクフローの主な部分について説明します。また、アプリのニーズに応じてフローをカスタマイズする必要があるポイントについても説明します。
Google Cloud と App Hosting のアーキテクチャ
App Hosting は、一連の Google Cloud プロダクトをオーケストレートして、ウェブアプリのデプロイ、サービング、モニタリングを行います。アプリは Cloud Build でビルドされ、Cloud Run で提供され、Cloud CDN にキャッシュに保存されます。Cloud Secret Manager などの統合サービスにより、API キーが安全に保管されます。

- コミットがライブブランチに push されると、Google Cloud Developer Connect は Firebase App Hosting にイベントを送信します。
- このイベントに応答して、Firebase App Hosting はリポジトリに接続されている各バックエンドの新しいロールアウトを開始します。
- Firebase App Hosting は、commit の新しい Cloud Build ビルドを作成します。このジョブでは、Google Cloud Buildpack がアプリケーションで使用されているフレームワークを特定し、アプリケーションに適したコンテナと構成(環境変数、シークレット、最小インスタンス数または最大インスタンス数、同時実行メモリ、CPU、VPC 構成など)を作成します。
- Cloud Build ジョブが完了すると、コンテナは Firebase App Hosting 専用の Artifact Registry リポジトリに保存されます。Firebase App Hosting は、イメージと構成を使用して、Cloud Run サービスに新しい Cloud Run リビジョンを追加します。Cloud Run リビジョンの正常性が確認されると、Firebase App Hosting はトラフィック構成を変更して、すべての新しいリクエストを新しい Cloud Run リビジョンに転送します。これでロールアウトは完了です。
- Firebase App Hosting でホストされているウェブサイトにリクエストが送信されると、リクエストは Cloud CDN が有効になっている Google Cloud ロードバランサによって処理されます。キャッシュに保存されていないリクエストは、Cloud Run サービスに送信されます。
フレームワークの統合
App Hosting は、次のフレームワークで開発されたウェブアプリの事前構成済みのビルドとデプロイのサポートを提供します。
- Next.js 13.5.x 以降
- Angular 18.2.x 以降
特定のバージョンとサポートレベルの詳細については、サポート スケジュールをご覧ください。
App Hosting は、Next.js と Angular に加えて、出力バンドルの仕様に一致するビルド出力を提供する任意のウェブ フレームワークもサポートしています。App Hosting でサポートされているフレームワーク、フレームワーク アダプター、関連ツールについて詳しくは、App Hosting のフレームワークとツールをご覧ください。
App Hosting リポジトリの統合の仕組み
GitHub リポジトリと App Hosting バックエンド間の重要な接続は、外部 DevOps ツール用の Google Cloud の接続プラットフォームである Developer Connect によって処理されます。App Hosting バックエンドを作成する際、Developer Connect の UI ワークフローに沿って Firebase GitHub アプリをインストールします。このプロセスの主な手順は次のとおりです。
- Developer Connect に Secret Manager 管理者のロールを付与します。これにより、システムは認証情報を「シークレット」として Cloud Secret Manager に安全に保存できます。
- Firebase GitHub アプリがGitHub リポジトリにアクセスできるように承認します。
- Developer Connect は、プロジェクトの Secret Manager リポジトリに専用の GitHub 認証トークンを保存します。このトークンを変更または削除しないでください。
さらに、App Hosting は GitHub チェック API と統合され、ロールアウトのチェックを提供します。このチェックにより、GitHub でロールアウトのステータスを確認し、エラーが発生した場合にデプロイ プロセスをデバッグできます。
Firebase や他の Google サービスとの統合
App Hosting は、ビルド環境とランタイム環境の両方を設定するため、Google アプリケーションのデフォルト認証情報を使用して Firebase Admin SDK を初期化できます。これにより、バックエンドはビルド時と実行時の両方で他の Firebase プロダクトと通信できます。アプリの初期化とその他の Firebase SDK 関連のトピックについて詳しくは、Firebase SDK をウェブアプリに統合するをご覧ください。
App Hosting 個のロケーション
App Hosting は、プライマリ リージョンと呼ばれる特定のロケーションにバックエンド リソースを作成します。App Hosting は高速配信のためにグローバル CDN と統合されますが、キャッシュに保存されていないコンテンツはアプリのプライマリ リージョンから提供されます。ウェブアプリの場所を柔軟に設定できることには、次のような主なメリットがあります。
- データをユーザーの地理的位置の近くに配置することで、パフォーマンスが向上し、レイテンシが短縮されます。
- 1 つのリージョンで App Hosting に致命的な障害が発生しても、他のリージョンにデプロイされたウェブアプリには影響しません。
コンソールまたは Firebase CLI から App Hosting バックエンドを作成する場合は、次のいずれかのリージョンを選択できます。
us-central1
(アイオワ)asia-east1
(台湾)europe-west4
(オランダ)
App Hosting バックエンド サービス アカウント
ビルド時と実行時に、App Hosting バックエンドはサービス アカウントを使用して他の Google サービスと認証を行います。これらの目的のデフォルトのサービス アカウントは、Firebase プロジェクトで App Hosting を初めて有効にするときに作成されます。
firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com
このサービス アカウントはデフォルトですべてのバックエンドに適用され、アプリのビルド、実行、モニタリングを可能にする最小限の権限セットが付与されています。また、Cloud Firestore からデータの読み込みなどのオペレーションを実行するために、アプリケーションのデフォルト認証情報で Admin SDK を認証する権限も付与されています。Firebase App Hosting ロールをご覧ください。
アプリがビルド時または実行中のバックエンドから追加の Google サービスとやり取りする必要がある場合は、ロールを追加してデフォルトのサービス アカウントをカスタマイズできます。たとえば、アプリに Vertex AI の権限が必要な場合は、roles/aiplatform.user
または関連するロールを追加する必要があります。
主な用語と定義
- バックエンド: App Hosting がウェブアプリのビルドと実行のために作成するマネージド リソースのコレクション。
- ロールアウト: Git commit にリンクされた、公開中のアプリの特定のバージョン。
- 本番ブランチ: 本番 URL にデプロイされる GitHub リポジトリのブランチ。多くの場合、これは機能ブランチまたは開発ブランチが統合されるブランチです。