Ваш бэкенд Firebase App Hosting может подключаться к сети виртуального частного облака (VPC) . Это позволяет вашему бэкенду Firebase App Hosting получать доступ к бэкенд-сервисам, недоступным по публичным IP-адресам, таким как Cloud SQL, Spanner, Cloud Memorystore, Compute Engine или внутренние микросервисы Kubernetes.
Доступ к VPC возможен только во время выполнения (из контейнера Cloud Run ), а не во время сборки ( Cloud Build ).
Выберите способ подключения к сети VPC
- Прямой выход VPC : проще, быстрее и дешевле. Использует один IP-адрес на контейнер. Рекомендуется для большинства случаев использования.
- Serverless Connectors : объединяет IP-адреса для крупных приложений. Требуется оплата базовой виртуальной машины. Подробнее см. в разделе «Доступ к Serverless VPC» на странице цен на VPC .
 Настроить в apphosting.yaml
 Для настройки доступа используйте сопоставление 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
Пример: подключение к Memorystore для Redis из приложения Next.js
Системы кэширования, такие как Redis или Memcached, обычно используются для создания быстрого уровня кэширования данных в приложении. В этом примере показано, как настроить Memorystore для Redis в том же проекте Google Cloud , что и ваш бэкенд Firebase App Hosting , и подключиться к нему с помощью Direct VPC egress .
Шаг 0: Создайте хранилище памяти для экземпляра Redis
-  Перейдите на страницу Memorystore for Redis в консоли Google Cloud .- Убедитесь, что выбран тот же проект, который вы используете для Firebase App Hosting .
- Если вы не можете получить доступ к этой странице, убедитесь, что для вашего проекта включена функция выставления счетов и что вы включили API Memorystore .
 
- Выберите Создать экземпляр .
-  Настройте новый экземпляр, используя желаемые параметры. Вот несколько примеров значений, которые вы можете использовать:-  Введите my-redis-cacheв поле Instance ID .
-  Введите Redis cacheв поле Отображаемое имя .
- Выберите «Базовый» в селекторе уровней. Базовый уровень означает автономный узел Redis, в отличие от стандартного уровня, который использует узел-реплику для резервного копирования данных.
- Выберите регион вашего сервера App Hosting в поле «Регион» . Убедитесь, что это значение соответствует региону вашего сервера.
- Выберите любую зону из селектора.
-  В поле «Ёмкость» введите значение 5Это установит ёмкость вашего экземпляра в 5 ГБ.
-  В разделе «Версия» выберите 5.0(рекомендуется).
- Выберите значение по умолчанию в селекторе авторизованных сетей .
 
-  Введите 
Шаг 1: Обновите apphosting.yaml , указав идентификатор сети VPC.
- Посетите страницу сетей VPC в консоли Google Cloud .
-  Найдите идентификатор сети VPC для вашего экземпляра Memorystore для Redis (он часто будет default).
- Настройте прямую конфигурацию выхода VPC в - apphosting.yamlиспользуя идентификатор сети VPC:- runConfig: vpcAccess: egress: PRIVATE_RANGES_ONLY # Default value networkInterfaces: - network: my-network-id
Шаг 2: Добавьте переменные среды, которые направляют ваше приложение в Redis
- Информацию о подключении (хост и порт) можно найти на вкладке «Подключения» вашего экземпляра Memorystore для Redis в консоли Google Cloud .
- Подключитесь к Redis с помощью переменных окружения - REDISPORTи- REDISHOST. Задайте их в- apphosting.yamlиспользуя значения хоста и порта из консоли Google Cloud :- env: # Sample only. Use actual values provided by Memorystore - variable: REDISPORT value: 6379 - variable: REDISHOST value: 10.127.16.3
Шаг 3: Используйте Redis из вашего приложения
- Установите пакет redis npm: - npm install redis@latest
- Доступ к кэшу Redis из вашего кода. Используйте переменные окружения, настроенные на предыдущем шаге. Например, вот как можно читать данные из кэша в обработчике маршрутов Next.js: - src/lib/redis.js- import { createClient } from "redis"; // Set these environment variables in apphosting.yaml const REDISHOST = process.env.REDISHOST; const REDISPORT = process.env.REDISPORT; let redisClient; export async function getClient(req, res) { // Only connect if a connection isn't already available if (!redisClient) { redisClient = await createClient(REDISPORT, REDISHOST) .on("error", (err) => console.error("Redis Client Error", err)) .connect(); } return redisClient; }
- src/app/counter/route.js- import { getClient } from "@/lib/redis.js"; export async function GET(request) { const redisClient = await getClient(); const count = await redisClient.get("counter"); return Response.json({ count }); } export async function POST(request) { const redisClient = await getClient(); const count = await redisClient.incr("counter"); return Response.json({ count }); }
 
Шаг 4 (необязательно): настройте приложение для локальной разработки.
 Эмулятор Firebase App Hosting может переопределять значения с помощью apphosting.emulator.yaml . Здесь вы можете изменить значение REDISHOST так, чтобы оно указывало на локальный хост, что позволит вести локальную разработку с использованием локально установленной версии Redis.
- Установите Redis на локальную машину
- Создайте или отредактируйте - apphosting.emulators.yamlдля ссылки на ваш локальный экземпляр:- env: - variable: REDISHOST value: 127.0.0.1