[Документация Yandex Cloud](../../../index.md) > [Yandex Cloud CDN](../../index.md) > [Пошаговые инструкции](../index.md) > Ресурсы > Создать ресурс

# Создание ресурса

Чтобы создать [ресурс](../../concepts/resource.md):

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите [каталог](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором нужно создать ресурс.
  1. [Перейдите](https://kz.console.yandex.cloud/link/cdn) в сервис **Cloud CDN**.
  1. Нажмите кнопку **Создать ресурс**.
  1. Задайте основные настройки CDN-ресурса:

      {% note tip %}

      Чтобы настроить параметры CDN-ресурса, вы можете использовать конфигурацию другого CDN-ресурса. Для этого в поле **Копирование конфигурации** выберите существующий CDN-ресурс. Учтите следующие особенности:
      * Доменное имя уникально в рамках одного ресурса, создать еще один ресурс с этим же доменным именем не получится. Копирование конфигурации происходит без наследования доменного имени.
      * Копирование параметров CDN-ресурсов возможно только внутри [каталога](../../../resource-manager/concepts/resources-hierarchy.md#folder).
      * Если в существующем ресурсе блок **Разрешенные методы** содержит методы `POST`, `PUT`, `PATCH`, `DELETE`, они будут недоступны для пользователей нового ресурса. Чтобы узнать о возможности использования этих методов, обратитесь в [техническую поддержку](https://kz.center.yandex.cloud/support). При запросе опишите сценарий использования.
      * Если для исходного ресурса был загружен TLS-сертификат, он будет переиспользован в новом ресурсе. Повторная загрузка не требуется.

      {% endnote %}

      * В блоке **Контент**:
        * Включите или отключите **Доступ к контенту**.
        * В поле **Запрос контента** выберите `Из одного источника` или `Из группы источников`:
          * При запросе контента `Из одного источника` выберите **Тип источника**: `Сервер`, `Бакет` или `L7-балансировщик` и укажите [источник](../../concepts/origins.md).
          * При запросе контента `Из группы источников` выберите [группу источников](../../concepts/origins.md#groups) или создайте новую:
            1. Нажмите кнопку **Создать**.
            1. Введите **Название группы**.
            1. Настройте **Источники**:
                * Укажите **Тип источника**: `Сервер`, `Бакет` или `L7-балансировщик`.
                * Укажите источник.
                * Выберите **Приоритет**: `Основной` или `Резервный`.
            1. Добавьте другие источники, если необходимо.
            1. Нажмите кнопку **Создать**. В поле **Группа источников** вы увидите название созданной группы источников.

          Подробнее в разделе [Источники и их группы](../../concepts/origins.md).
        * В поле **Протокол для источников** выберите протокол для источников.
        * В поле **Доменное имя** укажите основное доменное имя, которое будете использовать в ссылках с сайта на контент, размещенный в CDN. Например: `cdn.example.com`.

          Вы можете добавить более одного **Доменного имени**. Поддерживаются имена с символами не из [ASCII](https://ru.wikipedia.org/wiki/ASCII), например, кириллическими, и [Punycode](https://ru.wikipedia.org/wiki/Punycode). Первое имя считается основным.

          {% note alert %}

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

          {% endnote %}

        * (опционально) Добавьте [метки](../../concepts/labels.md):
          1. Нажмите кнопку **Добавить метку**.
          1. Введите метку в формате `ключ: значение`.
          1. Нажмите **Enter**.

      * В блоке **Дополнительно**:
        * В поле **Переадресация клиентов** выберите `Не использовать` или `С HTTPS на HTTP`.

          Чтобы включить переадресацию клиентов с HTTP на HTTPS, создайте CDN-ресурс без переадресации и получите [TLS-сертификат](../../concepts/clients-to-servers-tls.md) для доменного имени. Затем в настройках CDN-ресурса [выберите](configure-basics.md) переадресацию клиентов `С HTTP на HTTPS`.
        * В поле **Тип сертификата** выберите одну из опций:
          * `Не использовать` — ресурс будет доступен только по протоколу HTTP.
          * `Сертификат из Certificate Manager` — выберите сертификат. Ресурс будет доступен по протоколам HTTP и HTTPS.

          Поддерживаются сертификаты из [Yandex Certificate Manager](../../../certificate-manager/index.md). Вы можете [выпустить новый сертификат Let's Encrypt®](../../../certificate-manager/operations/managed/cert-create.md) или [загрузить собственный](../../../certificate-manager/operations/import/cert-create.md).
          
          Сертификат должен находиться в том же [каталоге](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором расположен ваш CDN-ресурс.

          [Подробнее о настройке TLS-сертификатов для HTTPS-соединений](../../concepts/clients-to-servers-tls.md)
        * В поле **Заголовок Host** выберите значение: `Основное доменное имя`, `Как у клиента` или выберите `Свое значение` и введите **Значение заголовка**. 
      
          [Подробнее о заголовке Host в запросах CDN-серверов к источникам](../../concepts/servers-to-origins-host.md)
        * (опционально) Чтобы включить [перенаправление запросов](../../concepts/http-rewrite.md) на CDN-ресурсе:
          1. Включите опцию **Перенаправление запросов**.
          1. В поле **Правило Rewrite** задайте правило. Например: `/(.*) /new-folder/$1`.

              Правило Rewrite должно содержать две разделенные пробелом директивы: исходный путь, который требуется заменить, и измененный путь — то, на что меняется исходный путь.
              
              В правиле вы можете использовать регулярные выражения. 
              
              Подробнее в разделе [Правило Rewrite](../../concepts/http-rewrite.md#rewrite-rule).

          1. В поле **Флаг** задайте нужный [флаг](../../concepts/http-rewrite.md#flag):

              * `break` — завершает обработку текущего набора директив.
              * `last` — завершает обработку текущего набора директив и начинает поиск нового CDN-сервера, соответствующего новому URI.
              * `redirect` — возвращает пользователю временный `redirect` с кодом `302`. Флаг используется, если заменяющая строка не начинается с `http://`, `https://` или `$scheme`.
              * `permanent` — возвращает пользователю постоянный `redirect` с кодом `301`.

        * (опционально) Чтобы ограничить доступ к контенту ресурса с помощью [защищенных токенов](../../concepts/secure-tokens.md), включите опцию **Доступ по защищённому токену**:

          * Укажите **Секретный ключ** — произвольную строку длиной от 6 до 32 символов. Секретный ключ потребуется для генерации [подписанных ссылок](../../concepts/secure-tokens.md#protected-link).
          
              Сохраненный секретный ключ вы всегда сможете посмотреть в консоли управления или с помощью команды [CLI](../../../cli/index.md) `yc cdn resource list`.
          * В поле **Ограничение доступа по IP-адресу** задайте ограничение на доступ к контенту по IP-адресу:
          
             * `Только доверенные IP-адреса` — доступ к файлам будет разрешен только с определенного IP-адреса получателя контента. IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании [MD5](https://ru.wikipedia.org/wiki/MD5)-хэша для подписанной ссылки.
             * `Без ограничений` — доступ к файлам будет разрешен с любых IP-адресов.

          [Подробнее о доступе по защищенному токену](enable-secure-token.md)

        * (Опционально) Чтобы ограничить доступ к контенту ресурса с помощью [политики доступа по IP-адресам](../../concepts/ip-address-acl.md), включите опцию **Доступ по IP-адресам**:
          
          * Выберите тип политики доступа:
          
              * `Запретить для всех, кроме` — разрешающая политика. Доступ к контенту ресурса будет разрешен для любых IP-адресов, кроме адресов, заданных ниже.
              * `Разрешить для всех, кроме` — блокирующая политика. Доступ к контенту ресурса будет запрещен для любых IP-адресов, кроме адресов, заданных ниже.
          
          * В поле **Список IP-адресов** укажите список IP-адресов, [исключенных](../../concepts/ip-address-acl.md#ip-list) из заданной выше политики доступа.
          
              IP-адреса должны быть указаны с префиксом подсети в [нотации CIDR](https://ru.wikipedia.org/wiki/Бесклассовая_адресация) через запятую. Например: `192.168.3.2/32, 192.168.17.0/24`.

  1. Нажмите **Продолжить**.
  1. (опционально) В разделе **Кеширование**:

      {% note tip %}
      
      При необходимости вы сможете настроить эти параметры позднее.
      
      {% endnote %}

      * В блоке **CDN**:
        * Включите опцию **Кеширование в CDN**.
        * Выберите тип настроек: `Как у источника` или `Свои настройки`.
        * Выберите время жизни кеша из списка.
        * (Опционально) Для типа настроек `Свои настройки` задайте время жизни кеша для нужных HTTP-кодов ответа.
      * В блоке **Браузер**:
        * Включите опцию **Кеширование в браузере**.
        * Выберите время жизни кеша из списка.
      * В блоке **Дополнительно**:
        * Выберите опцию игнорирования Cookie.
        * Выберите опцию игнорирования Query-параметров.
      * Чтобы контент отправлялся клиентам с CDN-серверов в сжатом виде, выберите опцию **gzip-сжатие**.

        Контент будет отправляться в формате gzip и с HTTP-заголовком `Content-Encoding`. Из источников будет запрашиваться только несжатый контент.

        [Подробнее о сжатии файлов](enable-compression.md)

      * Чтобы файлы объемом больше 10 МБ запрашивались и кешировались по частям, каждая размером не больше 10 МБ, выберите опцию **Сегментация больших файлов**.

        Чтобы сегментация работала, источники контента должны поддерживать частичные GET-запросы с заголовком `Range`.

        [Подробнее о сегментации](enable-segmentation.md)

      [Подробнее о кешировании](configure-caching.md)

  1. Нажмите **Продолжить**.
  1. В разделе **HTTP-заголовки и методы**:

      {% note tip %}
      
      При необходимости вы сможете настроить эти параметры позднее.
      
      {% endnote %}

      * В блоке **Заголовки запроса к источнику**:
        * В поле **Заголовок** нажмите **Добавить**.
        * Введите имена и значения нужных заголовков.
      * В блоке **Заголовки ответа клиенту**:
        * В поле **Заголовок** нажмите **Добавить**.
        * Введите имена и значения нужных заголовков.

        [Подробнее о настройке HTTP-заголовков запросов и ответов](configure-headers.md)
      * В блоке **CORS при ответе клиенту**:
        * В поле **Заголовок Access-Control-Allow-Origin** укажите, нужно ли добавлять этот заголовок к ответам.
        * При добавлении заголовка выберите, при каких значениях заголовка `Origin` разрешен доступ к контенту. Чтобы разрешить доступ только определенным источникам, выберите `Как в Origin, если входит в список`, укажите доменные имена источников и нажмите кнопку **Добавить доменное имя**.

        [Подробнее о настройке CORS при ответах клиентам](configure-cors.md)

      * В блоке **Методы запросов от клиентов** выберите **Разрешенные методы** из выпадающего списка.

        {% note info %}

        По умолчанию методы `POST`, `PUT`, `PATCH`, `DELETE` недоступны в запросах клиентов. Чтобы узнать о возможности использования этих методов, обратитесь в [техническую поддержку](https://kz.center.yandex.cloud/support). При запросе опишите сценарий использования.

        {% endnote %}

        [Подробнее о настройке HTTP-методов](configure-http.md)

      * В блоке **Настройки ответа** настройте HTTP-ответ, если необходимо.

          [Подробнее о настройке HTTP-ответа](configure-response.md).

  1. Нажмите **Создать и продолжить**.
  1. (опционально) В разделе **Дополнительно**:

      {% note tip %}
      
      При необходимости вы сможете настроить эти параметры позднее.
      
      {% endnote %}

      * В блоке **Настройки выгрузки логов** включите выгрузку.

        [Подробнее о выгрузке логов](configure-logs.md)
      * В блоке **Настройки экранирования источников** включите экранирование и в поле **Локация** выберите необходимую локацию.

        [Подробнее об экранировании](enable-shielding.md)
  1. Нажмите **Продолжить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды [CLI](../../../cli/index.md) для создания ресурсов:

     ```bash
     yc cdn resource create --help
     ```

  1. Получите список [групп источников](../../concepts/origins.md#groups) в [каталоге](../../../resource-manager/concepts/resources-hierarchy.md#folder):

     ```bash
     yc cdn origin-group list --format yaml
     ```

     Результат:

     ```text
     - 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
       ```

  1. Создайте ресурс:

     ```bash
     yc cdn resource create <доменное_имя_ресурса> \
       --origin-group-id <идентификатор_группы_источников> \
       --origin-protocol <протокол_для_источников>
     ```

     * Вместо группы источников `--origin-group-id` можно указать доменное имя [источника](../../concepts/origins.md), используя параметр `--origin-custom-source`.
     * Для `--origin-protocol` доступны значения `HTTP`, `HTTPS` и `MATCH` (как у клиента).

     Чтобы настроить [TLS-сертификат](../../concepts/clients-to-servers-tls.md) для CDN-ресурса, используйте параметры:
     
     * `--dont-use-ssl-cert` — не использовать сертификат. Ресурс будет доступен только по протоколу HTTP.
     * `--cert-manager-ssl-cert-id` — идентификатор сертификата. Ресурс будет доступен по протоколам HTTP и HTTPS.
     
       Поддерживаются сертификаты из [Yandex Certificate Manager](../../../certificate-manager/index.md). Вы можете [выпустить новый сертификат Let's Encrypt®](../../../certificate-manager/operations/managed/cert-create.md) или [загрузить собственный](../../../certificate-manager/operations/import/cert-create.md).
       
       Сертификат должен находиться в том же [каталоге](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором расположен ваш CDN-ресурс.

     Чтобы включить [перенаправление запросов](../../concepts/http-rewrite.md) на CDN-ресурсе, используйте параметры:

     * `--rewrite-body` – правило Rewrite. Например: `--rewrite-body '/(.*) /new-folder/$1'`.

         Правило Rewrite должно содержать две разделенные пробелом директивы: исходный путь, который требуется заменить, и измененный путь — то, на что меняется исходный путь.
         
         В правиле вы можете использовать регулярные выражения. 
         
         Подробнее в разделе [Правило Rewrite](../../concepts/http-rewrite.md#rewrite-rule).

     * `--rewrite-flag` – [флаг](../../concepts/http-rewrite.md#flag). Возможные значения:

         * `break` — завершает обработку текущего набора директив.
         * `last` — завершает обработку текущего набора директив и начинает поиск нового CDN-сервера, соответствующего новому URI.
         * `redirect` — возвращает пользователю временный `redirect` с кодом `302`. Флаг используется, если заменяющая строка не начинается с `http://`, `https://` или `$scheme`.
         * `permanent` — возвращает пользователю постоянный `redirect` с кодом `301`.

     * Чтобы добавить [метки](../../concepts/labels.md), используйте параметр `--add-labels`. Например: `--add-labels key1=value1`.

     Если вы хотите ограничить доступ к контенту ресурса с помощью [защищенных токенов](../../concepts/secure-tokens.md) используйте параметры:
     
     * `--secure-key` — секретный ключ — произвольная строка длиной от 6 до 32 символов.
     * `--enable-ip-url-signing` — (опционально) параметр, который включает ограничение доступа к CDN-ресурсу по IP-адресу. Сам доверенный IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании [MD5](https://ru.wikipedia.org/wiki/MD5)-хэша для [подписанной ссылки](../../concepts/secure-tokens.md#protected-link). Если параметр не задан, доступ к файлам будет разрешен с любых IP-адресов.
     
     Подробнее в инструкции [Настройка доступа по защищенному токену](enable-secure-token.md).
     
     Если вы хотите ограничить доступ к контенту ресурса с помощью [политики доступа по IP-адресам](../../concepts/ip-address-acl.md), используйте параметры:
     
     * `--acl-excepted-values` — IP-адрес, для которого будет разрешен или запрещен доступ к контенту. Для адреса укажите префикс подсети в [нотации CIDR](https://ru.wikipedia.org/wiki/Бесклассовая_адресация), например: `192.168.3.2/32` или `2a03:d000:2980:7::8/128`.
     
         В параметре `--acl-excepted-values` можно передать только один IP-адрес. Чтобы передать больше адресов, задайте параметр `--acl-excepted-values` несколько раз.
     
     * `--policy-type` — [тип политики](../../concepts/ip-address-acl.md#policy-type). Возможные значения:
     
         * `allow` — разрешающая политика. Доступ к контенту ресурса будет разрешен для любых IP-адресов, кроме адресов, заданных в параметре `--acl-excepted-values`.
         * `deny` — блокирующая политика. Доступ к контенту ресурса будет запрещен для любых IP-адресов, кроме адресов, заданных в параметре `--acl-excepted-values`.

     Подробнее о команде `yc cdn resource create` в [справочнике CLI](../../../cli/cli-ref/cdn/cli-ref/resource/create.md).

- Terraform {#tf}

  [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
  
  Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
  
  Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../../terraform/index.md).

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  1. Опишите в конфигурационном файле параметры создаваемого CDN-ресурса:

     ```hcl
     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` — идентификатор [группы источников](../../concepts/origins.md). Обязательный параметр. Используйте идентификатор из описания группы источников в ресурсе `yandex_cdn_origin_group`.
     * `secondary_hostnames` — дополнительные доменные имена. Необязательный параметр.
     * `provider_type` — провайдер CDN. Необязательный параметр. Единственное возможное значение: `ourcdn` — провайдер Yandex Cloud CDN.
     * `ssl_certificate` — параметры SSL-сертификата. Необязательный параметр. Возможные значения:
     
         * `type` — тип сертификата:
     
             * `not_used` — без сертификата. Значение по умолчанию.
             * `certificate_manager` — пользовательский сертификат. Укажите идентификатор сертификата в параметре `certificate_manager_id`.
     
               Поддерживаются сертификаты из [Yandex Certificate Manager](../../../certificate-manager/index.md). Вы можете [выпустить новый сертификат Let's Encrypt®](../../../certificate-manager/operations/managed/cert-create.md) или [загрузить собственный](../../../certificate-manager/operations/import/cert-create.md).
               
               Сертификат должен находиться в том же [каталоге](../../../resource-manager/concepts/resources-hierarchy.md#folder), в котором расположен ваш CDN-ресурс.
     
         * `certificate_manager_id` — идентификатор пользовательского сертификата в Certificate Manager.
     
     * `options` — дополнительные параметры CDN-ресурса. Необязательный параметр. Возможные значения:
     
         * `redirect_http_to_https` — параметр для переадресации клиентов с HTTP на HTTPS, возможные значения: `true` или `false`. Доступно при использовании SSL-сертификата.
         * `secure_key` — секретный ключ. Произвольная строка длиной от 6 до 32 символов. Необходим, чтобы ограничить доступ к ресурсу с помощью [защищенных токенов](../../concepts/secure-tokens.md).
         * `enable_ip_url_signing` — опциональный параметр, который включает ограничение доступа к CDN-ресурсу по IP-адресу с помощью [защищенных токенов](../../concepts/secure-tokens.md). Сам доверенный IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании [MD5](https://ru.wikipedia.org/wiki/MD5)-хэша для [подписанной ссылки](../../concepts/secure-tokens.md#protected-link). Если параметр не задан, доступ к файлам будет разрешен с любых IP-адресов.
     
         * `ip_address_acl` — параметры [политики доступа по IP-адресам](../../concepts/ip-address-acl.md):
     
             * `excepted_values` — [список IP-адресов](../../concepts/ip-address-acl.md#ip-list), для которых будет разрешен или запрещен доступ к контенту ресурса. IP-адреса указываются через запятую. Для каждого адреса укажите префикс подсети в [нотации CIDR](https://ru.wikipedia.org/wiki/Бесклассовая_адресация), например: `192.168.3.2/32` или `2a03:d000:2980:7::8/128`.
             * `policy_type` — [тип политики](../../concepts/ip-address-acl.md#policy-type). Возможные значения:
     
                 * `allow` — разрешающая политика. Доступ к контенту ресурса будет разрешен для любых IP-адресов, кроме адресов, заданных в параметре `ip_address_acl.excepted_values`.
                 * `deny` — блокирующая политика. Доступ к контенту ресурса будет запрещен для любых IP-адресов, кроме адресов, заданных в параметре `ip_address_acl.excepted_values`.
     
         {% note info %}
     
         Если в конфигурационном файле удалить параметры `secure_key` и `ip_address_acl`, эти опции не отключатся автоматически. Чтобы отключить опции `secure_key` и `ip_address_acl`, используйте [CLI](../../../cli/quickstart.md) или [API](../../../api-design-guide/concepts/general.md).
     
         {% endnote %}
     
     Подробнее о параметрах `yandex_cdn_resource` в Terraform в [документации провайдера](../../../terraform/resources/cdn_resource.md).

  1. Создайте ресурсы:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     Terraform создаст все требуемые ресурсы. Проверить создание CDN-ресурса можно в [консоли управления](https://kz.console.yandex.cloud) или с помощью команды CLI:

     ```bash
     yc cdn resource list
     ```

- API {#api}

  Воспользуйтесь методом REST API [create](../../api-ref/Resource/create.md) для ресурса [Resource](../../api-ref/Resource/index.md) или вызовом gRPC API [ResourceService/Create](../../api-ref/grpc/Resource/create.md).

  Вы можете ограничить доступ к ресурсу с помощью [защищенных токенов](../../concepts/secure-tokens.md) и [политики доступа по IP-адресам](../../concepts/ip-address-acl.md).

{% endlist %}

Дождитесь создания ресурса. На это может потребоваться до 15 минут.

После того как CDN-ресурс был создан, [узнайте](get-resources-info.md#get-cname) доменное имя CDN-провайдера и создайте для указанного имени [ресурсную запись CNAME](../../../dns/concepts/resource-record.md#cname) в настройках вашего DNS-хостинга, например в [Yandex Cloud DNS](../../../dns/operations/resource-record-create.md). Подробнее в разделе [Доменные имена для раздачи контента](../../concepts/resource.md#hostnames).

Пример ресурсной записи:

```text
cdn.example.com. CNAME e1b83ae3********.topology.gslb.yccdn.kz
```

Новый ресурс начнет корректно работать после того, как запись CNAME, которую вы создали в своем DNS-хостинге (смотрите [раздел о доменных именах для раздачи контента](../../concepts/resource.md#hostnames)), распространится по серверам DNS. На это может потребоваться несколько часов.

{% note info %}

Не используйте ресурсную запись [ANAME](../../../dns/concepts/resource-record.md#aname) с доменными именами для раздачи контента, поскольку в таком случае конечный пользователь получит ответ от CDN-сервера, не связанного с геолокацией пользователя. Ответ всегда будет одинаков для всех пользователей.

{% endnote %}

## Примеры {#examples}

{% list tabs group=instructions %}

- CLI {#cli}

  Создайте ресурс с протоколом HTTP:

  ```bash
  yc cdn resource create testexample.com \
    --origin-group-id 90209 \
    --origin-protocol HTTP
  ```

  Результат:

  ```text
  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
  ```

{% endlist %}