پیکربندی و مدیریت کردن زیرینه‌های «میزبانی برنامه»

‫App Hosting برای استفاده آسان و نگهداری کم طراحی شده است، و تنظیمات پیش‌فرض آن برای اکثر موارد استفاده بهینه شده است. درعین‌حال، App Hosting ابزارهایی را برای مدیریت و پیکربندی پسین‌ها برای نیازهای خاص شما ارائه می‌دهد. این راهنما آن ابزارها و فرایندها را شرح می‌دهد.

تنظیم و به‌روزرسانی متغیرهای محیطی و اطلاعات محرمانه

‫App Hosting به شما امکان می‌دهد از متغیرهای محیطی برای مقادیر پیکربندی غیرحساس و از رمزها برای پارامترهای حساس مانند کلیدهای میانای برنامه‌سازی کاربردی، اطلاعات اعتباری پایگاه داده، و نشانه‌های سرویس استفاده کنید.

  • متغیرهای محیطی استاندارد: برای پیکربندی‌های نوشتار ساده غیرحساس (مانند نشانی‌های وب عمومی API، پرچم‌های ویژگی، یا اهداف ساخت) استفاده می‌شود. مقادیر برای همه اعضای پروژه قابل‌مشاهده است.
  • رمزها: برای پارامترهای حساس (مانند رمزهای کارخواه OAuth، کدهای API، یا گذرواژه‌های پایگاه داده) استفاده می‌شود. اطلاعات محرمانه توسط Cloud Secret Manager پشتیبانی می‌شود. مقادیر رمز محافظت می‌شوند و هرگز به‌صورت نوشتار ساده در کنسول Firebase نمایش داده نمی‌شوند؛ درعوض، کنسول پیوندهای عمیقی برای مشاهده و مدیریت مستقیم مقادیر رمز در Cloud Secret Manager ارائه می‌دهد.

می‌توانید پارامترهای محیط را بااستفاده از دو رویکرد مکمل تعریف و مدیریت کنید:

  • کنسول Firebase: به‌سرعت اطلاعات محرمانه یا متغیرها را به‌طور پویا درطول ایجاد اولیه پس‌راند یا پس‌از استقرار در تنظیمات پس‌راند اضافه، ویرایش، و پیوست کنید.
  • کد-اول (apphosting.yaml): متغیرهای محیطی و ارجاع‌های محرمانه را در فایل پیکربندی مخزن خود برای استقرارهای کنترل‌شده نسخه اعلام کنید، یا از apphosting.<env>.yaml برای تنظیم مقادیر مختلف برای محیط‌های مختلف استفاده کنید.

کنسول Firebase

نماگرفتی از کادر گفتگوی کنسول Firebase برای افزودن متغیرهای محیطی

apphosting.yaml

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

مدیریت متغیرها و اطلاعات محرمانه در کنسول Firebase

می‌توانید متغیرهای محیطی و اسرار را در کنسول Firebase هنگام ایجاد پس‌بخش یا هرزمان از تنظیمات پس‌بخش پیکربندی کنید. تغییرات ذخیره‌شده بدون استقرار در عرضه بعدی شما اعمال می‌شود و بر عرضه فعلی تأثیری ندارد.

تنظیم متغیرها و اطلاعات محرمانه درطول ایجاد پس‌زمینه

هنگام ایجاد کردن پسای جدید App Hosting در کنسول Firebase، می‌توانید متغیرهای محیطی استاندارد و اسرار را درطول مرحله پیکربندی پسای دستیار راه‌اندازی پیکربندی کنید:

  1. در کنسول Firebase، به میزبانی و بدون سرور > میزبانی برنامه بروید و روی ایجاد کردن پس‌راند کلیک کنید.
  2. مراحل اولیه جادوی راه‌اندازی را تکمیل کنید تا منطقه اصلی و مخزن کدتان را انتخاب کنید.
  3. در بخش پیکربندی کردن پس‌بست، کارت‌های جمع‌شدنی مربوط به متغیرهای محیطی و اطلاعات محرمانه را پیدا کنید، جایی که می‌توانید متغیرهای استاندارد را اضافه کنید و اطلاعات محرمانه را پیوست کنید.
  4. جادوگر ایجاد باطن را تکمیل کنید و روی پایان و استقرار کلیک کنید.

مدیریت متغیرها و اطلاعات محرمانه در تنظیمات پسین

می‌توانید متغیرهای محیطی و اطلاعات محرمانه را برای پس‌زمینه‌های فعال از داشبورد تنظیمات پس‌زمینه مشاهده، اضافه، ویرایش، یا حذف کنید:

  1. در کنسول Firebase، پسای App Hosting خود را انتخاب کنید و تنظیمات > محیط را باز کنید.
  2. پیکربندی‌های موجود را در جدول متغیرهای محیط مرور کنید:
    • متغیرهای استاندارد: مقادیر به‌صورت نوشتار ساده در بلوک‌های کد قابل‌کپی نمایش داده می‌شوند.
    • رازها: به‌صورت پیوند کلیک‌کردنی نمایش داده می‌شود که نام راز را نشان می‌دهد (که Cloud Secret Manager را در کنسول Google Cloud باز می‌کند) و نسخه هدف آن (مانند latest یا شماره نسخه خاصی مثل 2) نیز در کنار آن قرار دارد.
  3. برای افزودن متغیر یا رمز:
    1. روی افزودن مورد جدید کلیک کنید.
    2. در مرحله ۱: انتخاب نوع، متغیر محیطی استاندارد (برای داده‌های غیرحساس که برای همه اعضای پروژه قابل‌مشاهده است) یا رمز (برای کلیدهای میانای برنامه‌سازی کاربردی و اطلاعات کاربری حساس با دسترسی محدود) را انتخاب کنید، و سپس روی بعدی کلیک کنید.
    3. در مرحله ۲: پیکربندی تنظیمات، نام کلید و مقدار نوشتار ساده (برای متغیرهای استاندارد) را وارد کنید یا شناسه رمز و نسخه (برای رمزها) را انتخاب کنید.
    4. تغییراتتان را بااستفاده از یکی از گزینه‌های زیر ذخیره کنید:
      • ذخیره و استقرار: پیکربندی پسین را فوراً به‌روز می‌کند و ساخت و عرضه جدیدی را راه‌اندازی می‌کند.
      • فقط ذخیره (از پیکان کرکره‌ای کنار ذخیره و استقرار): تغییرات پیکربندی را بدون راه‌اندازی فوری عرضه ذخیره می‌کند. تنظیمات به‌روزشده در استقرار بعدی شما اعمال می‌شود.
  4. برای ویرایش یا حذف ورودی موجود، روی منوِ کنش‌های بیشتر (...) در انتهای ردیف کلیک کنید:
    • ویرایش را برای اصلاح کلید، مقدار، نگاشت رمز، یا نسخه انتخاب کنید، و سپس روی ذخیره و استقرار یا فقط ذخیره کلیک کنید.
    • حذف را انتخاب کنید و برداشتن را در کادر گفتگو تأیید کنید.

انتقال متغیرها از dotenv فایل

برای برنامه‌های Next.js، فایل‌های dotenv حاوی متغیرهای محیطی با App Hosting کار می‌کنند.

هنگام ایجاد یا به‌روزرسانی پس‌بک، می‌توانید متغیرهای محیطی را از فایل dotenv به کنسول Firebase منتقل کنید. برای این کار، کل محتوای فایل dotenv را کپی کنید و در اولین فیلد کلید در فرم افزودن جدید در تنظیمات > محیط جای‌گذاری کنید.

همه متغیرهای محیطی که به این روش کپی می‌شوند به‌طور خودکار در فرم قالب‌بندی می‌شوند و نیازی به وارد کردن جداگانه هرکدام نیست، به‌شرطی که ورودی از قالب‌بندی استاندارد KEY=value استفاده کند:

KEY1=value1
KEY2=value2
KEY3=value3

برای کنترل متغیر محیطی پیچیده یا دانه‌ای با هر چارچوبی، توصیه می‌کنیم از apphosting.yaml استفاده کنید.

مدیریت متغیرها و اطلاعات محرمانه در apphosting.yaml

برای گردش‌های کاری کد-اول، متغیرهای محیطی استاندارد و مراجع محرمانه را تحت کلید env: در فایل پیکربندی apphosting.yaml مخزن پروژه‌تان اعلام کنید (به ایجاد و ویرایش 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 هم در زمان ساخت و هم در زمان اجرا دردسترس هستند. این رفتار پیش‌فرض برای ورودی‌های تعریف‌شده در apphosting.yaml نیز هست، مگراینکه بااستفاده از ویژگی availability دامنه را محدود کنید. در apphosting.yaml (اما نه در کنسول)، می‌توانید متغیر یا رمز را فقط به محیط ساخت (BUILD) یا فقط به محیط زمان اجرا (RUNTIME) محدود کنید.

دسترسی به متغیرها و اطلاعات محرمانه در کد برنامه

چه در کنسول Firebase پیکربندی شده باشد چه در apphosting.yaml، متغیرهای محیطی و اسرار به‌عنوان متغیرهای محیطی استاندارد (برای مثال، process.env در Node.js) در زمان اجرای برنامه شما نمایش داده می‌شوند.

// 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 همیشه پارامترهای اعلام‌شده در فایل‌های apphosting.yaml و dotenv را لغو می‌کنند. اگر متغیر محیطی یا کلید محرمانه با نام یکسان هم در apphosting.yaml و هم در کنسول Firebase وجود داشته باشد، مقدار کنسول درطول ساخت و اجرای زمان اجرا اولویت دارد.

ترتیب کامل اولویت در اینجا آمده است:

  1. کنسول Firebase ← متغیرها و اطلاعات محرمانه تنظیم‌شده در کنسول
  2. apphosting.<env>.yaml ← متغیرها و رمزهای مشخص‌شده در فایل YAML مختص محیط مانند apphosting.staging.yaml (به استقرار محیط‌های چندگانه مراجعه کنید)
  3. apphosting.yaml ← متغیرها و اطلاعات محرمانه مشخص‌شده در فایل apphosting.yaml
  4. سیستم Firebase ← متغیرهای تنظیم‌شده توسط Firebase که حاوی مقادیری برای FIREBASE_CONFIG یا FIREBASE_WEBAPP_CONFIG هستند، و همچنین متغیرهای محیطی که نام‌های میزبان و درگاه‌ها را برای برنامه‌های SSR تنظیم می‌کنند (تنظیم‌شده توسط App Hosting آداپتورها در bundle.yaml)

متغیرهای محیطی که به‌طور خودکار پر شده‌اند

متغیرهای محیطی وجود دارد که به‌طور خودکار توسط 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 به‌طور خودکار این FIREBASE_WEBAPP_CONFIG متغیر محیطی را در یک اسکریپت پس‌از نصب درطول ساخت بررسی می‌کند، که به شما امکان می‌دهد کیت توسعه نرم‌افزار کارخواه را نیز بدون هیچ آرگومانی مقداردهی اولیه کنید.

برای جزئیات بیشتر درباره نحوه استفاده از این متغیرهای محیطی برای مقداردهی اولیه کیت‌های توسعه نرم‌افزار، به مقداردهی اولیه خودکار کیت توسعه نرم‌افزار Firebase Admin و کیت‌های توسعه نرم‌افزار وب مراجعه کنید.

توجه داشته باشید که مقادیر موجود در پیکربندی واقعی Firebase شما با منابع خاصی که در پروژه‌تان فراهم کرده‌اید مطابقت خواهد داشت.

سلسله مراتب متغیر

‫Firebase App Hosting متغیرهایتان را براساس منبعشان به‌ترتیب اولویت اعمال می‌کند. برای مثال، مقادیر تنظیم‌شده در کنسول Firebase همیشه مقادیر تنظیم‌شده در فایل‌های apphosting.yaml و dotenv را لغو می‌کنند یا بر آن‌ها اولویت دارند.

ترتیب کامل اولویت در اینجا آمده است:

  1. کنسول Firebase ← متغیرهای تنظیم‌شده در کنسول
  2. apphosting.<env>.yaml ← متغیرهای مشخص‌شده در فایل yaml مختص محیط، مانند apphosting.staging.yaml (به استقرار محیط‌های چندگانه مراجعه کنید)
  3. apphosting.yaml ← متغیرهای مشخص‌شده در فایل apphosting.yaml
  4. سیستم Firebase ← متغیرهای تنظیم‌شده توسط Firebase که حاوی مقادیری برای firebase_config json یا firebase_webapp_config، و همچنین متغیرهای محیطی هستند که نام‌های میزبان و درگاه‌ها را برای برنامه‌های SSR تنظیم می‌کنند (تنظیم‌شده توسط آداپتورهای App Hosting در bundle.yaml)

نام‌های رزروشده و محدودیت‌ها

متغیرهای محیطی تعریف‌شده در قرارداد زمان اجرای محفظه 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،‏ memoryMiB، و concurrency محدودیت‌های وابسته به یکدیگر دارند (برای مثال، پیکربندی‌های حافظه بالاتر به محدودیت‌های حداقل CPU بالاتر نیاز دارند، و CPUهای کسری به همزمانی 1 نیاز دارند). برای محدوده‌های معتبر و ترکیب‌های لازم، به اسناد Cloud Run درباره محدودیت‌های CPU و محدودیت‌های حافظه مراجعه کنید.

لغو کردن دستورگان‌های ساخت و اجرا

‫App Hosting ساخت برنامه و فرمان شروع را براساس چارچوب شناسایی‌شده استنباط می‌کند. اگر می‌خواهید از ساخت سفارشی یا فرمان شروع استفاده کنید، می‌توانید پیش‌فرض‌های App Hosting را در apphosting.yaml لغو کنید.

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

لغو فرمان ساخت بر هر فرمان ساخت دیگری اولویت دارد و برنامه شما را از آداپتورهای چارچوب خارج می‌کند و هرگونه بهینه‌سازی خاص چارچوب را که App Hosting ارائه می‌دهد غیرفعال می‌کند. بهتر است زمانی از آن استفاده شود که ویژگی‌های برنامه‌تان به‌خوبی توسط آداپتورها پشتیبانی نمی‌شود. اگر می‌خواهید فرمان ساخت را تغییر دهید اما همچنان از آداپتورهای ارائه‌شده استفاده کنید، اسکریپت ساخت را در package.json تنظیم کنید، همان‌طور که در آداپتورهای چارچوب App Hosting شرح داده شده است.

وقتی فرمان خاصی وجود دارد که می‌خواهید برای شروع برنامه‌تان استفاده کنید و با فرمان استنباط‌شده App Hosting متفاوت است، از لغو فرمان اجرا استفاده کنید.

پیکربندی خروجی ساخت

App Hosting به‌طور پیش‌فرض با حذف کردن فایل‌های خروجی استفاده‌نشده، همان‌طور که چارچوب نشان می‌دهد، استقرار برنامه‌تان را بهینه‌سازی می‌کند. اگر می‌خواهید اندازه استقرار برنامه‌تان را بیشتر بهینه‌سازی کنید یا بهینه‌سازی‌های پیش‌فرض را نادیده بگیرید، می‌توانید این مورد را در apphosting.yaml لغو کنید.

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

پارامتر include فهرستی از دایرکتوری‌ها و فایل‌های مربوط به دایرکتوری ریشه برنامه را که برای استقرار برنامه شما ضروری هستند دریافت می‌کند. اگر می‌خواهید مطمئن شوید که همه فایل‌ها نگهداری می‌شوند، include را روی [.] تنظیم کنید تا همه فایل‌ها مستقر شوند.

ذخیره و دسترسی به پارامترهای مخفی

اطلاعات حساس مانند کلیدهای میانای برنامه‌سازی کاربردی باید به‌عنوان اطلاعات محرمانه ذخیره شوند. می‌توانید اطلاعات محرمانه را در کنسول Firebase به باطن خود پیوست کنید یا در apphosting.yaml به آن‌ها ارجاع دهید تا از بررسی اطلاعات حساس در کنترل منبع جلوگیری کنید.

پارامترهای نوع secret نشان‌دهنده پارامترهای رشته‌ای هستند که مقداری ذخیره‌شده در Cloud Secret Manager دارند. پارامترهای رمز به‌جای مشتق کردن مستقیم مقدار، وجود آن را در Cloud Secret Manager بررسی می‌کنند و مقادیر را درطول عرضه بار می‌کنند.

env:
  - variable: API_KEY
    secret: myApiKeySecret

اطلاعات محرمانه در Cloud Secret Manager می‌تواند چندین نسخه داشته باشد. به‌طور پیش‌فرض، مقدار پارامتر محرمانه دردسترس برای پسای شما به جدیدترین نسخه دردسترس محرمانه در زمان ساخت پسا سنجاق می‌شود. اگر الزاماتی برای نسخه‌سازی و مدیریت چرخه حیات پارامترها دارید، می‌توانید به نسخه‌های خاصی در کنسول Firebase یا در apphosting.yaml سنجاق کنید. برای مثال، برای سنجاق کردن به نسخه ۵ در apphosting.yaml:

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 را داشته باشد.

اگر بااستفاده از کنسول Cloud Secret Manager یا gcloud CLI به‌جای firebase apphosting:secrets:set رمز ایجاد می‌کنید، بااستفاده از Firebase CLI به باطن خود دسترسی اعطا کنید:

firebase apphosting:secrets:grantaccess SECRET_NAME

یا می‌توانید نقش Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) را به عامل سرویس App Hosting (service-PROJECT_NUMBER@gcp-sa-apphosting.iam.gserviceaccount.com) یا حساب سرویس زمان اجرای پسای خود بااستفاده از gcloud CLI اعطا کنید:

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 وجود ندارد: کاربرانی که اجازه‌های IAM برای تعامل با Cloud Secret Manager را ندارند، پیام هشداری در کنسول می‌بینند (برای افزودن رمزها، از مالک پروژه اجازه بگیرید):
    • درطول ایجاد پس‌بک، کارت رمزها غیرفعال است.
    • در تنظیمات باطن > محیط، گزینه رمز هنگام کلیک کردن روی افزودن جدید غیرفعال می‌شود و برخی‌از گزینه‌ها در منو ردیفی کنش‌های بیشتر (...) در ورودی‌های رمز موجود پنهان می‌شوند.

پیکربندی دسترسی VPC

پسوند App Hosting شما می‌تواند به شبکه Virtual Private Cloud (VPC) متصل شود. برای اطلاعات بیشتر و نمونه، اتصال Firebase App Hosting به شبکه VPC را ببینید.

برای پیکربندی دسترسی، از نگاشت vpcAccess در فایل apphosting.yaml استفاده کنید. از نام کامل شبکه/اتصال‌دهنده یا شناسه استفاده کنید. استفاده از شناسه‌ها امکان انتقال بین محیط‌های آماده‌سازی و تولید با رابط‌ها/شبکه‌های مختلف را فراهم می‌کند.

پیکربندی خروج مستقیم 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: به میزبانی و بدون سرور > میزبانی برنامه بروید، و سپس روی ایجاد پس‌روال کلیک کنید (اگر این اولین پس‌روال در پروژه Firebase شما است، روی شروع به کار کلیک کنید).

Firebase CLI: (نسخه ۱۳.۱۵.۴ یا جدیدتر) برای ایجاد کردن پس‌بک، دستور زیر را از ریشه دایرکتوری پروژه محلی‌تان اجرا کنید و شناسه پروژه خود را به‌عنوان آرگومان ارائه دهید:

firebase apphosting:backends:create --project PROJECT_ID

برای کنسول یا CLI، دستورالعمل‌ها را دنبال کنید تا منطقه‌ای را انتخاب کنید، اتصال GitHub را راه‌اندازی کنید، و این تنظیمات استقرار پایه را پیکربندی کنید:

  • دایرکتوری ریشه برنامه‌تان را تنظیم کنید (به‌طور پیش‌فرض / است)

    معمولاً فایل package.json در اینجا قرار دارد.

  • تنظیم کردن شاخه فعال

    این شاخه مخزن GitHub شما است که در نشانی وب فعال شما مستقر می‌شود. اغلب، این شاخه همان شاخه‌ای است که شاخه‌های ویژگی یا شاخه‌های توسعه در آن ادغام می‌شوند.

  • پذیرفتن یا رد کردن عرضه‌های خودکار

    عرضه خودکار به‌طور پیش‌فرض فعال است. پس‌از تکمیل ایجاد باطن، می‌توانید انتخاب کنید که برنامه‌تان فوراً در App Hosting مستقر شود.

  • نامی به پسای خود اختصاص دهید.

  • محیط زمان اجرای خود را انتخاب کنید. به‌طور پیش‌فرض، جدیدترین نسخه توصیه‌شده Node.js ازقبل برای شما انتخاب شده است.

    • به‌روزرسانی‌های خودکار تصویر پایه (ABIU) را پیکربندی کنید. ABIU به‌طور پیش‌فرض فعال است و به‌طور خودکار وصله‌های امنیتی را در محیط زیربنایی شما اعمال می‌کند. با انتخاب «مشخص‌نشده» برای زمان اجرا، می‌توانید از ABIU انصراف دهید.

حذف کردن باطن

برای حذف کامل یک پسین، ابتدا از کنسول Firebase یا Firebase CLI برای حذف آن استفاده کنید، و سپس دارایی‌های مرتبط را به‌صورت دستی حذف کنید، مراقب باشید که هیچ منبعی را که ممکن است توسط پسین‌های دیگر یا جنبه‌های دیگر پروژه Firebase شما استفاده شود حذف نکنید.

کنسول Firebase: از منو تنظیمات، حذف کردن پس‌انتها را انتخاب کنید.

Firebase CLI: (نسخه ۱۳.۱۵.۴ یا جدیدتر)

  1. فرمان زیر را برای حذف کردن پسای App Hosting اجرا کنید. با این کار، همه دامنه‌های پس‌زمین شما غیرفعال می‌شود و سرویس Cloud Run مرتبط حذف می‌شود:

    firebase apphosting:backends:delete BACKEND_ID --project PROJECT_ID
    
  2. (اختیاری) در برگه کنسول Google Cloud برای Artifact Registry، تصویر مربوط به پسین خود را در «firebaseapphosting-images» حذف کنید.

  3. در Cloud Secret Manager، هرگونه اطلاعات محرمانه را که در نام آن «apphosting» وجود دارد حذف کنید، مراقب باشید که این اطلاعات محرمانه توسط دیگر پس‌روها یا دیگر جنبه‌های پروژه Firebase شما استفاده نشود.