[Документация 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) выберите каталог, в котором расположен ресурс.

  1. [Перейдите](https://kz.console.yandex.cloud/link/cdn) в сервис **Cloud CDN**.

  1. Нажмите на имя необходимого ресурса.

  1. В правом верхнем углу нажмите кнопку ![image](../../../_assets/console-icons/pencil.svg) **Редактировать**.

  1. Измените настройки ресурса.

      {% note warning %}

      Основное [доменное имя для раздачи контента](../../concepts/resource.md#hostnames) нельзя изменить.

      {% endnote %}

      * Чтобы добавить [метки](../../concepts/labels.md):

          * Нажмите кнопку **Добавить метку**.
          * Введите метку в формате `ключ: значение`.
          * Нажмите **Enter**.

      * Чтобы настроить [TLS-сертификат](../../concepts/clients-to-servers-tls.md) для CDN-ресурса, в поле **Тип сертификата** выберите одну из опций:

          * `Не использовать` — ресурс будет доступен только по протоколу 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-соединений между клиентами и CDN](../../concepts/clients-to-servers-tls.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-адресов.

          (Опционально) Чтобы ограничить доступ к контенту ресурса с помощью [политики доступа по 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`.

          Подробнее в разделе [Настройка доступа по защищенному токену](enable-secure-token.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 для редактирования ресурсов:

      ```bash
      yc cdn resource update --help
      ```

  1. Получите список всех ресурсов в каталоге по умолчанию:

      ```bash
      yc cdn resource list --format yaml
      ```

      Результат:

      ```text
      id: s0me1dkfjq********
      folder_id: s0mef01der7p********
      cname: testexample.com
      created_at: "2022-01-19T09:23:57.921365Z"
      updated_at: "2022-01-19T10:55:30.305141Z"
      active: true
      options:
        edge_cache_settings:
          enabled: true
          default value: "345600"
        cache_http_headers:
          enabled: true
          value:
          - content-type
          - content-length
          - connection
          - server
          - date
          - test
        stale:
          enabled: true
          value:
          - error
          - updating
        allowed_http_methods:
          value:
          - GET
          - HEAD
          - OPTIONS
      origin_group_id: "89783"
      origin_group_name: My origins group
      origin_protocol: HTTP
      ssl_certificate:
        type: DONT_USE
        status: READY
      ```

  1. Измените настройки ресурса:

      ```bash
      yc cdn resource update <идентификатор_ресурса> \
        <флаг> <новое_значение>
      ```

      Чтобы настроить [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`.

      Чтобы отключить перенаправление запросов на CDN-ресурсе, используйте параметр `--clear-rewrite`.

      Если вы хотите ограничить доступ к контенту ресурса с помощью [защищенных токенов](../../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`.

      Чтобы отключить политику доступа по IP-адресам, используйте параметр `--clear-ip-address-acl`.

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

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

- Terraform {#tf}

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

  Чтобы изменить параметры CDN-ресурса, созданного с помощью Terraform:

  1. Откройте файл конфигурации Terraform и измените фрагмент с описанием ресурса:

      ```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. В командной строке перейдите в папку, где расположен конфигурационный файл Terraform.

  1. Проверьте конфигурацию командой:
     ```bash
     terraform validate
     ```

     Если конфигурация является корректной, появится сообщение:

     ```text
     Success! The configuration is valid.
     ```

  1. Выполните команду:
     ```bash
     terraform plan
     ```

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

  1. Примените изменения конфигурации:
     ```bash
     terraform apply
     ```

  1. Подтвердите изменения: введите в терминал слово `yes` и нажмите **Enter**.

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

     ```bash
     yc cdn resource list
     ```

- API {#api}

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

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

{% endlist %}

Чтобы новые настройки существующего ресурса применились к CDN-серверам, может потребоваться до 15 минут. После этого рекомендуется [очистить кеш ресурса](purge-cache.md).

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

{% list tabs group=instructions %}

- CLI {#cli}

  Измените протокол для источников с HTTP на HTTPS и выберите сертификат Let's Encrypt®, [добавленный](../../../certificate-manager/operations/managed/cert-create.md) в Certificate Manager, или [загруженный](../../../certificate-manager/operations/import/cert-create.md) собственный сертификат:

    ```bash
    yc cdn resource update s0me1dkfjq******** \
      --origin-protocol HTTPS \
      --cert-manager-ssl-cert-id <идентификатор_сертификата>
    ```

  Результат:

    ```text
    id: s0me1dkfjq********

    ...

    cname: testexample.com
    active: true

    ...

    origin_group_id: "89783"
    origin_group_name: My origins group
    origin_protocol: HTTPS
    ssl_certificate:
    type: CM
    status: CREATING
    ```

{% endlist %}