Создание ресурса
Чтобы создать ресурс:
-
В консоли управления
выберите каталог, в котором нужно создать ресурс. -
Перейдите в сервис Cloud CDN.
-
Нажмите кнопку Создать ресурс.
-
Задайте основные настройки CDN-ресурса:
Совет
Чтобы настроить параметры CDN-ресурса, вы можете использовать конфигурацию другого CDN-ресурса. Для этого в поле Копирование конфигурации выберите существующий CDN-ресурс. Учтите следующие особенности:
- Параметр Доменное имя можно перенести из CDN-ресурса одного провайдера CDN в другой. Имя должно быть уникальным в рамках ресурсов одного провайдера.
- Если копирование параметров осуществляется между ресурсами разных провайдеров, то в процессе будет создана копия группы источников в провайдере создаваемого ресурса.
- Если для исходного ресурса был загружен TLS-сертификат, он будет переисиспользован в новом ресурсе. Повторная загрузка не требуется.
-
В блоке Контент:
-
Включите или отключите Доступ к контенту.
-
В поле Запрос контента выберите
Из одного источникаилиИз группы источников:- При запросе контента
Из одного источникавыберите Тип источника:Сервер,БакетилиL7-балансировщики укажите источник. - При запросе контента
Из группы источниковвыберите группу источников или создайте новую:- Нажмите кнопку Создать.
- Введите Название группы.
- Настройте Источники:
- Укажите Тип источника:
Сервер,БакетилиL7-балансировщик. - Укажите источник.
- Выберите Приоритет:
ОсновнойилиРезервный.
- Укажите Тип источника:
- Добавьте другие источники, если необходимо.
- Нажмите кнопку Создать. В поле Группа источников вы увидите название созданной группы источников.
Примечание
Если CDN-ресурс относится к одному провайдеру CDN, а выбранная существующая группа источников — к другому, будет создан дубликат группы источников под провайдер CDN-ресурса.
Подробнее см. в разделе Источники и их группы.
- При запросе контента
-
В поле Протокол для источников выберите протокол для источников.
-
В поле Доменное имя укажите основное доменное имя, которое будете использовать в ссылках с сайта на контент, размещенный в CDN. Например:
cdn.example.com.Вы можете добавить более одного Доменного имени. Поддерживаются имена с символами не из ASCII
, например, кириллическими, и Punycode . Первое имя считается основным.Внимание
Основное доменное имя для раздачи контента невозможно изменить после создания CDN-ресурса.
-
(опционально) Добавьте метки:
- Нажмите кнопку Добавить метку.
- Введите метку в формате
ключ: значение. - Нажмите Enter.
-
-
В блоке Дополнительно:
-
В поле Переадресация клиентов выберите
Не использоватьилиС HTTPS на HTTP.Чтобы включить переадресацию клиентов с HTTP на HTTPS, создайте CDN-ресурс без переадресации и получите TLS-сертификат для доменного имени. Затем в настройках CDN-ресурса выберите переадресацию клиентов
С HTTP на HTTPS. -
В поле Тип сертификата выберите одну из опций:
Не использовать— ресурс будет доступен только по протоколу HTTP.Сертификат из Certificate Manager— выберите сертификат. Ресурс будет доступен по протоколам HTTP и HTTPS.
Поддерживаются сертификаты из Yandex Certificate Manager. Вы можете выпустить новый сертификат Let's Encrypt® или загрузить собственный.
Сертификат должен находиться в том же каталоге, в котором расположен ваш CDN-ресурс.
-
В поле Заголовок Host выберите значение:
Основное доменное имя,Как у клиентаили выберитеСвое значениеи введите Значение заголовка.Подробнее о заголовке Host в запросах CDN-серверов к источникам
-
(опционально) Чтобы включить перенаправление запросов на CDN-ресурсе:
-
Включите опцию Перенаправление запросов.
-
В поле Правило Rewrite задайте правило. Например:
/(.*) /new-folder/$1.Правило Rewrite должно содержать две разделенные пробелом директивы: исходный путь, который требуется заменить, и измененный путь — то, на что меняется исходный путь.
В правиле вы можете использовать регулярные выражения.
Подробнее см. в разделе Правило Rewrite.
-
В поле Флаг задайте нужный флаг:
break— завершает обработку текущего набора директив.last— завершает обработку текущего набора директив и начинает поиск нового CDN-сервера, соответствующего новому URI.redirect— возвращает пользователю временныйredirectс кодом302. Флаг используется, если заменяющая строка не начинается сhttp://,https://или$scheme.permanent— возвращает пользователю постоянныйredirectс кодом301.
-
-
(опционально) Чтобы ограничить доступ к контенту ресурса с помощью защищенных токенов, включите опцию Доступ по защищённому токену:
-
Укажите Секретный ключ — произвольную строку длиной от 6 до 32 символов. Секретный ключ потребуется для генерации подписанных ссылок.
Сохраненный секретный ключ вы всегда сможете посмотреть в консоли управления или с помощью команды CLI
yc cdn resource list. -
В поле Ограничение доступа по IP-адресу задайте ограничение на доступ к контенту по IP-адресу:
Только доверенные IP-адреса— доступ к файлам будет разрешен только с определенного IP-адреса получателя контента. IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании MD5 -хэша для подписанной ссылки.Без ограничений— доступ к файлам будет разрешен с любых IP-адресов.
-
-
(Опционально) Чтобы ограничить доступ к контенту ресурса с помощью политики доступа по IP-адресам, включите опцию Доступ по IP-адресам:
-
Выберите тип политики доступа:
Запретить для всех, кроме— разрешающая политика. Доступ к контенту ресурса будет разрешен для любых IP-адресов, кроме адресов, заданных ниже.Разрешить для всех, кроме— блокирующая политика. Доступ к контенту ресурса будет запрещен для любых IP-адресов, кроме адресов, заданных ниже.
-
В поле Список IP-адресов укажите список IP-адресов, исключенных из заданной выше политики доступа.
IP-адреса должны быть указаны с префиксом подсети в нотации CIDR
через запятую. Например:192.168.3.2/32, 192.168.17.0/24.
-
-
(опционально) Чтобы задать провайдера CDN, включите опцию Выбрать провайдера и укажите предпочитаемый вариант.
По умолчанию выбран провайдер
Yandex Cloud CDN.Важно
При создании каждого CDN-ресурса и каждой группы источников за ними закрепляется конкретный провайдер. Изменить закрепленного провайдера нельзя.
-
-
Нажмите Продолжить.
-
(опционально) В разделе Кеширование:
Совет
При необходимости вы сможете настроить эти параметры позднее.
-
В блоке CDN:
- Включите опцию Кеширование в CDN.
- Выберите тип настроек:
Как у источникаилиСвои настройки. - Выберите время жизни кеша из списка.
- (Опционально) Для типа настроек
Свои настройкизадайте время жизни кеша для нужных HTTP-кодов ответа.
-
В блоке Браузер:
- Включите опцию Кеширование в браузере.
- Выберите время жизни кеша из списка.
-
В блоке Дополнительно:
- Выберите опцию игнорирования Cookie.
- Выберите опцию игнорирования Query-параметров.
-
Чтобы контент отправлялся клиентам с CDN-серверов в сжатом виде, выберите опцию gzip-сжатие.
Контент будет отправляться в формате gzip и с HTTP-заголовком
Content-Encoding. Из источников будет запрашиваться только несжатый контент. -
Чтобы файлы объемом больше 10 МБ запрашивались и кешировались по частям, каждая размером не больше 10 МБ, выберите опцию Сегментация больших файлов.
Чтобы сегментация работала, источники контента должны поддерживать частичные GET-запросы с заголовком
Range.
-
-
Нажмите Продолжить.
-
В разделе HTTP-заголовки и методы:
Совет
При необходимости вы сможете настроить эти параметры позднее.
-
В блоке Заголовки запроса к источнику:
- В поле Заголовок нажмите Добавить.
- Введите имена и значения нужных заголовков.
-
В блоке Заголовки ответа клиенту:
- В поле Заголовок нажмите Добавить.
- Введите имена и значения нужных заголовков.
-
В блоке CORS при ответе клиенту:
- В поле Заголовок Access-Control-Allow-Origin укажите, нужно ли добавлять этот заголовок к ответам.
- При добавлении заголовка выберите, при каких значениях заголовка
Originразрешен доступ к контенту. Чтобы разрешить доступ только определенным источникам, выберитеКак в Origin, если входит в список, укажите доменные имена источников и нажмите кнопку Добавить доменное имя.
-
В блоке Методы запросов от клиентов выберите Разрешенные методы из выпадающего списка.
-
-
Нажмите Создать и продолжить.
-
(опционально) В разделе Дополнительно:
Совет
При необходимости вы сможете настроить эти параметры позднее.
-
В блоке Настройки выгрузки логов включите выгрузку.
-
В блоке Настройки экранирования источников включите экранирование и в поле Локация выберите необходимую локацию.
-
-
Нажмите Продолжить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для создания ресурсов:
yc cdn resource create --help -
Получите список групп источников в каталоге:
yc cdn origin-group list --format yamlРезультат:
- id: "90209" folder_id: s0mefo1der7p******** name: test-group-1 use_next: true origins: - id: "561547" origin_group_id: "90209" source: www.example2.com enabled: true backup: true - id: "561546" origin_group_id: "90209" source: www.example1.com enabled: true - id: "90208" folder_id: b1g86q4m5ve******** name: test-group use_next: true origins: - id: "561545" origin_group_id: "90208" source: www.a2.com enabled: true backup: true - id: "561544" origin_group_id: "90208" source: www.a1.com enabled: true -
Создайте ресурс:
yc cdn resource create <доменное_имя_ресурса> \ --origin-group-id <идентификатор_группы_источников> \ --origin-protocol <протокол_для_источников>- Вместо группы источников
--origin-group-idможно указать доменное имя источника, используя параметр--origin-custom-source. - Для
--origin-protocolдоступны значенияHTTP,HTTPSиMATCH(как у клиента).
Чтобы настроить TLS-сертификат для CDN-ресурса, используйте параметры:
-
--dont-use-ssl-cert— не использовать сертификат. Ресурс будет доступен только по протоколу HTTP. -
--cert-manager-ssl-cert-id— идентификатор сертификата. Ресурс будет доступен по протоколам HTTP и HTTPS.Поддерживаются сертификаты из Yandex Certificate Manager. Вы можете выпустить новый сертификат Let's Encrypt® или загрузить собственный.
Сертификат должен находиться в том же каталоге, в котором расположен ваш CDN-ресурс.
Чтобы включить перенаправление запросов на CDN-ресурсе, используйте параметры:
-
--rewrite-body– правило Rewrite. Например:--rewrite-body '/(.*) /new-folder/$1'.Правило Rewrite должно содержать две разделенные пробелом директивы: исходный путь, который требуется заменить, и измененный путь — то, на что меняется исходный путь.
В правиле вы можете использовать регулярные выражения.
Подробнее см. в разделе Правило Rewrite.
-
--rewrite-flag– флаг. Возможные значения:break— завершает обработку текущего набора директив.last— завершает обработку текущего набора директив и начинает поиск нового CDN-сервера, соответствующего новому URI.redirect— возвращает пользователю временныйredirectс кодом302. Флаг используется, если заменяющая строка не начинается сhttp://,https://или$scheme.permanent— возвращает пользователю постоянныйredirectс кодом301.
-
Чтобы добавить метки, используйте параметр
--add-labels. Например:--add-labels key1=value1.
Если вы хотите ограничить доступ к контенту ресурса с помощью защищенных токенов используйте параметры:
--secure-key— секретный ключ — произвольная строка длиной от 6 до 32 символов.--enable-ip-url-signing— (опционально) параметр, который включает ограничение доступа к CDN-ресурсу по IP-адресу. Сам доверенный IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании MD5 -хэша для подписанной ссылки. Если параметр не задан, доступ к файлам будет разрешен с любых IP-адресов.
См. также Настройка доступа по защищенному токену.
Если вы хотите ограничить доступ к контенту ресурса с помощью политики доступа по IP-адресам, используйте параметры:
-
--acl-excepted-values— IP-адрес, для которого будет разрешен или запрещен доступ к контенту. Для адреса укажите префикс подсети в нотации CIDR , например:192.168.3.2/32или2a03:d000:2980:7::8/128.В параметре
--acl-excepted-valuesможно передать только один IP-адрес. Чтобы передать больше адресов, задайте параметр--acl-excepted-valuesнесколько раз. -
--policy-type— тип политики. Возможные значения:allow— разрешающая политика. Доступ к контенту ресурса будет разрешен для любых IP-адресов, кроме адресов, заданных в параметре--acl-excepted-values.deny— блокирующая политика. Доступ к контенту ресурса будет запрещен для любых IP-адресов, кроме адресов, заданных в параметре--acl-excepted-values.
Подробнее о команде
yc cdn resource createсм. в справочнике CLI. - Вместо группы источников
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры создаваемого CDN-ресурса:
resource "yandex_cdn_resource" "my_resource" { cname = "<имя_домена>" active = true origin_protocol = "https" origin_group_id = <идентификатор_группы_источников> secondary_hostnames = ["<дополнительное_доменное_имя_1>", "дополнительное_доменное_имя_2"] provider_type = "<CDN-провайдер>" ssl_certificate { type = "certificate_manager" certificate_manager_id = "<идентификатор_сертификата>" } options { redirect_http_to_https = true secure_key = "<секретный_ключ>" enable_ip_url_signing = true ip_address_acl { excepted_values = ["<IP-адрес_1>", "<IP-адрес_2>", ..., "<IP-адрес_n>"] policy_type = "<тип_политики>" } } }Где:
-
cname— основное доменное имя для раздачи контента. Обязательный параметр. -
active— флаг, указывающий на доступ к контенту для конечных пользователей:true— контент из CDN доступен клиентам,false— доступ к контенту отключен. Значение по умолчанию:true. Необязательный параметр. -
origin_protocol— протокол для источников. Значение по умолчанию:http. Необязательный параметр. -
origin_group_id— идентификатор группы источников. Обязательный параметр. Используйте идентификатор из описания группы источников в ресурсеyandex_cdn_origin_group. -
secondary_hostnames— дополнительные доменные имена. Необязательный параметр. -
provider_type— провайдер CDN, должен совпадать с провайдером CDN у группы источников. Необязательный параметр. Возможные значения:-
ourcdn(значение по умолчанию) — провайдер Yandex Cloud CDN. -
gcore— EdgeCDN-провайдер.Важно
При создании каждого CDN-ресурса и каждой группы источников за ними закрепляется конкретный провайдер. Изменить закрепленного провайдера нельзя.
-
-
ssl_certificate— параметры SSL-сертификата. Необязательный параметр. Возможные значения:-
type— тип сертификата:-
not_used— без сертификата. Значение по умолчанию. -
certificate_manager— пользовательский сертификат. Укажите идентификатор сертификата в параметреcertificate_manager_id.Поддерживаются сертификаты из Yandex Certificate Manager. Вы можете выпустить новый сертификат Let's Encrypt® или загрузить собственный.
Сертификат должен находиться в том же каталоге, в котором расположен ваш CDN-ресурс.
-
-
certificate_manager_id— идентификатор пользовательского сертификата в Certificate Manager.
-
-
options— дополнительные параметры CDN-ресурса. Необязательный параметр. Возможные значения:-
redirect_http_to_https— параметр для переадресации клиентов с HTTP на HTTPS, возможные значения:trueилиfalse. Доступно при использовании SSL-сертификата. -
secure_key— секретный ключ. Произвольная строка длиной от 6 до 32 символов. Необходим, чтобы ограничить доступ к ресурсу с помощью защищенных токенов. -
enable_ip_url_signing— опциональный параметр, который включает ограничение доступа к CDN-ресурсу по IP-адресу с помощью защищенных токенов. Сам доверенный IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании MD5 -хэша для подписанной ссылки. Если параметр не задан, доступ к файлам будет разрешен с любых IP-адресов. -
ip_address_acl— параметры политики доступа по IP-адресам:-
excepted_values— список IP-адресов, для которых будет разрешен или запрещен доступ к контенту ресурса. IP-адреса указываются через запятую. Для каждого адреса укажите префикс подсети в нотации CIDR , например:192.168.3.2/32или2a03:d000:2980:7::8/128. -
policy_type— тип политики. Возможные значения:allow— разрешающая политика. Доступ к контенту ресурса будет разрешен для любых IP-адресов, кроме адресов, заданных в параметреip_address_acl.excepted_values.deny— блокирующая политика. Доступ к контенту ресурса будет запрещен для любых IP-адресов, кроме адресов, заданных в параметреip_address_acl.excepted_values.
-
-
Более подробную информацию о параметрах
yandex_cdn_resourceв Terraform см. в документации провайдера. -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить создание CDN-ресурса можно в консоли управления
или с помощью команды CLI:yc cdn resource list -
Воспользуйтесь методом REST API create для ресурса Resource или вызовом gRPC API ResourceService/Create.
Вы можете ограничить доступ к ресурсу с помощью защищенных токенов и политики доступа по IP-адресам.
После того как CDN-ресурс был создан, узнайте доменное имя CDN-провайдера и создайте для указанного имени ресурсную запись CNAME в настройках вашего DNS-хостинга, например в Yandex Cloud DNS. Подробнее см. в разделе Доменные имена для раздачи контента.
Пример ресурсной записи:
cdn.example.com. CNAME 328938ed********.a.yccdn.cloud.yandex.net
Новый ресурс начнет корректно работать после того, как запись CNAME, которую вы создали в своем DNS-хостинге (см. раздел о доменных именах для раздачи контента), распространится по серверам DNS. На это может потребоваться несколько часов.
Примечание
Не используйте ресурсную запись ANAME с доменными именами для раздачи контента, поскольку в таком случае конечный пользователь получит ответ от CDN-сервера, не связанного с геолокацией пользователя. Ответ всегда будет одинаков для всех пользователей.
Для CDN-ресурса с провайдером EdgeCDN можно задать дополнительные настройки. Полная функциональность описана в документации API
Примеры
Создайте ресурс с протоколом HTTP:
yc cdn resource create testexample.com \
--origin-group-id 90209 \
--origin-protocol HTTP
Результат:
id: s0me1dkfjq********
...
cname: testexample.com
active: true
...
origin_group_id: "90209"
origin_group_name: test-group-1
origin_protocol: HTTP
ssl_certificate:
type: DONT_USE
status: READY