App Hosting 백엔드 구성 및 관리

App Hosting는 사용 편의성과 낮은 유지보수 비용을 고려하여 설계되었으며, 대부분의 사용 사례에 최적화된 기본 설정이 적용되어 있습니다. 동시에 App Hosting은 특정 요구사항에 맞게 백엔드를 관리하고 구성할 수 있는 도구를 제공합니다. 이 가이드에서는 이러한 도구와 프로세스를 설명합니다.

환경 변수 및 보안 비밀 설정 및 업데이트

App Hosting를 사용하면 민감하지 않은 구성 값에는 환경 변수를 사용하고 API 키, 데이터베이스 사용자 인증 정보, 서비스 토큰과 같은 민감한 매개변수에는 보안 비밀을 사용할 수 있습니다.

  • 표준 환경 변수: 민감하지 않은 일반 텍스트 구성 (예: 공개 API URL, 기능 플래그, 빌드 대상)에 사용됩니다. 값은 모든 프로젝트 구성원에게 표시됩니다.
  • 보안 비밀: 민감한 파라미터 (예: OAuth 클라이언트 보안 비밀번호, API 토큰, 데이터베이스 비밀번호)에 사용됩니다. 보안 비밀은 Cloud Secret Manager에서 지원됩니다. 보안 비밀 값은 보호되며 Firebase 콘솔에 일반 텍스트로 표시되지 않습니다. 대신 콘솔은 Cloud Secret Manager에서 직접 보안 비밀 값을 보고 관리할 수 있는 딥 링크를 제공합니다.

다음 두 가지 상호 보완적인 접근 방식을 사용하여 환경 매개변수를 정의하고 관리할 수 있습니다.

  • Firebase 콘솔: 초기 백엔드 생성 중 또는 백엔드 설정에서 배포 후 보안 비밀 또는 변수를 동적으로 빠르게 추가, 수정, 연결합니다.
  • 코드 우선 (apphosting.yaml): 버전 제어 배포를 위해 저장소의 구성 파일에서 환경 변수 및 보안 비밀 참조를 선언하거나 apphosting.<env>.yaml를 사용하여 환경마다 다른 값을 설정합니다.

Firebase 콘솔

환경 변수를 추가하는 Firebase Console 대화상자의 화면 캡처

apphosting.yaml

env:
  - variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app
  - variable: API_KEY
    secret: myApiKeySecret

Firebase 콘솔에서 변수 및 보안 비밀 관리

백엔드를 만들 때 또는 언제든지 백엔드 설정에서 Firebase 콘솔의 환경 변수와 보안 비밀을 구성할 수 있습니다. 배포하지 않고 저장된 변경사항은 다음 출시에 적용되며 현재 출시에는 영향을 미치지 않습니다.

백엔드 생성 중에 변수 및 보안 비밀 설정

Firebase 콘솔에서 새 App Hosting 백엔드를 만들 때 설정 마법사의 백엔드 구성 단계에서 표준 환경 변수와 보안 비밀을 구성할 수 있습니다.

  1. Firebase 콘솔에서 호스팅 및 서버리스 > App Hosting으로 이동하고 백엔드 만들기를 클릭합니다.
  2. 초기 마법사 단계를 완료하여 기본 리전과 코드 저장소를 선택합니다.
  3. 백엔드 구성 섹션에서 환경 변수 및 보안 비밀의 접을 수 있는 카드를 찾습니다. 여기에서 표준 변수를 추가하고 보안 비밀을 연결할 수 있습니다.
  4. 백엔드 생성 마법사를 완료하고 완료 및 배포를 클릭합니다.

백엔드 설정에서 변수 및 보안 비밀 관리

백엔드 설정 대시보드에서 활성 백엔드의 환경 변수와 보안 비밀을 확인, 추가, 수정, 삭제할 수 있습니다.

  1. Firebase 콘솔에서 App Hosting 백엔드를 선택하고 설정 > 환경을 엽니다.
  2. 환경 변수 표에서 기존 구성을 검토합니다.
    • 표준 변수: 값은 복사 가능한 코드 블록에 일반 텍스트로 표시됩니다.
    • 보안 비밀: 보안 비밀 이름(Google Cloud 콘솔에서 Cloud Secret Manager를 여는 링크)과 대상 버전(예: latest 또는 특정 버전 번호(예: 2))을 보여주는 클릭 가능한 링크로 표시됩니다.
  3. 변수 또는 보안 비밀을 추가하려면 다음 안내를 따르세요.
    1. 새로 추가를 클릭합니다.
    2. 1단계: 유형 선택에서 표준 환경 변수(모든 프로젝트 구성원에게 표시되는 민감하지 않은 데이터의 경우) 또는 보안 비밀(액세스가 제한된 API 키 및 민감한 사용자 인증 정보의 경우)을 선택한 후 다음을 클릭합니다.
    3. 2단계: 설정 구성에서 키 이름과 일반 텍스트 값 (표준 변수의 경우)을 입력하거나 보안 비밀 ID 및 버전 (보안 비밀의 경우)을 선택합니다.
    4. 다음 옵션 중 하나를 사용하여 변경사항을 저장합니다.
      • 저장 및 배포: 백엔드 구성을 즉시 업데이트하고 새 빌드 및 출시를 트리거합니다.
      • 저장 (저장 및 배포 옆에 있는 드롭다운 화살표에서): 즉각적인 출시를 트리거하지 않고 구성 변경사항을 저장합니다. 업데이트된 설정은 다음 배포 시 적용됩니다.
  4. 기존 항목을 수정하거나 삭제하려면 행 끝에 있는 작업 메뉴 (...)를 클릭합니다.
    • 수정을 선택하여 키, 값, 보안 비밀 매핑 또는 버전을 수정한 후 저장 및 배포 또는 저장을 클릭합니다.
    • 삭제를 선택하고 대화상자에서 삭제를 확인합니다.

dotenv 파일에서 변수 전송

Next.js 앱의 경우 환경 변수가 포함된 dotenv 파일이 App Hosting와 함께 작동합니다.

백엔드를 만들거나 업데이트할 때 dotenv 파일의 전체 콘텐츠를 복사하여 설정 > 환경의 새로 추가 양식에 있는 첫 번째 키 필드에 붙여넣어 dotenv 파일에서 Firebase 콘솔로 환경 변수를 전송할 수 있습니다.

이 방법으로 복사된 모든 환경 변수는 입력이 표준 KEY=value 형식을 사용하는 한 각각 개별적으로 입력할 필요 없이 자동으로 양식에 지정됩니다.

KEY1=value1
KEY2=value2
KEY3=value3

모든 프레임워크에서 복잡하거나 세분화된 환경 변수를 제어하려면 apphosting.yaml를 사용하는 것이 좋습니다.

apphosting.yaml에서 변수 및 보안 비밀 관리

코드 우선 워크플로의 경우 프로젝트 저장소의 apphosting.yaml 구성 파일에 있는 env: 키 아래에 표준 환경 변수와 보안 비밀 참조를 선언합니다 (apphosting.yaml 만들기 및 수정 참고).

env:
  # Standard environment variables
  - variable: PUBLIC_API_URL
    value: https://api.example.com
    availability:
      - BUILD
      - RUNTIME
  - variable: FEATURE_FLAG_NEW_UI
    value: "true"

  # Secret references backed by Cloud Secret Manager
  - variable: DATABASE_URL
    secret: projects/PROJECT_ID/secrets/db-connection-string/versions/latest
  - variable: GEMINI_API_KEY
    secret: myGeminiApiKeySecret@1

env:의 각 항목은 다음 필드를 지원합니다.

  • variable: 애플리케이션 프로세스에 노출되는 환경 변수 이름입니다.
  • value: 일반 텍스트 문자열 값 (표준 환경 변수)입니다.
  • secret: Cloud Secret Manager 보안 비밀 참조 (보안 비밀용) 짧은 보안 비밀 이름 (예: myGeminiApiKeySecret 또는 고정된 myGeminiApiKeySecret@1) 또는 전체 리소스 경로 (projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION)를 사용할 수 있습니다. 자세한 내용은 보안 비밀 매개변수 저장 및 액세스를 참조하세요.
  • availability: BUILD 단계, RUNTIME 또는 둘 다에서 변수 또는 보안 비밀에 액세스할 수 있는지 여부를 제어합니다.

변수 사용 가능 여부 설정

Firebase 콘솔에서 구성된 환경 변수와 보안 비밀은 빌드 시간과 런타임 모두에서 사용할 수 있습니다. availability 속성을 사용하여 범위를 좁히지 않는 한 apphosting.yaml에 정의된 항목의 기본 동작이기도 합니다. apphosting.yaml (콘솔 제외)에서는 변수 또는 보안 비밀을 빌드 환경 (BUILD) 또는 런타임 환경 (RUNTIME)으로만 제한할 수 있습니다.

애플리케이션 코드에서 변수 및 보안 비밀에 액세스

Firebase Console 또는 apphosting.yaml에서 구성되었는지 여부에 관계없이 환경 변수와 보안 비밀은 표준 환경 변수 (예: Node.js의 process.env)로 애플리케이션 런타임에 노출됩니다.

// Accessing a standard environment variable
const apiUrl = process.env.PUBLIC_API_URL;

// Accessing a secret
const apiKey = process.env.GEMINI_API_KEY;

export async function fetchData() {
  const response = await fetch(`${apiUrl}/data`, {
    headers: {
      'Authorization': `Bearer ${apiKey}`
    }
  });
  return response.json();
}
  • 서버 측 액세스: 모든 환경 변수와 보안 비밀은 서버 측 실행 컨텍스트 (예: Next.js 서버 구성요소, API 경로, Node.js 백엔드 핸들러)에서 안전하게 액세스할 수 있습니다.
  • 클라이언트 측 노출: Next.js와 같은 프레임워크에서 표준 환경 변수를 브라우저에 노출하려면 변수 키가 프레임워크 규칙을 따르는지 확인합니다 (예: NEXT_PUBLIC_ 프리픽스).

    env:
      - variable: NEXT_PUBLIC_STORAGE_BUCKET
        value: mybucket.firebasestorage.app
        availability:
          - BUILD
          - RUNTIME
    

변수 계층 구조

Firebase App Hosting는 소스를 기준으로 우선순위에 따라 환경 변수와 보안 비밀을 적용합니다. Firebase Console에서 설정된 구성은 항상 apphosting.yaml 및 dotenv 파일에 선언된 매개변수를 재정의합니다. 이름이 같은 환경 변수 또는 보안 비밀 키가 apphosting.yaml 및 Firebase 콘솔 모두에 있는 경우 빌드 및 런타임 실행 중에 콘솔 값이 우선 적용됩니다.

전체 우선순위는 다음과 같습니다.

  1. Firebase 콘솔 → 콘솔에서 설정된 변수 및 보안 비밀
  2. apphosting.<env>.yaml → apphosting.staging.yaml와 같은 환경별 YAML 파일에 지정된 변수 및 보안 비밀 (여러 환경 배포 참조)
  3. apphosting.yaml → apphosting.yaml 파일에 지정된 변수 및 보안 비밀
  4. Firebase 시스템 → FIREBASE_CONFIG 또는 FIREBASE_WEBAPP_CONFIG의 값이 포함된 Firebase에서 설정한 변수와 SSR 앱의 호스트 이름 및 포트를 설정하는 환경 변수 (bundle.yaml의 App Hosting 어댑터에서 설정)

자동으로 채워지는 환경 변수

App Hosting에서 자동으로 채우는 환경 변수가 있습니다. 이러한 환경 변수로는 Google Cloud로 채워지는 환경 변수와 설정 중에 백엔드에서 appId가 설정된 경우 Firebase 관련 환경 변수가 있습니다.

  • FIREBASE_CONFIG: (빌드 및 런타임 환경에서 사용 가능) 다음 Firebase 프로젝트 구성 정보를 제공합니다.

    {
      "databaseURL": "https://DATABASE_NAME.firebaseio.com",
      "storageBucket": "PROJECT_ID.firebasestorage.app",
      "projectId": "PROJECT_ID"
    }
    

    이 구성은 인수 없이 Firebase Admin SDK를 초기화할 때 자동으로 적용됩니다.

  • FIREBASE_WEBAPP_CONFIG: (빌드 환경에서만 사용 가능) 다음 Firebase 프로젝트 구성 정보를 제공합니다.

    {
      "apiKey": "API_KEY",
      "appId": "APP_ID",
      "authDomain": "AUTH_DOMAIN.firebaseapp.com",
      "databaseURL": "https://DATABASE_NAME.firebaseio.com",
      "messagingSenderId": "PROJECT_NUMBER",
      "projectId": "PROJECT_ID",
      "storageBucket": "PROJECT_ID.firebasestorage.app"
    }</span>
    

    Firebase JS SDK는 빌드 중에 postinstall 스크립트에서 이 FIREBASE_WEBAPP_CONFIG 환경 변수를 자동으로 확인하므로 인수 없이 클라이언트 SDK를 초기화할 수도 있습니다.

이러한 환경 변수를 사용하여 SDK를 초기화하는 방법에 대한 자세한 내용은 Firebase Admin SDK 및 웹 SDK 자동 초기화를 참조하세요.

실제 Firebase 구성의 값은 프로젝트에서 프로비저닝한 특정 리소스에 해당합니다.

변수 계층 구조

Firebase App Hosting은 소스에 따라 우선순위 순서로 변수를 적용합니다. 예를 들어 Firebase 콘솔에 설정된 값은 항상 apphosting.yaml 및 dotenv 파일에 설정된 값을 재정의하거나 우선 적용됩니다.

전체 우선순위는 다음과 같습니다.

  1. Firebase Console → Console에서 설정된 변수
  2. apphosting.<env>.yaml → apphosting.staging.yaml와 같은 환경별 yaml 파일에 지정된 변수 (여러 환경 배포 참조)
  3. apphosting.yaml → apphosting.yaml 파일에 지정된 변수
  4. Firebase 시스템 → firebase_config json 또는 firebase_webapp_config의 값이 포함된 Firebase에서 설정한 변수와 SSR 앱의 호스트 이름 및 포트를 설정하는 환경 변수 (bundle.yaml의 App Hosting 어댑터에서 설정)

예약된 이름 및 제한사항

Cloud Run 컨테이너 런타임 계약에 정의된 환경 변수는 예약되어 있으며 설정할 수 없습니다.

환경에서 제공된 환경 변수(자동으로 설정된 변수 이외)는 나중에 런타임 버전에서 변경될 수 있습니다. 명시적으로 설정하지 않은 환경 변수를 사용하거나 수정하지 않는 것이 좋습니다. 또한 충돌을 방지하기 위해 모든 환경 변수에 고유 키를 프리픽스로 지정하는 것이 좋습니다.

일부 환경 변수 키는 내부에서 사용하도록 예약되어 있습니다. 구성 파일에는 다음 키를 사용하지 마세요.

  • 빈 문자열 ("")
  • '=' 기호가 포함된 키
  • X_FIREBASE_, X_GOOGLE_ 또는 CLOUD_RUN_로 시작하는 키
  • PORT
  • K_SERVICE
  • K_REVISION
  • K_CONFIGURATION
  • 중복 키

apphosting.yaml 만들기 및 수정

보안 비밀과 같은 고급 구성이나 동시 실행, CPU, 메모리 한도와 같은 런타임 설정의 경우 앱의 루트 디렉터리에서 apphosting.yaml 파일을 만들고 수정해야 합니다. 이 파일은 Cloud Secret Manager로 관리되는 보안 비밀에 대한 참조를 지원하므로 소스 제어에 안전하게 체크인할 수 있습니다.

apphosting.yaml을 만들려면 다음 명령어를 실행합니다.

firebase init apphosting

이렇게 하면 예시 (주석 처리됨) 구성이 포함된 기본 시작 apphosting.yaml 파일이 생성됩니다. 수정 후 일반적인 apphosting.yaml 파일은 다음과 같이 백엔드의 Cloud Run 서비스, 일부 환경 변수, Cloud Secret Manager에서 관리하는 보안 비밀에 대한 일부 참조가 포함될 수 있습니다.

# Settings for Cloud Run
runConfig:
  minInstances: 2
  maxInstances: 100
  concurrency: 100
  cpu: 2
  memoryMiB: 1024

# Environment variables and secrets
env:
  - variable: STORAGE_BUCKET
    value: mybucket.firebasestorage.app
    availability:
      - BUILD
      - RUNTIME

  - variable: API_KEY
    secret: myApiKeySecret

    # Same as API_KEY above but with a pinned version.
  - variable: PINNED_API_KEY
    secret: myApiKeySecret@5

    # Same as API_KEY above but with the long form secret reference as defined by Cloud Secret Manager.
  - variable: VERBOSE_API_KEY
    secret: projects/test-project/secrets/secretID

    # Same as API_KEY above but with the long form secret reference with pinned version.
  - variable: PINNED_VERBOSE_API_KEY
    secret: projects/test-project/secrets/secretID/versions/5

이 가이드의 나머지 부분에서는 이러한 설정 예시에 대한 자세한 정보와 컨텍스트를 제공합니다.

Cloud Run 서비스 설정 구성

apphosting.yaml 설정을 사용하면 Cloud Run 서비스가 프로비저닝되는 방식을 구성할 수 있습니다. Cloud Run 서비스에 사용할 수 있는 설정은 runConfig 객체에 제공됩니다.

  • cpu – 각 서빙 인스턴스에 사용되는 CPU 수입니다 (기본값: 1).
  • memoryMiB – 각 서빙 인스턴스에 할당된 메모리 양(MiB)(기본값: 512)
  • maxInstances – 한 번에 실행할 수 있는 최대 컨테이너 수 (기본값은 100이며 할당량으로 관리됨)
  • minInstances – 항상 활성 상태로 유지할 컨테이너 수입니다 (기본값 0).
  • concurrency – 각 서빙 인스턴스가 수신할 수 있는 최대 요청 수 (기본값 80)입니다.
  • cpuAlwaysAllocated – 요청이 처리되지 않는 경우에도 CPU가 항상 할당되는지 여부입니다 (기본값 false).

cpu, memoryMiB, concurrency에는 상호 의존적인 한도가 있습니다. 예를 들어 메모리 구성이 높을수록 최소 CPU 한도가 높아야 하고 분수 CPU에는 1의 동시 실행이 필요합니다. 유효한 범위와 필수 조합은 CPU 한도 및 메모리 한도에 대한 Cloud Run 문서를 참조하세요.

빌드 및 실행 스크립트 재정의

App Hosting는 감지된 프레임워크를 기반으로 앱의 빌드 및 시작 명령어를 추론합니다. 커스텀 빌드 또는 시작 명령어를 사용하려면 apphosting.yaml에서 App Hosting의 기본값을 재정의하면 됩니다.

scripts:
  buildCommand: next build --no-lint
  runCommand: node dist/index.js

빌드 명령어 재정의는 다른 빌드 명령어보다 우선 적용되며 앱을 프레임워크 어댑터에서 선택 해제하고 App Hosting에서 제공하는 프레임워크별 최적화를 사용 중지합니다. 앱 기능이 어댑터에서 제대로 지원되지 않는 경우에 사용하는 것이 가장 좋습니다. 빌드 명령어를 변경하되 제공된 어댑터를 계속 사용하려면 App Hosting 프레임워크 어댑터에 설명된 대로 package.json에 빌드 스크립트를 설정합니다.

App Hosting에서 추론된 명령어와 다른 명령어를 사용하여 앱을 시작하려는 경우 실행 명령어 재정의를 사용합니다.

빌드 출력 구성

App Hosting는 프레임워크에서 표시한 대로 사용되지 않는 출력 파일을 삭제하여 기본적으로 앱 배포를 최적화합니다. 앱 배포 크기를 더 최적화하거나 기본 최적화를 무시하려면 apphosting.yaml에서 이를 재정의하면 됩니다.

outputFiles:
  serverApp:
    include: [dist, server.js]

include 매개변수는 앱을 배포하는 데 필요한 앱 루트 디렉터리와 관련된 디렉터리 및 파일 목록을 가져옵니다. 모든 파일을 유지하려면 include를 [.]로 설정하면 모든 파일이 배포됩니다.

보안 비밀 매개변수 저장 및 액세스

API 키와 같은 민감한 정보는 보안 비밀로 저장해야 합니다. Firebase 콘솔에서 백엔드에 보안 비밀을 연결하거나 apphosting.yaml에서 참조하여 민감한 정보가 소스 제어에 체크인되지 않도록 할 수 있습니다.

secret 유형의 파라미터는 Cloud Secret Manager에 값이 저장된 문자열 파라미터를 나타냅니다. 보안 비밀 파라미터는 값을 직접 파생하는 대신 Cloud Secret Manager의 존재 여부를 확인하고 출시 중에 값을 로드합니다.

env:
  - variable: API_KEY
    secret: myApiKeySecret

Cloud Secret Manager의 보안 비밀에는 여러 버전이 있을 수 있습니다. 기본적으로 라이브 백엔드에서 사용할 수 있는 보안 비밀 파라미터의 값은 백엔드가 빌드된 시점에 사용 가능한 최신 버전의 보안 비밀에 고정됩니다. 파라미터의 버전 관리 및 수명 주기 관리에 대한 요구사항이 있는 경우 Firebase 콘솔 또는 apphosting.yaml에서 특정 버전에 고정할 수 있습니다. 예를 들어 apphosting.yaml에서 버전 5에 고정하려면 다음 안내를 따르세요.

env:
  - variable: PINNED_API_KEY
    secret: myApiKeySecret@5

Firebase CLI 명령어 firebase apphosting:secrets:set를 사용하여 보안 비밀을 만들 수 있으며 필요한 권한을 추가하라는 메시지가 표시됩니다. 이 흐름에서는 보안 비밀 참조를 apphosting.yaml에 자동으로 추가하는 옵션을 제공합니다.

Cloud Secret Manager에 대한 액세스 권한 부여

App Hosting에서 빌드 및 런타임 출시 중에 보안 비밀 값을 가져오려면 App Hosting 백엔드 서비스 계정에 Cloud Secret Manager에 액세스할 수 있는 권한이 있어야 합니다.

firebase apphosting:secrets:set 대신 Cloud Secret Manager 콘솔 또는 gcloud CLI를 사용하여 보안 비밀을 만드는 경우 Firebase CLI를 사용하여 백엔드에 대한 액세스 권한을 부여합니다.

firebase apphosting:secrets:grantaccess SECRET_NAME

또는 gcloud CLI를 사용하여 App Hosting 서비스 에이전트(service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com) 또는 백엔드의 런타임 서비스 계정에 Secret Manager 보안 비밀 접근자 역할(roles/secretmanager.secretAccessor)을 부여할 수 있습니다.

gcloud secrets add-iam-policy-binding SECRET_NAME \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"

콘솔 액세스 및 역할 기반 권한

Firebase 콘솔은 사용자 IAM 권한에 따라 환경 및 Secret Manager 기능을 동적으로 제한합니다.

  • 뷰어 역할: 읽기 전용 프로젝트 권한이 있는 사용자는 기존 구성 설정을 볼 수 있지만 변경할 수는 없습니다.
    • 백엔드를 만드는 동안에는 백엔드 만들기 버튼이 사용 중지됩니다.
    • 백엔드 설정 > 환경에서 새로 추가 버튼이 사용 중지되고 작업 더보기 (...) 행 메뉴가 숨겨집니다.
  • Secret Manager 권한 누락: Cloud Secret Manager와 상호작용할 수 있는 IAM 권한이 없는 사용자는 콘솔에 경고 메시지 (프로젝트 소유자에게 보안 비밀을 추가할 수 있는 권한을 요청하세요)가 표시됩니다.
    • 백엔드를 만드는 동안 보안 비밀 카드가 사용 중지됩니다.
    • 백엔드 설정 > 환경에서 새로 추가를 클릭하면 보안 비밀 옵션이 사용 중지되고 작업 더보기 (...) 행 메뉴의 일부 옵션이 기존 보안 비밀 항목에서 숨겨집니다.

VPC 액세스 구성

App Hosting 백엔드는 Virtual Private Cloud(VPC) 네트워크에 연결할 수 있습니다. 자세한 내용과 예시는 Firebase App Hosting를 VPC 네트워크에 연결을 참조하세요.

apphosting.yaml 파일의 vpcAccess 매핑을 사용하여 액세스를 구성합니다. 정규화된 네트워크/커넥터 이름 또는 ID를 사용합니다. ID를 사용하면 커넥터/네트워크가 다른 스테이징 환경과 프로덕션 환경 간에 이동할 수 있습니다.

VPC 직접 연결 이그레스 구성 (apphosting.yaml):

runConfig:
  vpcAccess:
    egress: PRIVATE_RANGES_ONLY # Default value
    networkInterfaces:
      # Specify at least one of network and/or subnetwork
      - network: my-network-id
        subnetwork: my-subnetwork-id

서버리스 커넥터 구성 (apphosting.yaml):

runConfig:
  vpcAccess:
    egress: ALL_TRAFFIC
    connector: connector-id

백엔드 관리

App Hosting 백엔드의 기본 관리를 위한 명령어는 Firebase 콘솔과 Firebase CLI에서 제공됩니다. 이 섹션에서는 백엔드 생성 및 삭제를 포함하여 보다 일반적인 관리 작업 중 일부를 설명합니다.

백엔드 만들기

App Hosting 백엔드는 App Hosting에서 웹 앱을 빌드하고 실행하기 위해 만드는 관리형 리소스의 모음입니다.

Firebase Console: 호스팅 및 서버리스 > App Hosting으로 이동한 후 백엔드 만들기를 클릭합니다 (Firebase 프로젝트의 첫 번째 백엔드인 경우 시작하기 클릭).

Firebase CLI: (v13.15.4 이상) 백엔드를 만들려면 로컬 프로젝트 디렉터리의 루트에서 다음 명령어를 실행하고 프로젝트 ID를 인수로 제공합니다.

firebase apphosting:backends:create --project PROJECT_ID

콘솔 또는 CLI 모두에서 프롬프트에 따라 리전을 선택하고, GitHub 연결을 설정하고, 다음 기본 배포 설정을 구성합니다.

  • 앱의 루트 디렉터리를 설정합니다 (기본값은 /).

    일반적으로 package.json 파일이 있는 폴더입니다.

  • 라이브 브랜치 설정

    라이브 URL에 배포되는 GitHub 저장소의 브랜치입니다. 기능 브랜치 또는 개발 브랜치가 병합되는 브랜치인 경우가 많습니다.

  • 자동 출시 수락 또는 거부

    자동 출시는 기본적으로 사용 설정되어 있습니다. 백엔드 생성이 완료되면 앱을 App Hosting에 즉시 배포하도록 선택할 수 있습니다.

  • 백엔드에 이름을 할당합니다.

  • 런타임 환경을 선택합니다. 기본적으로 권장되는 최신 Node.js 버전이 미리 선택되어 있습니다.

    • 기본 이미지 자동 업데이트(ABIU)를 구성합니다. ABIU는 기본적으로 사용 설정되어 있으며 기본 환경에 보안 패치를 자동으로 적용합니다. 런타임에 '지정되지 않음'을 선택하여 ABIU를 선택 해제할 수 있습니다.

백엔드 삭제

백엔드를 완전히 삭제하려면 먼저 Firebase Console 또는 Firebase CLI를 사용하여 삭제한 다음 관련 애셋을 수동으로 삭제합니다. 이때 다른 백엔드 또는 Firebase 프로젝트의 다른 측면에서 사용할 수 있는 리소스는 삭제하지 않도록 주의해야 합니다.

Firebase 콘솔: 설정 메뉴에서 백엔드 삭제를 선택합니다.

Firebase CLI: (v13.15.4 이상)

  1. 다음 명령어를 실행하여 App Hosting 백엔드를 삭제합니다. 이렇게 하면 백엔드의 모든 도메인이 사용 중지되고 연결된 Cloud Run 서비스가 삭제됩니다.

    firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID
    
  2. (선택사항) Artifact Registry의 Google Cloud Console 탭에서 'firebaseapphosting-images'에 있는 백엔드 이미지를 삭제합니다.

  3. Cloud Secret Manager에서 보안 비밀 이름에 'apphosting'이 포함된 보안 비밀을 삭제합니다. 이러한 보안 비밀이 Firebase 프로젝트의 다른 백엔드나 다른 측면에서 사용되지 않도록 각별히 주의하세요.