Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки через Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Веб-сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Yandex Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации времени NTP
    • Работа с группой ВМ с автоматическим масштабированием
    • Автомасштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Yandex Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360
    • Интеграция с корпоративным сервисом DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция базы данных из стороннего кластера Apache Kafka® в Yandex Managed Service for Apache Kafka®
    • Поставка данных из Yandex Managed Service for MySQL в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for Apache Kafka® в Yandex Managed Service for ClickHouse с помощью Yandex Data Transfer
    • Перенос данных между кластерами Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for Apache Kafka® в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for MySQL в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Yandex Managed Service for Apache Kafka®
    • Управление схемами данных в Yandex Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Yandex Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Yandex Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Yandex Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Yandex Managed Service for ClickHouse и Yandex Data Proc
    • Настройка Yandex Managed Service for ClickHouse для Graphite
    • Получение данных из Yandex Managed Service for Apache Kafka® в Yandex Managed Service for ClickHouse
    • Получение данных из RabbitMQ в Yandex Managed Service for ClickHouse
    • Сохранение потока данных Yandex Data Streams в Yandex Managed Service for ClickHouse
    • Использование гибридного хранилища в Yandex Managed Service for ClickHouse
    • Шардирование таблиц Yandex Managed Service for ClickHouse
    • Настройка Yandex Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Yandex Cloud DNS для доступа к кластеру Yandex Managed Service for ClickHouse из других облачных сетей
    • Импорт данных из Yandex Managed Service for MySQL в Yandex Data Proc с помощью Sqoop
    • Импорт данных из Yandex Managed Service for PostgreSQL в Yandex Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Yandex Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Yandex Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Yandex Managed Service for MongoDB
    • Миграция данных в Yandex Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция базы данных из стороннего кластера MySQL в кластер Yandex Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Yandex Managed Service for MySQL с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в сторонний кластер MySQL
    • Миграция базы данных из Yandex Managed Service for MySQL в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в Yandex Object Storage с помощью Yandex Data Transfer
    • Создание кластера PostgreSQL для 1С
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция базы данных из стороннего кластера PostgreSQL в кластер Yandex Managed Service for PostgreSQL
    • Миграция базы данных из Managed Service for PostgreSQL
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for PostgreSQL в Yandex Object Storage
    • Миграция базы данных из Greenplum® в ClickHouse
    • Миграция базы данных из Greenplum® в PostgreSQL
    • Миграция базы данных из стороннего кластера Redis в Yandex Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Yandex Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из CSV-файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью SQL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Веб-сервис
  2. Публикация обновлений для игр

Публикация обновлений для игр с помощью Yandex Cloud CDN

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Создайте бакеты в Object Storage
  • Включите логирование бакета с файлами
  • Загрузите файл в бакет
  • Создайте CDN-ресурс и включите кеширование
  • Настройте DNS для своего домена
  • Предзагрузите контент в кеш CDN-серверов
  • Проверьте работу CDN
  • Как удалить созданные ресурсы

Создайте и настройте CDN-ресурс Yandex Cloud CDN для размещения в нем контента, к которому ожидается большое количество запросов в малый промежуток времени, например файлов для обновления игры (патчей, DLC и т. п.). Чтобы в этот промежуток не создавалась высокая нагрузка на источники контента со стороны CDN-серверов, файлы будут однократно предзагружены в кеш серверов.

Предполагается, что патч состоит из одного файла с именем ycgame-update-v1.1.exe. Он будет загружен в бакет Yandex Object Storage.

Примечание

Не рекомендуется предзагружать файлы размером меньше 200 МБ или больше 5 ГБ.

Чтобы создать CDN-инфраструктуру:

  1. Подготовьтесь к работе.
  2. Создайте бакеты в Object Storage.
  3. Включите логирование бакета с файлами.
  4. Загрузите файл в бакет.
  5. Создайте CDN-ресурс и включите кеширование.
  6. Настройте DNS для своего домена.
  7. Предзагрузите контент в кеш CDN-серверов.
  8. Проверьте работу CDN.

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

Перед началом работы

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

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

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

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

Убедитесь, что у вас есть доменное имя и доступ к настройкам DNS на сайте компании, которая предоставляет вам услуги DNS-хостинга. Обычно это компания-регистратор вашего домена.

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

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

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

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

Необходимо создать два бакета: в первом, ycprojektblue-storage, будут храниться файлы, а во втором, ycprojektblue-logs, — логи запросов к первому.

Консоль управления
AWS CLI
Terraform
API
  1. В консоли управления выберите сервис Object Storage.

  2. Создайте бакет для файлов:

    1. Нажмите кнопку Создать бакет.
    2. Укажите Имя бакета: ycprojektblue-storage.
    3. В полях Доступ на чтение объектов и Доступ к списку объектов выберите Публичный.
    4. Нажмите кнопку Создать бакет.
  3. Создайте бакет для логов:

    1. Нажмите кнопку Создать бакет.
    2. Укажите Имя бакета: ycprojektblue-logs.
    3. Нажмите кнопку Создать бакет.
  1. Создайте бакет для файлов:

    aws --endpoint-url=https://storage.yandexcloud.net \
      s3api create-bucket \
      --bucket ycprojektblue-storage \
      --acl public-read
    

    Результат:

    {
        "Location": "/ycprojektblue-storage"
    }
    
  2. Создайте бакет для логов:

    aws --endpoint-url=https://storage.yandexcloud.net \
      s3api create-bucket \
      --bucket ycprojektblue-logs
    

    Результат:

    {
        "Location": "/ycprojektblue-logs"
    }
    

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Перед началом работы получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.

  1. Опишите в конфигурационном файле параметры бакета:

    • access_key — идентификатор статического ключа доступа.
    • secret_key — значение секретного ключа доступа.
    • bucket — имя создаваемого бакета: ycprojektblue-storage.

    Пример структуры конфигурационного файла:

    provider "yandex" {
      token     = "<OAuth>"
      cloud_id  = "<идентификатор облака>"
      folder_id = "<идентификатор каталога>"
      zone      = "ru-central1-a"
    }
    
    resource "yandex_storage_bucket" "storage" {
      access_key = "<идентификатор статического ключа>"
      secret_key = "<секретный ключ>"
      bucket     = "ycprojektblue-storage"
      acl        = "public-read"
    }
    
    resource "yandex_storage_bucket" "logs" {
      access_key = "<идентификатор статического ключа>"
      secret_key = "<секретный ключ>"
      bucket     = "ycprojektblue-logs"
    }
    
  2. Проверьте корректность конфигурационных файлов:

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните бакет:

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

      terraform apply
      
    2. Подтвердите создание бакета.

Используйте метод API create.

Включите логирование бакета с файлами

Чтобы проверить, что при пользовательском запросе файл скачивается не напрямую из бакета, а из кеша CDN-сервера, нужно включить логирование бакета.

API

Используйте метод API putBucketLogging для бакета ycprojektblue-storage. Тело HTTP-запроса:

<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
  <LoggingEnabled>
    <TargetBucket>ycprojektblue-logs</TargetBucket>
  </LoggingEnabled>
</BucketLoggingStatus>

Где TargetBucket — имя бакета, в который будут записываться логи: ycprojektblue-logs.

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

Консоль управления
AWS CLI
Terraform
API
  1. В консоли управления выберите сервис Object Storage.
  2. Выберите бакет ycprojektblue-storage.
  3. Нажмите кнопку Загрузить.
  4. В появившемся окне выберите файл с патчем ycgame-update-v1.1.exe и нажмите кнопку Открыть.
  5. Нажмите кнопку Загрузить.

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

aws --endpoint-url=https://storage.yandexcloud.net \
  s3 cp \
  <путь к файлу ycgame-update-v1.1.exe> \
  s3://ycprojektblue-storage/ycgame-update-v1.1.exe

Результат:

upload: <путь к файлу ycgame-update-v1.1.exe> to s3://ycprojektblue-storage/ycgame-update-v1.1.exe
  1. Добавьте к конфигурационному файлу из шага с созданием бакетов параметры объекта, который необходимо загрузить:

    • bucket — имя бакета для добавления объекта: ycprojektblue-storage.
    • key — имя объекта в бакете: ycgame-update-v1.1.exe. Обязательный параметр.
    • source — относительный или абсолютный путь к файлу, загружаемому как объект.

    Пример структуры конфигурационного файла:

    ...
    
    resource "yandex_storage_object" "patch-v1-1" {
      access_key = "<идентификатор статического ключа>"
      secret_key = "<секретный ключ>"
      bucket = "ycprojektblue-storage"
      key    = "ycgame-update-v1.1.exe"
      source = "<путь к файлу>/ycgame-update-v1.1.exe"
    }
    
  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку с конфигурационным файлом.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Разверните облачные ресурсы.

    1. Если в конфигурации нет ошибок, выполните команду:
    terraform apply
    
    1. Подтвердите создание объекта.

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

Создайте CDN-ресурс и включите кеширование

Консоль управления
CLI
Terraform
API
  1. В консоли управления выберите сервис Cloud CDN.

  2. Если провайдер CDN еще не активирован, нажмите кнопку Подключиться к провайдеру.

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

    1. На вкладке CDN-ресурсы нажмите кнопку Создать ресурс.

    2. Задайте основные параметры CDN-ресурса следующим образом:

      • Запрос контента — Из одного источника.

      • Тип источника — Бакет.

      • Бакет — ycprojektblue-storage.

      • Доменные имена для раздачи контента — основное доменное имя, которое вы будете использовать для публикации патчей, например cdn.ycprojectblue.example.

        Внимание

        Основное доменное имя для раздачи контента невозможно изменить после создания CDN-ресурса.

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

        • В поле Протокол для источников выберите HTTPS.
        • В поле Переадресация клиентов выберите С HTTP на HTTPS.
        • Выберите опцию Доступ конечных пользователей к контенту.
        • В поле Тип сертификата выберите Let's Encrypt®, чтобы автоматически выпустить сертификат для доменного имени cdn.ycprojektblue.example после создания CDN-ресурса.
        • В поле Заголовок Host выберите Свое значение. В поле Значение заголовка укажите доменное имя источника, ycprojektblue-storage.storage.yandexcloud.net, чтобы бакет-источник корректно отвечал на запросы CDN-серверов.
    3. Нажмите кнопку Создать.

  4. Включите для ресурса кеширование на CDN-серверах:

    1. Выберите созданный CDN-ресурс (в списке ресурсов будет указано его основное доменное имя — cdn.ycprojektblue.example).
    2. Перейдите на вкладку Кеширование.
    3. Нажмите кнопку Редактировать.
    4. Включите Кеширование в CDN.
    5. Нажмите кнопку Сохранить.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Если CDN-провайдер ещё не активирован, выполните команду:

    yc cdn provider activate --folder-id <идентификатор каталога> --type gcore
    
  2. Создайте CDN-ресурс:

    yc cdn resource create \
      --cname cdn.ycprojectblue.example \
      --origin-bucket-source ycprojektblue-storage.storage.yandexcloud.net \
      --origin-bucket-name ycprojektblue-storage \
      --origin-protocol https \
      --lets-encrypt-gcore-ssl-cert \
      --host-header ycprojektblue-storage.storage.yandexcloud.net \
      --redirect-http-to-https
    

    Результат:

    id: bc8e3l7s4dhadigoh3jr
    folder_id: b1g86q4m5vej8lkljme5
    cname: cdn.ycprojektblue.example
    ...
    active: true
    ...
    

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

  1. Добавьте в конфигурационный файл параметры CDN-ресурсов:

    ...
    
    resource "yandex_cdn_origin_group" "my_group" {
      name     = "updates-origin-group"
      use_next = true
      origin {
        source = "ycprojektblue-storage.storage.yandexcloud.net"
      }
    }
    
    resource "yandex_cdn_resource" "my_resource" {
      cname               = "cdn.ycprojectblue.example"
      active              = true
      origin_protocol     = "https"
      origin_group_id     = yandex_cdn_origin_group.my_group.id
      options {
        redirect_https_to_http = true
        custom_host_header     = "ycprojektblue-storage.storage.yandexcloud.net"
      }
      ssl_certificate {
        type = "lets_encrypt_gcore"
      }
    }
    

    Подробнее см. в описаниях ресурсов yandex_cdn_origin_group и yandex_cdn_resource в документации провайдера Terraform.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в папку, где вы создали конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Примените изменения конфигурации:

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

      terraform apply
      
    2. Подтвердите создание ресурсов: введите в терминал слово yes и нажмите Enter.

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

Используйте вызов gRPC API ResourceService/Create или метод REST API create. Чтобы включить кеширование на CDN-серверах, добавьте в тело запроса поле edge_cache_settings.

Настройте DNS для своего домена

  1. Получите доменное имя в домене .edgecdn.ru, сгенерированное для созданного CDN-ресурса:

    Консоль управления
    1. В консоли управления выберите сервис Cloud CDN.
    2. Выберите созданный CDN-ресурс (в списке ресурсов будет указано его основное доменное имя — cdn.ycprojektblue.example).
    3. На вкладке Обзор в разделе Настройки DNS скопируйте в буфер обмена сгенерированное сервисом имя в домене .edgecdn.ru.
  2. Перейдите в настройки DNS вашего домена на сайте компании, которая предоставляет вам услуги DNS-хостинга.

  3. Измените CNAME-запись для cdn таким образом, чтобы она указывала на скопированный ранее адрес в домене .edgecdn.ru, например:

    cdn CNAME cl-.....6bb.edgecdn.ru.
    

    Если вы пользуетесь Cloud DNS, настройте запись по следующей инструкции:

    Инструкция по настройке DNS-записей для Cloud DNS
    Консоль управления
    CLI
    API
    1. В консоли управления выберите сервис Cloud DNS.

    2. Если у вас нет публичной зоны DNS, создайте ее:

      1. Нажмите кнопку Создать зону.
      2. Укажите Имя зоны: cdn-dns-a.
      3. В поле Зона укажите ваш домен с точкой в конце: ycprojektblue.example.
      4. Выберите Тип зоны — Публичная.
      5. Нажмите кнопку Создать.
    3. Создайте запись в зоне:

      1. В списке зон нажмите на зону cdn-dns-a.
      2. Нажмите кнопку Создать запись.
      3. В поле Имя укажите cdn, чтобы запись соответствовала доменному имени cdn.ycprojektblue.example.
      4. Выберите Тип записи — CNAME.
      5. В поле Значение вставьте скопированный адрес в домене .edgecdn.ru с точкой на конце.
      6. Нажмите кнопку Создать.
    1. Если у вас нет публичной зоны DNS, создайте ее:

      yc dns zone create --name cdn-dns-a --zone ycprojektblue.example. --public-visibility
      

      Где:

      • --name — имя зоны.
      • --zone — доменная зона — ваш домен с точкой на конце.
      • --public-visibility — опция публичной видимости зоны.

      Результат:

      id: aetuvdw77q61dwbl1z2d
      folder_id: aoewzf73jwdlm1xtp4dd
      created_at: "2021-09-28T10:33:31.917Z"
      name: cdn-zone-a
      zone: ycprojektblue.example.
      public_visibility: {}
      
    2. Создайте запись в зоне:

      yc dns zone add-records --name cdn-dns-a --record "cdn CNAME cl-.....6bb.edgecdn.ru."
      

      Где:

      • --name — имя зоны.
      • --record — ресурсная запись.
    3. Проверьте, что запись создана:

      yc dns zone list-records --name cdn-dns-a
      

      Результат:

      +----------------------------+------+-------+--------------------------------+
      |            NAME            | TTL  | TYPE  |              DATA              |
      +----------------------------+------+-------+--------------------------------+
      | ycprojektblue.example.     | 3600 | NS    | ns1.yandexcloud.net.           |
      |                            |      |       | ns2.yandexcloud.net.           |
      | ycprojektblue.example.     | 3600 | SOA   | ns1.yandexcloud.net.           |
      |                            |      |       | mx.cloud.yandex.net. 1 10800   |
      |                            |      |       | 900 604800 86400               |
      | cdn.ycprojektblue.example. |  600 | CNAME | cl-.....6bb.edgecdn.ru.           |
      +----------------------------+------+-------+--------------------------------+
      

      В списке должна быть запись с именем cdn.ycprojektblue.example.

    1. Если у вас нет публичной зоны DNS, создайте ее с помощью вызова gRPC API DnsZoneService/Create или метода REST API create. Чтобы сделать зону публичной, добавьте в тело запроса поле public_visibility (gRPC) или publicVisibility (REST).
    2. Создайте в зоне запись cdn CNAME cl-.....6bb.edgecdn.ru. с помощью вызова gRPC API DnsZoneService/UpdateRecordSets или метода REST API updateRecordSets.

Предзагрузите контент в кеш CDN-серверов

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

  2. Выберите созданный CDN-ресурс (в списке ресурсов будет указано его основное доменное имя — cdn.ycprojektblue.example).

  3. Перейдите на вкладку Контент.

  4. Нажмите кнопку Предзагрузить контент.

  5. В поле Пути к файлам укажите путь к файлу, хранящемуся в источнике, без доменного имени:

    /ycgame-update-v1.1.exe
    
  6. Нажмите кнопку Предзагрузить контент.

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Укажите путь к файлу, который нужно предзагрузить:

yc cdn cache prefetch --resource-id <идентификатор ресурса> \
  --path /ycgame-update-v1.1.exe

Подробнее о команде yc cdn cache prefetch см. в справочнике CLI.

Используйте вызов gRPC API CacheService/Prefetch или метод REST API prefetch.

Проверьте работу CDN

  1. Дождитесь обновления DNS-записей (на это может потребоваться несколько часов) и предзагрузки файла на CDN-серверы.

  2. Скачайте файл по новому URL:

    https://cdn.ycprojektblue.example/ycgame-update-v1.1.exe
    
  3. Получите логи запросов к бакету ycprojektblue-storage:

    Консоль управления
    AWS CLI
    API
    1. В консоли управления выберите сервис Object Storage.
    2. Выберите бакет ycprojektblue-logs.
    3. Нажмите на имя объекта, соответствующего времени скачивания файла ycgame-update-v1.1.exe.
    4. Нажмите кнопку Скачать.
    1. Получите список объектов с логами:

      aws --endpoint-url=https://storage.yandexcloud.net \
        s3 ls s3://ycprojektblue-logs
      

      Результат:

      2021-10-01 08:37:53         10 2021-10-01-08-37-53-631E0FC3B732AEDD
      2021-10-01 09:38:05         62 2021-10-01-09-38-05-436E6CDC832A20EF
      2021-10-01 10:38:01         23 2021-10-01-10-38-01-7F65EF1A6366FB18
      2021-10-01 11:37:57         41 2021-10-01-11-37-57-6F31613427A7DB9A
      2021-10-01 12:38:02         58 2021-10-01-12-38-02-AB893E6148AFDC55
      2021-10-01 13:38:02         73 2021-10-01-13-38-02-E69EAEC1C9083756
      
    2. Найдите в полученном списке объект с логом, сохраненным после скачивания файла ycgame-update-v1.1.exe, и скачайте его:

      aws --endpoint-url=https://storage.yandexcloud.net \
        s3 cp s3://ycprojektblue-logs/2021-10-01-13-38-02-E69EAEC1C9083756 \
        2021-10-01-13-38-02-E69EAEC1C9083756
      

      Результат:

      download: s3://ycprojektblue-logs/2021-10-01-13-38-02-E69EAEC1C9083756 to 2021-10-01-13-38-02-E69EAEC1C9083756 
      
    1. Получите список объектов с логами в бакете ycprojektblue-logs с помощью метода API listObjects.

    2. Найдите в полученном списке объект с логом, сохраненным после скачивания файла ycgame-update-v1.1.exe, и скачайте его с помощью метода API get.

  4. По логам запросов к бакету-источнику убедитесь, что CDN-серверы не скачивали файл из источника после вашего запроса. Подробнее о содержимом логов см. в разделе Формат объекта с логами документации Object Storage.

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

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

  1. Отключите созданный ресурс.
  2. Удалите объект ycgame-update-v1.1.exe из бакета ycprojektblue-storage.
  3. Удалите бакет ycprojektblue-storage.
  4. Удалите все объекты из бакета ycprojektblue-logs.
  5. Удалите бакет ycprojektblue-logs.
  6. Удалите зону DNS, если вы пользовались ей при настройке DNS.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте бакеты в Object Storage
  • Включите логирование бакета с файлами
  • Загрузите файл в бакет
  • Создайте CDN-ресурс и включите кеширование
  • Настройте DNS для своего домена
  • Предзагрузите контент в кеш CDN-серверов
  • Проверьте работу CDN
  • Как удалить созданные ресурсы