Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Практические руководства
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Анализ поресурсной детализации расходов с помощью Object Storage
    • Получение сведений для запроса на включение ресурса в белый список Минцифры
      • Настройка отказоустойчивой архитектуры в Yandex Cloud
        • Обзор
        • Консоль управления, CLI и API
        • Terraform
      • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
      • Обновление группы ВМ под нагрузкой
      • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
      • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
      • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram

В этой статье:

  • Поддерживаемые инструменты
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте и настройте публичную зону DNS
  • Добавьте сертификат в Certificate Manager
  • Создайте облачную сеть и подсети
  • Создайте группу безопасности
  • Создайте бакет в Object Storage
  • Загрузите файл сервиса в бакет
  • Создайте группу бэкендов в Application Load Balancer
  • Создайте HTTP-роутер и виртуальный хост
  • Создайте L7-балансировщик
  • Создайте CDN-ресурс
  • Создайте ресурсную запись CNAME для CDN-ресурса
  • Проверьте работу сервиса
  • Как удалить созданные ресурсы
  1. Базовая инфраструктура
  2. Отказоустойчивость и масштабирование
  3. Интеграция L7-балансировщика с Cloud CDN и Object Storage
  4. Консоль управления, CLI и API

Интеграция L7-балансировщика с Cloud CDN и Object Storage с помощью консоли управления

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 13 февраля 2026 г.
  • Поддерживаемые инструменты
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте и настройте публичную зону DNS
  • Добавьте сертификат в Certificate Manager
  • Создайте облачную сеть и подсети
  • Создайте группу безопасности
  • Создайте бакет в Object Storage
  • Загрузите файл сервиса в бакет
  • Создайте группу бэкендов в Application Load Balancer
  • Создайте HTTP-роутер и виртуальный хост
  • Создайте L7-балансировщик
  • Создайте CDN-ресурс
  • Создайте ресурсную запись CNAME для CDN-ресурса
  • Проверьте работу сервиса
  • Как удалить созданные ресурсы

Важно

Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.

Примечание

Для реализации решения вам понадобится домен. В качестве примера будет использовано доменное имя example.com.

Чтобы настроить интеграцию L7-балансировщика с Yandex Cloud CDN и Yandex Object Storage с помощью консоли управления, Yandex Cloud CLI или API:

  1. Подготовьте облако к работе.
  2. Создайте и настройте публичную зону DNS.
  3. Добавьте сертификат в Certificate Manager.
  4. Создайте облачную сеть и подсети.
  5. Создайте группу безопасности.
  6. Создайте бакет в Object Storage.
  7. Загрузите файл сервиса в бакет.
  8. Создайте группу бэкендов в Application Load Balancer.
  9. Создайте HTTP-роутер и виртуальный хост.
  10. Создайте L7-балансировщик.
  11. Создайте CDN-ресурс.
  12. Создайте ресурсную запись CNAME для CDN-ресурса.
  13. Проверьте работу сервиса.

Если созданные ресурсы вам больше не нужны, удалите их.

Поддерживаемые инструментыПоддерживаемые инструменты

Для выполнения шагов можно использовать различные поддерживаемые инструменты. Бо́льшую часть шагов можно выполнить с помощью любого из стандартных инструментов: консоли управления, интерфейсов командной строки Yandex Cloud CLI и API Yandex Cloud. В каждом шаге перечислены поддерживаемые для него инструменты.

Некоторые инструменты поддерживаются не для всех шагов: через Yandex Cloud CLI сейчас нельзя создать группу бэкендов в Application Load Balancer с бакетами в качестве бэкендов.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

В качестве примера будет использоваться каталог с именем example-folder.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за хранение данных в Object Storage, операции с ними и исходящий трафик (см. тарифы Object Storage);
  • плата за использование вычислительных ресурсов L7-балансировщика (см. тарифы Application Load Balancer);
  • плата за исходящий трафик с CDN-серверов (см. тарифы Cloud CDN);
  • плата за публичные DNS-запросы и DNS-зоны, если вы используете Yandex Cloud DNS (см. тарифы Cloud DNS).

Создайте и настройте публичную зону DNSСоздайте и настройте публичную зону DNS

Примечание

В настоящем руководстве рассматривается сценарий, при котором доменом управляет сервис Yandex Cloud DNS.

Если вы не хотите делегировать управление вашим доменом платформе Yandex Cloud, вы можете выполнить необходимые настройки DNS с использованием инструментов, которые предлагает ваш администратор домена. В этом случае для создания ресурсных записей воспользуйтесь документацией вашего администратора домена или обратитесь в службу его технической поддержки.

Чтобы настроить публичную зону DNS в инфраструктуре Yandex Cloud:

  1. Делегируйте ваш домен сервису Cloud DNS. Для этого в личном кабинете вашего регистратора домена укажите в настройках домена адреса DNS-серверов ns1.yandexcloud.kz и ns2.yandexcloud.kz.

  2. Создайте публичную зону DNS в Yandex Cloud DNS.

    Консоль управления
    Yandex Cloud CLI
    API
    1. В консоли управления выберите каталог example-folder.

    2. Перейдите в сервис Cloud DNS.

    3. Нажмите Создать зону.

    4. Задайте настройки зоны, соответствующие вашему домену:

      1. Зона — доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоны example.com. соответствует домену example.com. Чтобы создать доменную зону с нелатинскими символами, используйте кодировку Punycode.
      2. Тип — Публичная.
      3. Имя — my-domain-zone.
    5. Нажмите Создать.

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    По умолчанию секреты создаются в том же каталоге, что и подключения. Чтобы создать секрет в другом каталоге, в параметре --secret-folder-id укажите идентификатор этого каталога (для этого вам потребуется роль resource-manager.user на целевой каталог). Каталоги для подключения и секрета должны находиться в одном облаке. После создания подключения вы не сможете изменить этот параметр.

    Выполните команду:

    yc dns zone create \
      --name my-domain-zone \
      --zone <имя_домена> \
      --public-visibility
    

    Где --zone — имя вашего домена, например example.com.. Значение параметра --zone должно заканчиваться точкой. Например, название доменной зоны example.com. соответствует домену example.com.

    Результат:

    id: dns6b0mdas5r********
    folder_id: b1gt6g8ht345********
    created_at: "2026-02-05T10:42:16.017Z"
    name: my-domain-zone
    zone: example.com.
    public_visibility: {}
    

    Подробнее о команде yc dns zone create читайте в справочнике CLI.

    Чтобы создать публичную зону DNS, воспользуйтесь методом REST API create для ресурса DnsZone или вызовом gRPC API DnsZoneService/Create.

Добавьте сертификат в Certificate ManagerДобавьте сертификат в Certificate Manager

Поддерживаются сертификаты из Yandex Certificate Manager. Вы можете выпустить новый сертификат Let's Encrypt® или загрузить собственный.

Сертификат должен находиться в том же каталоге, в котором расположен ваш CDN-ресурс.

В настоящем руководстве рассматривается сценарий, при котором для CDN-ресурса создается новый сертификат от Let's Encrypt®.

  1. Добавьте в сервис Certificate Manager сертификат от Let's Encrypt® для вашего домена:

    Консоль управления
    Yandex Cloud CLI
    API
    1. В консоли управления выберите каталог example-folder.
    2. Перейдите в сервис Certificate Manager.
    3. Нажмите Добавить сертификат и выберите Сертификат от Let's Encrypt.
    4. В открывшемся окне в поле Имя укажите mymanagedcert.
    5. В поле Домены укажите имя вашего домена, например example.com.
    6. Выберите тип проверки прав на домен DNS.
    7. Нажмите Создать.

    Выполните команду:

    yc certificate-manager certificate request \
      --name mymanagedcert \
      --challenge dns \
      --domains <имя_домена>
    

    Где <имя_домена> — имя вашего домена. Например: example.com.

    Результат:

    id: fpq7t9dpi4o0********
    folder_id: b1gt6g8ht345********
    created_at: "2026-02-05T11:00:15.952968372Z"
    name: mymanagedcert
    type: MANAGED
    domains:
      - example.com
    status: VALIDATING
    updated_at: "2026-02-05T11:00:15.952968372Z"
    

    Подробнее о команде yc certificate-manager certificate request читайте в справочнике CLI.

    Сохраните идентификатор (id) созданного сертификата: он пригодится при создании CDN-ресурса.

    Чтобы добавить сертификат, воспользуйтесь методом REST API requestNew для ресурса Certificate или вызовом gRPC API CertificateService/RequestNew.

    В списке сертификатов появится новый сертификат со статусом Validating. Этот статус означает, что запрос на выпуск сертификата от Let's Encrypt® создан, и для его успешной обработки вам необходимо пройти процедуру проверки прав на домен.

  2. Для успешного выпуска сертификата пройдите проверку прав на домен:

    Консоль управления
    Yandex Cloud CLI
    API
    1. В консоли управления выберите каталог example-folder.
    2. Перейдите в сервис Certificate Manager.
    3. В списке сертификатов выберите mymanagedcert.
    4. В открывшемся окне в блоке Проверка прав на домены выберите CNAME-запись и ниже в секции с вашим доменом нажмите Создать запись.
    5. В открывшемся окне подтвердите создание ресурсной записи.

    Проверка прав на домен может занять от нескольких минут до нескольких дней — дождитесь ее успешного завершения. В результате сертификат будет выпущен и перейдет в статус Issued.

    1. Получите значения ресурсной записи, необходимой для прохождения проверки:

      yc certificate-manager certificate get \
        --name mymanagedcert \
        --full
      

      Результат:

      id: fpq7t9dpi4o0********
      folder_id: b1gt6g8ht345********
      created_at: "2026-02-05T11:00:15.952Z"
      name: mymanagedcert
      type: MANAGED
      domains:
        - example.com
      status: VALIDATING
      updated_at: "2026-02-05T11:00:15.952Z"
      challenges:
        - domain: example.com
          type: DNS
          created_at: "2026-02-05T11:00:15.952968372Z"
          updated_at: "2026-02-05T11:00:19.659820021Z"
          status: PENDING
          message: Create a record in your DNS provider.
          dns_challenge:
            name: _acme-challenge.example.com.
            type: CNAME
            value: fpq7t9dpi4o0********.cm.yandexcloud.net.
        - domain: example.com
          type: DNS
          created_at: "2026-02-05T11:00:15.952968372Z"
          updated_at: "2026-02-05T11:00:19.659820021Z"
          status: PENDING
          message: Create a record in your DNS provider.
          dns_challenge:
            name: _acme-challenge.example.com.
            type: TXT
            value: 77LcWo8-Qx4sHJuFDoNCpptLZkyWVW5A2dY********
      

      Подробнее о команде yc certificate-manager certificate get читайте в справочнике CLI.

      Сохраните значение поля value из раздела с типом CNAME в блоке challenges.dns_challenge. Это значение понадобится на следующем шаге.

    2. Создайте ресурсную запись CNAME для прохождения проверки ваших прав на домен:

      yc dns zone add-records \
        --name my-domain-zone \
        --record "_acme-challenge 600 CNAME <значение_dns_challenge>"
      

      Где <значение_dns_challenge> — сохраненное на предыдущем шаге значение, необходимое для проверки прав на домен с помощью CNAME-записи.

      Результат:

      +--------+------------------------------+-------+------------------------------------------+-----+
      | ACTION |             NAME             | TYPE  |                   DATA                   | TTL |
      +--------+------------------------------+-------+------------------------------------------+-----+
      | +      | _acme-challenge.example.com. | CNAME | fpq7t9dpi4o0********.cm.yandexcloud.net. | 600 |
      +--------+------------------------------+-------+------------------------------------------+-----+
      

      Подробнее о команде yc dns zone add-records читайте в справочнике CLI.

      Проверка прав на домен может занять от нескольких минут до нескольких дней — дождитесь ее успешного завершения. В результате сертификат будет выпущен и перейдет в статус Issued.

    3. Убедитесь, что статус сертификата изменился на Issued:

      yc certificate-manager certificate get \
        --name mymanagedcert
      

      Результат:

      id: fpq7t9dpi4o0********
      folder_id: b1gt6g8ht345********
      created_at: "2026-02-05T11:00:15.952Z"
      name: mymanagedcert
      type: MANAGED
      domains:
        - example.com
      status: ISSUED
      issuer: CN=R12,O=Let's Encrypt,C=US
      subject: CN=example.com
      serial: 57bc7967996d73d63d9d52e337c********
      updated_at: "2026-02-05T13:29:23.658Z"
      issued_at: "2026-02-05T13:29:23.658Z"
      not_after: "2026-05-06T12:30:49Z"
      not_before: "2026-02-05T12:30:50Z"
      

      Сохраните полученный идентификатор сертификата — он понадобится позднее при создании CDN-ресурса.

    Для получения информации, необходимой для прохождения процедуры проверки прав на домен, воспользуйтесь методом REST API get для ресурса Certificate или вызовом gRPC API CertificateService/Get с параметром view=FULL.

    Чтобы создать ресурсную запись CNAME в зоне DNS, воспользуйтесь методом REST API updateRecordSets для ресурса DnsZone или вызовом gRPC API DnsZoneService/UpdateRecordSets.

    Примечание

    Чтобы DNS-проверка прав на домен по записи CNAME прошла успешно, для поддомена _acme-challenge проверяемого доменного имени не должно быть других ресурсных записей, кроме CNAME. Например, для имени _acme-challenge.example.com. должна существовать только CNAME-запись и не должно быть TXT-записи.

    Если управление вашим доменом осуществляется вне платформы Yandex Cloud, создайте необходимую ресурсную запись для проверки прав на домен с использованием инструментов, которые предоставляет ваш администратор домена. Подробнее читайте в разделе Проверка прав на домен.

Создайте облачную сеть и подсетиСоздайте облачную сеть и подсети

Все ресурсы будут относиться к одной облачной сети.

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог example-folder.
  2. Перейдите в сервис Virtual Private Cloud.
  3. Справа сверху нажмите кнопку Создать сеть.
  4. В поле Имя укажите example-network.
  5. В поле Дополнительно выберите опцию Создать подсети.
  6. Нажмите кнопку Создать сеть.
  1. Создайте сеть example-network:

    yc vpc network create example-network
    

    Результат:

      id: enpqm699f18v********
      folder_id: b1gt6g8ht345********
      created_at: "2026-02-05T11:57:02Z"
      name: example-network
      default_security_group_id: enp4qvbg2ri1********
    

    Подробнее о команде yc vpc network create читайте в справочнике CLI.

  2. Создайте подсети во всех зонах доступности:

    • В kz1-a:

      yc vpc subnet create example-subnet-kz1-a \
        --zone kz1-a \
        --network-name example-network \
        --range 192.168.1.0/24
      

      Результат:

      id: e9b0fo0hvhpd********
      folder_id: b1gt6g8ht345********
      created_at: "2026-02-05T12:00:21Z"
      name: example-subnet-kz1-a
      network_id: enpqm699f18v********
      zone_id: kz1-a
      v4_cidr_blocks:
        - 192.168.1.0/24
      

      Сохраните полученный идентификатор подсети — он понадобится позднее при создании L7-балансировщика.

    • В kz1-b:

      yc vpc subnet create example-subnet-kz1-b \
        --zone kz1-b \
        --network-name example-network \
        --range 192.168.2.0/24
      

      Результат:

      id: e2lo05oe9slo********
      folder_id: b1gt6g8ht345********
      created_at: "2026-02-05T12:02:02Z"
      name: example-subnet-kz1-b
      network_id: enpqm699f18v********
      zone_id: kz1-b
      v4_cidr_blocks:
        - 192.168.2.0/24
      

      Сохраните полученный идентификатор подсети — он понадобится позднее при создании L7-балансировщика.

    • В kz1-d:

      yc vpc subnet create example-subnet-kz1-d \
        --zone kz1-d \
        --network-name example-network \
        --range 192.168.3.0/24
      

      Результат:

      id: fl8bpb6lnu80********
      folder_id: b1gt6g8ht345********
      created_at: "2026-02-05T12:03:23Z"
      name: example-subnet-kz1-d
      network_id: enpqm699f18v********
      zone_id: kz1-d
      v4_cidr_blocks:
        - 192.168.3.0/24
      

      Сохраните полученный идентификатор подсети — он понадобится позднее при создании L7-балансировщика.

    Подробнее о команде yc vpc subnet create читайте в справочнике CLI.

  1. Чтобы создать сеть example-network, воспользуйтесь методом REST API create для ресурса Network или вызовом gRPC API NetworkService/Create.
  2. Чтобы создать подсети example-subnet-kz1-a, example-subnet-kz1-b и example-subnet-kz1-d в трех зонах доступности, воспользуйтесь методом REST API create для ресурса Subnet или вызовом gRPC API SubnetService/Create.

Создайте группу безопасностиСоздайте группу безопасности

Группы безопасности содержат правила, которые разрешают L7-балансировщику получать входящий трафик и отправлять его на бакеты-бэкенды.

Чтобы создать группы безопасности:

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог example-folder.

  2. Перейдите в сервис Virtual Private Cloud.

  3. На панели слева выберите Группы безопасности.

  4. Справа сверху нажмите кнопку Создать группу безопасности.

  5. В поле Имя укажите example-sg.

  6. В поле Сеть выберите example-network.

  7. В блоке Правила создайте следующие правила по инструкции:

    Направление
    трафика
    Описание Диапазон портов Протокол Источник /
    назначение
    CIDR блоки
    Исходящий any Весь Любой CIDR 0.0.0.0/0
    Входящий ext-http 80 TCP CIDR 0.0.0.0/0
    Входящий ext-https 443 TCP CIDR 0.0.0.0/0
    Входящий healthchecks 30080 TCP Проверки состояния балансировщика —
  8. Нажмите кнопку Создать.

Выполните команду:

yc vpc security-group create example-sg \
  --network-name example-network \
  --rule "direction=egress,port=any,protocol=any,v4-cidrs=[0.0.0.0/0]" \
  --rule "direction=ingress,port=80,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \
  --rule "direction=ingress,port=443,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \
  --rule "direction=ingress,port=30080,protocol=tcp,predefined=loadbalancer_healthchecks"

Результат:

id: enp9dpfa774h********
folder_id: b1gt6g8ht345********
created_at: "2026-02-05T12:29:47Z"
name: example-sg
network_id: enpqm699f18v********
status: ACTIVE
rules:
  - id: enpa11mk1r50********
    direction: EGRESS
    protocol_name: ANY
    protocol_number: "-1"
    cidr_blocks:
      v4_cidr_blocks:
        - 0.0.0.0/0
  - id: enp4aob2uiam********
    direction: INGRESS
    ports:
      from_port: "80"
      to_port: "80"
    protocol_name: TCP
    protocol_number: "6"
    cidr_blocks:
      v4_cidr_blocks:
        - 0.0.0.0/0
  - id: enpn8onb4lda********
    direction: INGRESS
    ports:
      from_port: "443"
      to_port: "443"
    protocol_name: TCP
    protocol_number: "6"
    cidr_blocks:
      v4_cidr_blocks:
        - 0.0.0.0/0
  - id: enp6j82kiu2p********
    direction: INGRESS
    ports:
      from_port: "30080"
      to_port: "30080"
    protocol_name: TCP
    protocol_number: "6"
    predefined_target: loadbalancer_healthchecks

Сохраните полученный идентификатор группы безопасности — он понадобится позднее при создании L7-балансировщика.

Подробнее о команде yc vpc security-group create читайте в справочнике CLI.

Воспользуйтесь методом REST API create для ресурса SecurityGroup или вызовом gRPC API SecurityGroupService/Create.

Чтобы добавить правило для проверок состояния балансировщика, используйте параметр loadbalancer_healthchecks в поле predefinedTarget для REST API или в поле SecurityGroupRuleSpec.target.predefined_target для gRPC API.

Создайте бакет в Object StorageСоздайте бакет в Object Storage

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог example-folder.
  2. Перейдите в сервис Object Storage.
  3. Справа сверху нажмите кнопку Создать бакет.
  4. В поле Имя укажите уникальное имя бакета.
  5. В полях Чтение объектов и Чтение списка объектов выберите Для всех.
  6. Нажмите кнопку Создать бакет.

Выполните команду, указав уникальное имя бакета:

yc storage bucket create \
  --name <имя_бакета> \
  --public-read \
  --public-list

Результат:

name: my-cdn-bucket
folder_id: b1gt6g8ht345********
anonymous_access_flags:
  read: true
  list: true
default_storage_class: STANDARD
versioning: VERSIONING_DISABLED
created_at: "2026-02-05T12:35:03.639102Z"
resource_id: e3e8qar9vrim********

Воспользуйтесь методом REST API create для ресурса Bucket или вызовом gRPC API BucketService/Create.

Загрузите файл сервиса в бакетЗагрузите файл сервиса в бакет

  1. Создайте файл index.html со следующим содержимым:

    <!DOCTYPE html>
    <html>
      <head>
        <title>My service</title>
      </head>
      <body>
        <p>The service is working</p>
      </body>
    </html>
    
  2. Загрузите файл в бакет:

    Консоль управления
    Yandex Cloud CLI
    API
    1. В консоли управления выберите каталог example-folder.
    2. Перейдите в сервис Object Storage.
    3. Выберите бакет, созданный ранее.
    4. Нажмите кнопку Загрузить и выберите для загрузки файл index.html.
    5. В открывшемся окне с подтверждением загрузки нажмите Загрузить.

    Загрузите в бакет файл index.html:

    yc storage s3api put-object \
      --bucket <имя_бакета> \
      --key index.html \
      --content-type "text/html" \
      --body <локальный_путь_к_файлу>
    

    Где:

    • --bucket — имя созданного ранее бакета.
    • --body — локальный путь, по которому находится созданный ранее HTML-файл. Например: ./index.html.

    Результат:

    etag: '"2f613d0f35668e1d98fa9c6b********"'
    request_id: a809736f********
    

    Подробнее о команде yc storage s3api put-object читайте в справочнике CLI.

    Воспользуйтесь методом REST API upload.

Создайте группу бэкендов в Application Load BalancerСоздайте группу бэкендов в Application Load Balancer

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог example-folder.
  2. Перейдите в сервис Application Load Balancer.
  3. На панели слева выберите Группы бэкендов.
  4. Справа сверху нажмите кнопку Создать группу бэкендов.
  5. В поле Имя укажите example-bg.
  6. В поле Тип выберите тип группы бэкендов HTTP.
  7. В блоке Бэкенды нажмите кнопку Добавить и задайте настройки бэкенда:
    1. В поле Имя укажите example-backend.
    2. В поле Вес укажите 100.
    3. В поле Тип выберите тип бэкенда Бакет.
    4. В поле Бакет выберите бакет, созданный ранее.
  8. Нажмите кнопку Создать.

Если вы будете выполнять следующие шаги с помощью Yandex Cloud CLI, скопируйте идентификатор полученной группы бэкендов example-bg — он потребуется для выполнения дальнейших действий.

Создать группу бэкендов с бэкендом типа бакет с помощью Yandex Cloud CLI в настоящий момент нельзя. Воспользуйтесь консолью управления или API, чтобы создать нужную группу бэкендов.

Воспользуйтесь методом REST API create для ресурса BackendGroup или вызовом gRPC API BackendGroupService/Create.

Создайте HTTP-роутер и виртуальный хостСоздайте HTTP-роутер и виртуальный хост

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог example-folder.

  2. Перейдите в сервис Application Load Balancer.

  3. На панели слева выберите HTTP-роутеры.

  4. Справа сверху нажмите кнопку Создать HTTP-роутер.

  5. В поле Имя укажите example-router.

  6. Создайте виртуальный хост example-vh:

    1. В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост.
    2. В поле Имя укажите example-vh.
    3. В поле Authority укажите имя вашего домена. Например: example.com.
    4. Нажмите кнопку Добавить маршрут.
    5. В поле Имя укажите example-route.
    6. В поле Путь выберите Начинается с и укажите путь /.
    7. В списке Методы HTTP выберите GET.
    8. В поле Действие оставьте Маршрутизация.
    9. В списке Группа бэкендов выберите example-bg.
  7. Остальные настройки оставьте без изменений и нажмите кнопку Создать.

  1. Создайте HTTP-роутер example-router:

    yc alb http-router create example-router
    

    Результат:

    id: ds78i77j8lg0********
    name: example-router
    folder_id: b1gt6g8ht345********
    created_at: "2026-02-05T13:09:27.917359782Z"
    

    Подробнее о команде yc alb http-router create читайте в справочнике CLI.

  2. Создайте виртуальный хост example-vh:

    yc alb virtual-host create example-vh \
      --http-router-name example-router \
      --authority <имя_домена>
    

    Где <имя_домена> — имя вашего домена. Например: example.com.

    Результат:

    done (1s)
    name: example-vh
    authority:
      - example.com
    

    Подробнее о команде yc alb virtual-host create читайте в справочнике CLI.

  3. Создайте маршрут example-route в виртуальном хосте example-vh:

    yc alb virtual-host append-http-route example-route \
      --http-router-name example-router \
      --virtual-host-name example-vh \
      --prefix-path-match "/" \
      --backend-group-name example-bg
    

    Результат:

    done (1s)
    name: example-vh
    authority:
      - example.com
    routes:
      - name: example-route
        http:
          match:
            path:
              prefix_match: /
          route:
            backend_group_id: ds7glpil29lb********
    

    Подробнее о команде yc alb virtual-host append-http-route читайте в справочнике CLI.

  1. Чтобы создать HTTP-роутер example-router, воспользуйтесь методом REST API create для ресурса HttpRouter или вызовом gRPC API HttpRouterService/Create.
  2. Чтобы создать виртуальный хост example-vh, привязанный к роутеру, и его маршрут, воспользуйтесь методом REST API create для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Create.

Создайте L7-балансировщикСоздайте L7-балансировщик

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог example-folder.

  2. Перейдите в сервис Application Load Balancer.

  3. Справа сверху нажмите кнопку Создать L7-балансировщик и выберите Вручную.

  4. В поле Имя укажите example-balancer.

  5. В блоке Сетевые настройки:

    1. В поле Сеть выберите example-network.
    2. В поле Группы безопасности выберите Из списка и в появившемся списке выберите созданную ранее группу безопасности example-sg.
  6. В блоке Размещение выберите три подсети для узлов балансировщика — example-subnet-kz1-a, example-subnet-kz1-b и example-subnet-kz1-d — и включите передачу трафика в эти подсети.

  7. В блоке Обработчики нажмите кнопку Добавить обработчик и задайте настройки обработчика:

    1. В поле Имя укажите example-listener.
    2. В блоке Публичный IP-адрес:
      • В поле Порт укажите 80.
      • В поле Тип выберите Автоматически.
  8. В поле HTTP-роутер выберите example-router.

  9. Нажмите кнопку Создать.

  1. Создайте балансировщик example-balancer:

    yc alb load-balancer create example-balancer \
      --network-name example-network \
      --security-group-id <идентификатор_группы_безопасности_example-sg> \
      --location zone=kz1-a,subnet-id=<идентификатор_подсети_example-subnet-kz1-a> \
      --location zone=kz1-b,subnet-id=<идентификатор_подсети_example-subnet-kz1-b> \
      --location zone=kz1-d,subnet-id=<идентификатор_подсети_example-subnet-kz1-d>
    

    Где:

    • --security-group-id — идентификатор группы безопасности, сохраненный ранее при ее создании.
    • subnet-id — идентификаторы подсетей в трех зонах доступности, сохраненные ранее при их создании.

    Результат:

    done (7m17s)
    id: ds790ardig7r********
    name: example-balancer
    folder_id: b1gt6g8ht345********
    status: ACTIVE
    region_id: kz1
    network_id: enpqm699f18v********
    allocation_policy:
      locations:
        - zone_id: kz1-a
          subnet_id: e9b0fo0hvhpd********
        - zone_id: kz1-b
          subnet_id: e2lo05oe9slo********
        - zone_id: kz1-d
          subnet_id: fl8bpb6lnu80********
    security_group_ids:
      - enp9dpfa774h********
    created_at: "2026-02-05T13:30:25.695763710Z"
    

    Подробнее о команде yc alb load-balancer create читайте в справочнике CLI.

  2. Добавьте к балансировщику обработчик:

    yc alb load-balancer add-listener \
      --name example-balancer \
      --listener-name example-listener \
      --external-ipv4-endpoint port=80 \
      --http-router-name example-router
    

    Результат:

    done (9m53s)
    id: ds790ardig7r********
    name: example-balancer
    folder_id: b1gt6g8ht345********
    status: ACTIVE
    region_id: kz1
    network_id: enpqm699f18v********
    listeners:
      - name: example-listener
        endpoints:
          - addresses:
              - external_ipv4_address:
                  address: 158.160.***.***
            ports:
              - "80"
        http:
          handler:
            http_router_id: ds78i77j8lg0********
    allocation_policy:
      locations:
        - zone_id: kz1-a
          subnet_id: e9b0fo0hvhpd********
        - zone_id: kz1-b
          subnet_id: e2lo05oe9slo********
        - zone_id: kz1-d
          subnet_id: fl8bpb6lnu80********
    security_group_ids:
      - enp9dpfa774h********
    

    Сохраните IP-адрес обработчика (значение поля address) — он понадобится позднее при создании CDN-ресурса.

    Подробнее о команде yc alb load-balancer add-listener читайте в справочнике CLI.

Чтобы создать L7-балансировщик, воспользуйтесь методом REST API create для ресурса LoadBalancer или вызовом gRPC API LoadBalancerService/Create.

Создайте CDN-ресурсСоздайте CDN-ресурс

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог example-folder.

  2. Перейдите в сервис Cloud CDN.

  3. Нажмите кнопку Создать ресурс.

  4. Задайте основные настройки CDN-ресурса:

    • В блоке Контент:

      • Включите Доступ к контенту.

      • В поле Запрос контента выберите Из одного источника.

      • В поле Тип источника выберите L7-балансировщик и в появившемся поле L7-балансировщик выберите example-balancer.

      • В поле IP-адрес выберите IP-адрес, назначенный балансировщику (будет единственным в списке).

      • В поле Протокол для источников выберите HTTP.

      • В поле Доменное имя укажите имя вашего домена. Например: example.com.

        Внимание

        Указанное доменное имя станет основным, и его будет невозможно изменить после создания CDN-ресурса.

    • В блоке Дополнительно:

      • В поле Переадресация клиентов выберите С HTTP на HTTPS.
      • В поле Тип сертификата укажите Сертификат из Certificate Manager и выберите сертификат mymanagedcert, который вы создали ранее для вашего доменного имени.
      • В поле Заголовок Host выберите Как у клиента.
  5. Нажмите Продолжить.

  6. В разделах Кеширование, HTTP-заголовки и методы и Дополнительно оставьте настройки по умолчанию и нажмите Продолжить.

  1. Создайте группу источников example-origin-group, указав сохраненный ранее IP-адрес балансировщика:

    yc cdn origin-group create --name "example-origin-group" \
      --origin source=<IP-адрес_балансировщика>:80,enabled=true
    

    Результат:

    id: "12756795849********"
    folder_id: b1gt6g8ht345********
    name: example-origin-group
    use_next: true
    origins:
      - id: "68784"
        origin_group_id: "12756795849********"
        source: 158.160.***.***:80
        enabled: true
        provider_type: ourcdn
    provider_type: ourcdn
    

    Сохраните идентификатор группы источников (значение поля origin_group_id) — он понадобится позднее при создании CDN-ресурса.

    Подробнее о команде yc cdn origin-group create читайте в справочнике CLI.

  2. Создайте CDN-ресурс:

    yc cdn resource create \
      --cname <имя_домена> \
      --origin-group-id <идентификатор_группы_источников> \
      --origin-protocol http \
      --cert-manager-ssl-cert-id <идентификатор_сертификата> \
      --forward-host-header
    

    Где:

    • --cname — имя вашего домена. Например: example.com.
    • --origin-group-id — идентификатор группы источников, полученный на предыдущем шаге.
    • --cert-manager-ssl-cert-id — идентификатор созданного ранее сертификата mymanagedcert.

    Результат:

    id: bc8rpt67l6dl********
    folder_id: b1gt6g8ht345********
    cname: example.com
    created_at: "2026-02-05T14:05:24.913996Z"
    updated_at: "2026-02-05T14:05:24.913996Z"
    active: true
    options:
      edge_cache_settings:
        enabled: true
        default_value: "86400"
      browser_cache_settings: {}
      query_params_options:
        ignore_query_string:
          enabled: true
          value: true
      slice: {}
      host_options:
        forward_host_header:
          enabled: true
          value: true
      static_headers:
        enabled: true
      stale: {}
      allowed_http_methods:
        enabled: true
        value:
          - GET
          - HEAD
          - OPTIONS
      static_request_headers:
        enabled: true
      custom_server_name: {}
      ignore_cookie:
        enabled: true
        value: true
      secure_key:
        type: DISABLE_IP_SIGNING
    origin_group_id: "12756795849********"
    origin_group_name: example-origin-group
    origin_protocol: HTTP
    ssl_certificate:
      type: CM
      status: READY
      data:
        cm:
          id: fpq7t9dpi4o0********
    provider_type: ourcdn
    provider_cname: d88c6ee6********.topology.gslb.yccdn.ru
    

    Сохраните идентификатор созданного ресурса (значение поля id), а также значение CNAME провайдера (значение поля provider_cname) — они понадобятся позднее.

    Подробнее о команде yc cdn resource create читайте в справочнике CLI.

  3. Включите переадресацию клиентов для CDN-ресурса, указав сохраненный на предыдущем шаге идентификатор:

    yc cdn resource update <идентификатор_CDN-ресурса> \
      --redirect-http-to-https
    

    Подробнее о команде yc cdn resource update читайте в справочнике CLI.

Чтобы создать CDN-ресурс, воспользуйтесь методом REST API create для ресурса Resource или вызовом gRPC API ResourceService/Create.

Создайте ресурсную запись CNAME для CDN-ресурсаСоздайте ресурсную запись CNAME для CDN-ресурса

Консоль управления
Yandex Cloud CLI
API
  1. Получите значение доменного имени провайдера CDN.

  2. В консоли управления выберите каталог example-folder.

  3. Перейдите в сервис Cloud DNS и выберите созданную ранее DNS-зону.

  4. Нажмите Создать запись.

  5. Задайте параметры записи:

    • В поле Имя выберите Совпадает с именем зоны (@).
    • В поле Тип выберите тип записи CNAME.
    • В поле Значение укажите значение доменного имени провайдера CDN.
  6. Нажмите Создать.

  1. Создайте ресурсную запись CNAME в сервисе Cloud DNS:

    yc dns zone add-records \
      --name my-domain-zone \
      --record "@ 600 CNAME <значение_cname>"
    

    Где <значение_cname> — полученное ранее значение CNAME провайдера.

    Результат:

    +--------+--------------+-------+-----------------------------------------+-----+
    | ACTION |     NAME     | TYPE  |                  DATA                   | TTL |
    +--------+--------------+-------+-----------------------------------------+-----+
    | +      | example.com. | CNAME | d88c6ee6********.topology.gslb.yccdn.ru | 600 |
    +--------+--------------+-------+-----------------------------------------+-----+
    

    Подробнее о команде yc dns zone add-records читайте в справочнике CLI.

Чтобы получить значение CNAME-записи для CDN-ресурса, воспользуйтесь методом REST API getProviderCName для ресурса Resource или вызовом gRPC API ResourceService/GetProviderCName.

Чтобы создать ресурсную запись CNAME в зоне DNS, воспользуйтесь методом REST API updateRecordSets для ресурса DnsZone или вызовом gRPC API DnsZoneService/UpdateRecordSets.

На обновление записей на DNS-серверах может потребоваться несколько часов. После этого вы сможете проверить работу сервиса.

Если управление вашим доменом осуществляется вне платформы Yandex Cloud, создайте необходимую ресурсную запись для CDN-ресурса с использованием инструментов, которые предоставляет ваш администратор домена. Подробнее читайте в разделе Проверка прав на домен.

Проверьте работу сервисаПроверьте работу сервиса

Чтобы проверить работу сервиса, откройте в браузере адрес https://example.com/index.html (где вместо example.com — имя вашего домена). Если все было настроено правильно, вы должны увидеть страницу с таким содержанием:

<!DOCTYPE html>
<html>
  <head>
    <title>My service</title>
  </head>
  <body>
    <p>The service is working</p>
  </body>
</html>

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы:

  1. Если вы настраивали CNAME-записи в Cloud DNS, удалите зону DNS example-dns-zone.
  2. Удалите CDN-ресурс с основным доменным именем example.com.
  3. Удалите L7-балансировщик example-balancer.
  4. Удалите все объекты из бакета.
  5. Удалите бакет.
  6. Удалите подсети example-subnet-kz1-a, example-subnet-kz1-b и example-subnet-kz1-d.
  7. Удалите группу безопасности example-sg.
  8. Удалите сеть example-network.
  9. При необходимости удалите сертификат mymanagedcert.

См. такжеСм. также

  • Интеграция L7-балансировщика с Cloud CDN и Object Storage с помощью Terraform

Была ли статья полезна?

Предыдущая
Обзор
Следующая
Terraform
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»