[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for Trino](../index.md) > [Пошаговые инструкции](index.md) > Кластеры > Изменение кластера

# Изменение кластера Trino

После создания кластера вы можете изменить его настройки:

* [имя и описание кластера](#change-basic-settings);
* [сервисный аккаунт](#change-sa);
* [версию](#change-version);
* [группы безопасности](#change-sg);
* [параметры отказоустойчивого выполнения запросов](#change-retry-policy);
* [настройки выполнения запросов](#change-query-params);
* [конфигурацию координатора и воркеров](#change-configuration);
* [дополнительные настройки кластера](#change-additional-settings).

Подробнее о других изменениях кластера:

* [настройка технического обслуживания](cluster-maintenance.md);
* [настройка правил доступа к объектам кластера](access-control.md);
* [настройка ресурсных групп](manage-resource-groups.md).

## Изменить имя и описание кластера {#change-basic-settings}

{% list tabs group=instructions %}

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

    1. Перейдите на [страницу каталога](https://kz.console.yandex.cloud).
    1. Перейдите в сервис **Managed Service for&nbsp;Trino**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. В блоке **Базовые параметры** измените имя и описание кластера.
    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 managed-trino cluster update --help
        ```

    2. Измените имя и описание кластера, выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --new-name <имя_кластера> \
          --description <описание_кластера> 
        ```

        Где:

        * `--new-name` — уникальное имя кластера в рамках облака.
        * `--description` — описание кластера.

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.   

- Terraform {#tf}

    {% note alert %}

    Не изменяйте имя кластера с помощью Terraform. Это приведет к удалению существующего кластера и созданию нового.

    {% endnote %}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).
        
    1. Измените в описании кластера значение параметра `description`:
      
        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          description = "<описание_кластера>"
          ...
        }
        ```

        Где `description` — описание кластера.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "<список_изменяемых_параметров>",
          "name": "<имя_кластера>",
          "description": "<описание_кластера>"
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую.

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

            {% endnote %}

        * `name` — уникальное имя кластера в рамках облака.
        * `description` — описание кластера.

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
          --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              <список_изменяемых_параметров>
            ]
          },
          "name": "<имя_кластера>",
          "description": "<описание_кластера>"
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.
            
            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

            {% cut "Формат перечисления настроек" %}

            ```yaml
            "update_mask": {
              "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
              ]
            }
            ```

            {% endcut %}

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

            {% endnote %}

        * `name` — уникальное имя кластера в рамках облака.
        * `description` — описание кластера.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить сервисный аккаунт {#change-sa}

{% list tabs group=instructions %}

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

    1. Перейдите на [страницу каталога](https://kz.console.yandex.cloud).
    1. Перейдите в сервис **Managed Service for&nbsp;Trino**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. В блоке **Базовые параметры** выберите сервисный аккаунт или [создайте новый](../../iam/operations/sa/create.md#create-sa) с ролями `managed-trino.integrationProvider` и `storage.editor`. Это даст кластеру нужные права для работы с пользовательскими ресурсами. Подробнее в разделе [Имперсонация](../concepts/impersonation.md).

        Для изменения сервисного аккаунта в кластере Managed Service for Trino [убедитесь](../../iam/operations/roles/get-assigned-roles.md), что вашему аккаунту в Yandex Cloud назначена роль [iam.serviceAccounts.user](../../iam/security/index.md#iam-serviceAccounts-user) или выше.

        {% note warning %}
        
        Если для доступа к объектам из Object Storage в кластере уже используется сервисный аккаунт, то его смена может привести к недоступности этих объектов и нарушению работы кластера. Перед изменением настроек сервисного аккаунта убедитесь, что кластер не использует соответствующие объекты.
        
        {% endnote %}

    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 managed-trino cluster update --help
        ```

    1. Измените сервисный аккаунт, выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --service-account-id <идентификатор_сервисного_аккаунта>
        ```

        Где `--service-account-id` — идентификатор сервисного аккаунта.

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.   

- Terraform {#tf}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).

    1. Измените в описании кластера значение параметра `service_account_id`:
      
        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          service_account_id  = "<идентификатор_сервисного_аккаунта>"
          ...
        }
        ```

        Где `service_account_id` — идентификатор сервисного аккаунта.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "serviceAccountId",
          "serviceAccountId": "<идентификатор_сервисного_аккаунта>"
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую.

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

            {% endnote %}

        * `serviceAccountId` — идентификатор сервисного аккаунта.

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
            --request PATCH \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
            --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              "service_account_id"
            ]
          },
          "service_account_id": "<идентификатор_сервисного_аккаунта>"
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.
            
            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

            {% cut "Формат перечисления настроек" %}

            ```yaml
            "update_mask": {
              "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
              ]
            }
            ```

            {% endcut %}

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

            {% endnote %}

        * `service_account_id` — идентификатор сервисного аккаунта.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить версию {#change-version}

{% list tabs group=instructions %}

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

    1. Перейдите на [страницу каталога](https://kz.console.yandex.cloud).
    1. Перейдите в сервис **Managed Service for&nbsp;Trino**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. В блоке **Базовые параметры** выберите версию Trino. Версию можно как повысить, так и понизить.
    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`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы изменить версию Trino:

    1. Посмотрите описание команды CLI для изменения кластера:

        ```bash
        yc managed-trino cluster update --help
        ```

    2. Измените версию, выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --version <версия>
        ```

        Где `--version` — версия Trino. Версию можно как повысить, так и понизить.

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.   

- Terraform {#tf}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).
        
    1. Измените в описании кластера значение параметра `version`:
      
        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          version = "<версия>"
          ...
        }
        ```

        Где `version` — версия Trino. Версию можно как повысить, так и понизить.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "trino.version",
          "trino": {
            "version": "<версия>"
          }
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую.

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

            {% endnote %}

        * `version` — версия Trino. Версию можно как повысить, так и понизить.

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
          --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              "trino.version"
            ]
          },
          "trino": {
            "version": "<версия>"
          }
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.
            
            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

            {% cut "Формат перечисления настроек" %}

            ```yaml
            "update_mask": {
              "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
              ]
            }
            ```

            {% endcut %}

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

            {% endnote %}

        * `version` — версия Trino. Версию можно как повысить, так и понизить.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить группы безопасности {#change-sg}

{% list tabs group=instructions %}

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

    1. Перейдите на [страницу каталога](https://kz.console.yandex.cloud).
    1. Перейдите в сервис **Managed Service for&nbsp;Trino**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. В блоке **Сетевые настройки** выберите группы безопасности для кластера.
    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 managed-trino cluster update --help
        ```

    2. Измените группы безопасности, выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --security-group-ids <список_идентификаторов_групп_безопасности>
        ```

        Где `--security-group-ids` — список идентификаторов групп безопасности.

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.   

- Terraform {#tf}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).

    1. Измените в описании кластера значение параметра `security_group_ids`:
      
        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          security_group_ids  = [<список_идентификаторов_групп_безопасности>]
          ...
        }
        ```

        Где `security_group_ids` — список идентификаторов групп безопасности.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "networkSpec.securityGroupIds",
          "networkSpec": {
            "securityGroupIds": [
              <список_идентификаторов_групп_безопасности>
            ]
          }
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую.

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

            {% endnote %}

        * `networkSpec` — сетевые настройки:
          
            * `securityGroupIds` — список идентификаторов групп безопасности.

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
          --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              "network_spec.security_group_ids"
            ]
          },
          "network_spec": {
            "security_group_ids": [ <список_идентификаторов_групп_безопасности> ]
          }
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.
            
            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

            {% cut "Формат перечисления настроек" %}

            ```yaml
            "update_mask": {
              "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
              ]
            }
            ```

            {% endcut %}

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

            {% endnote %}

        * `network_spec` — сетевые настройки:

            * `security_group_ids` — список идентификаторов групп безопасности.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить параметры отказоустойчивого выполнения запросов {#change-retry-policy}

{% list tabs group=instructions %}

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

    1. Перейдите на [страницу каталога](https://kz.console.yandex.cloud).
    1. Перейдите в сервис **Managed Service for&nbsp;Trino**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. В блоке **Политика перезапросов** измените параметры [отказоустойчивого выполнения запросов](../concepts/retry-policy.md):
        
        * Измените **Тип объекта для перезапроса**.
        
        * Добавьте или удалите в поле **Параметры перезапросов** дополнительные параметры в формате `ключ: значение`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#advanced-configuration).
        
        * Добавьте или удалите в поле **Параметры хранилища** дополнительные параметры хранилища Exchange Manager в формате `ключ: значение`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#id1).

    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`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы изменить параметры [отказоустойчивого выполнения запросов](../concepts/retry-policy.md):

    1. Посмотрите описание команды CLI для изменения кластера:

        ```bash
        yc managed-trino cluster update --help
        ```

    2. Измените параметры [отказоустойчивого выполнения запросов](../concepts/retry-policy.md), выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --retry-policy-enabled \ 
          --retry-policy <тип_объекта_для_перезапроса> \
          --retry-policy-additional-properties <список_дополнительных_параметров> \
          --retry-policy-exchange-manager-service-s3 \
          --retry-policy-exchange-manager-additional-properties <список_дополнительных_параметров>
        ```

        Где:

        * `--retry-policy-enabled` — включает политику перезапросов.
          
        * `--retry-policy` — способ повторного выполнения запросов. Возможные значения:

            * `query` — повторно выполняются все [этапы запроса](../concepts/index.md#query-execution), в котором произошел сбой воркера.
            * `task` — в рамках запроса повторно выполняется промежуточное задание, вызвавшее сбой воркера.

        * `--retry-policy-additional-properties` — дополнительные параметры перезапросов в формате `<ключ>=<значение>`. [Подробнее о параметрах в документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#advanced-configuration).
          
        * `--retry-policy-exchange-manager-service-s3` — включает использование служебного бакета Object Storage в качестве хранилища Exchange Manager для промежуточных данных.
          
        * `--retry-policy-exchange-manager-additional-properties` — дополнительные параметры хранилища Exchange Manager в формате `<ключ>=<значение>`. [Подробнее о параметрах в документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#id1).

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

- Terraform {#tf}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).

    1. Чтобы включить политику [отказоустойчивого выполнения запросов](../concepts/retry-policy.md), добавьте к описанию кластера блок `retry_policy`:
      
        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          retry_policy = {
            policy = "<тип_объекта_для_перезапроса>"
            additional_properties = {
              <список_дополнительных_параметров_политики_перезапросов>
            }
            exchange_manager = {
              additional_properties = {
                <список_дополнительных_параметров_хранилища>
              }
              service_s3 = {}
            }
          }
          ...
        }
        ```
        
        Где:
        
        * `policy` — способ повторного выполнения запросов. Возможные значения:
        
            * `TASK` — в рамках запроса повторно выполняется промежуточное задание, вызвавшее сбой воркера.
            * `QUERY` — повторно выполняются все [этапы запроса](../concepts/index.md#query-execution), в котором произошел сбой воркера.
        
        * `additional_properties` — дополнительные параметры повторного выполнения запросов в формате `"<ключ>" = "<значение>"`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#advanced-configuration).
        
        * `exchangeManager` — параметры хранилища Exchange Manager:
        
            * `service_s3` — использование S3-хранилища для записи данных при перезапросах.
            * `additional_properties` — дополнительные параметры хранилища Exchange Manager в формате `"<ключ>" = "<значение>"`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#id1).

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "<список_изменяемых_параметров>",
          "trino": {
            "retryPolicy": {
              "policy": "<тип_объекта_для_перезапроса>",
              "exchangeManager": {
                "storage": {
                  "serviceS3": {}
                },
                "additionalProperties": {<дополнительные_параметры_хранилища>}
              },
              "additionalProperties": {<дополнительные_параметры_перезапросов>}
            }
          }
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую.

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

            {% endnote %}

        * `trino.retryPolicy` — параметры [отказоустойчивого выполнения запросов](../concepts/retry-policy.md).

            * `policy` – способ повторного выполнения запросов. Возможные значения:

                * `TASK` — в рамках запроса повторно выполняется промежуточное задание, вызвавшее сбой воркера.
                * `QUERY` – повторно выполняются все [этапы запроса](../concepts/index.md#query-execution), в котором произошел сбой воркера.

            * `exchangeManager.additionalProperties` – дополнительные параметры хранилища Exchange Manager в формате `ключ: значение`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#id1).

            * `additionalProperties` — дополнительные параметры в формате `ключ: значение`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#advanced-configuration).

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
          --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              <список_изменяемых_параметров>
            ]
          },
          "trino": {
            "retry_policy": {
              "policy": "<тип_объекта_для_перезапроса>",
              "exchange_manager": {
                "storage": {
                  "service_s3": ""
                },
                "additional_properties": {<дополнительные_параметры_хранилища>}
              },
              "additional_properties": {<дополнительные_параметры_перезапросов>}
            }
          }
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.
            
            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

            {% cut "Формат перечисления настроек" %}

            ```yaml
            "update_mask": {
              "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
              ]
            }
            ```

            {% endcut %}

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

            {% endnote %}

        * `trino.retry_policy` – параметры [отказоустойчивого выполнения запросов](../concepts/retry-policy.md).

            * `policy` – способ повторного выполнения запросов. Возможные значения:

                * `TASK` — в рамках запроса повторно выполняется промежуточное задание, вызвавшее сбой воркера.
                * `QUERY` – повторно выполняются все [этапы запроса](../concepts/index.md#query-execution), в котором произошел сбой воркера.

            * `exchange_manager.additional_properties` – дополнительные параметры хранилища Exchange Manager в формате `ключ: значение`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#id1).

            * `additional_properties` – дополнительные параметры в формате `ключ: значение`. Подробнее о параметрах в [документации Trino](https://trino.io/docs/current/admin/fault-tolerant-execution.html#advanced-configuration).

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить настройки выполнения запросов {#change-query-params}

{% list tabs group=instructions %}

- 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 managed-trino cluster update --help
        ```

    2. Измените настройки выполнения запросов и выделения ресурсов кластера для запросов, выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --query-properties <список_настроек>
        ```

        Где:

        * `--query-properties` — настройки выполнения запросов и выделения ресурсов кластера для запросов в формате `<ключ>=<значение>`.

          {% note warning %}

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

          {% endnote %}

          Подробнее о [настройках выделения ресурсов кластера для запросов](https://trino.io/docs/current/admin/properties-resource-management.html) и о [настройках выполнения запросов](https://trino.io/docs/current/admin/properties-query-management.html).

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

- Terraform {#tf}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).

    1. Измените настройки выполнения запросов и выделения ресурсов кластера для запросов в блоке `query_properties`:

        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          query_properties = {
            <список_настроек_выполнения_запросов>
            <список_настроек_выделения_ресурсов_кластера_для_запросов>
          }
          ...
        }
        ```
        
        Где:
        
        * `query_properties` — настройки выполнения запросов и выделения ресурсов кластера для запросов в формате `"<ключ>" = "<значение>"`.
        
            Подробнее о [настройках выделения ресурсов кластера для запросов](https://trino.io/docs/current/admin/properties-resource-management.html) и о [настройках выполнения запросов](https://trino.io/docs/current/admin/properties-query-management.html).

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "trino.resourceManagement.query.properties",
          "trino": {
            "resourceManagement": {
              "query": {
                "properties": {
                  <настройки_выполнения_запросов>,
                  <настройки_выделения_ресурсов_кластера_для_запросов>
                }
              }
            }
          }
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую. В данном случае указан только один параметр, содержащий все настройки.

        * `resourceManagement.query.properties` — настройки выполнения запросов и выделения ресурсов кластера для запросов в формате `ключ: значение`.

          {% note warning %}

          Все настройки, которые не были явно переданы в объекте, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите как измененные, так и сохраняемые настройки.

          {% endnote %}

          Подробнее о [настройках выделения ресурсов кластера для запросов](https://trino.io/docs/current/admin/properties-resource-management.html) и о [настройках выполнения запросов](https://trino.io/docs/current/admin/properties-query-management.html).

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
          --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              "trino.resource_management.query.properties"
            ]
          },
          "trino": {
            "resource_management": {
              "query": {
                "properties": {
                  <настройки_выполнения_запросов>,
                  <настройки_выделения_ресурсов_кластера_для_запросов>
                }
              }
            }
          }
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.

            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`. В данном случае указан только один параметр, содержащий все настройки.

        * `resource_management.query.properties` — настройки выполнения запросов и выделения ресурсов кластера для запросов в формате `ключ: значение`.

          {% note warning %}

          Все настройки, которые не были явно переданы в объекте, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите как измененные, так и сохраняемые настройки.

          {% endnote %}

          Подробнее о [настройках выделения ресурсов кластера для запросов](https://trino.io/docs/current/admin/properties-resource-management.html) и о [настройках выполнения запросов](https://trino.io/docs/current/admin/properties-query-management.html).

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить конфигурацию координатора и воркеров {#change-configuration}

{% list tabs group=instructions %}

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

    1. Перейдите на [страницу каталога](https://kz.console.yandex.cloud).
    1. Перейдите в сервис **Managed Service for&nbsp;Trino**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. Измените конфигурацию [координатора](../concepts/index.md#coordinator) и [воркеров](../concepts/index.md#workers).
    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`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    Чтобы изменить конфигурацию [координатора](../concepts/index.md#coordinator) и [воркеров](../concepts/index.md#workers):

    1. Посмотрите описание команды CLI для изменения кластера:

        ```bash
        yc managed-trino cluster update --help
        ```

    2. Измените конфигурацию [координатора](../concepts/index.md#coordinator) и [воркеров](../concepts/index.md#workers), выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --coordinator resource-preset-id=<класс_хостов> \
          --worker count=<количество_экземпляров>,`
                  `min-count=<минимальное_количество_экземпляров>,`
                  `max-count=<максимальное_количество_экземпляров>,`
                  `resource-preset-id=<класс_хостов>
        ```

        Где:

        * `--coordinator` — конфигурация [координатора](../concepts/index.md#coordinator):
            
            * `resource-preset-id` — [класс хостов](../concepts/instance-types.md) координатора.
        
        * `--worker` — конфигурация [воркера](../concepts/index.md#workers):

            * `resource-preset-id` — [класс хостов](../concepts/instance-types.md) воркера.
                
            * `count` — количество воркеров.
            * `min-count` — минимальное количество воркеров.
            * `max-count` — максимальное количество воркеров.
                
            Чтобы количество воркеров автоматически изменялось в зависимости от нагрузки, используйте `min-count` и `max-count`. Если требуется задать фиксированное число воркеров, используйте `count`.

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.   

- Terraform {#tf}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).

    1. Измените конфигурацию [координатора](../concepts/index.md#coordinator) и [воркеров](../concepts/index.md#workers) в блоках `coordinator` и `worker`:
      
        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          coordinator = {
            resource_preset_id = "<класс_вычислительных_ресурсов>"
          }
          
          worker = {
            fixed_scale = {
              count = <количество_экземпляров>
            }
            auto_scale = {
              max_count=<минимальное_количество_экземпляров>
              min_count=<максимальное_количество_экземпляров>
            }
            resource_preset_id = "<класс_вычислительных_ресурсов>"
          }
          ...
        }
        ```
        
        Где:
        
        * `coordinator` — конфигурация [координатора](../concepts/index.md#coordinator):
            
            * `resource_preset_id` — [класс хостов](../concepts/instance-types.md) координатора.

        * `worker` — конфигурация [воркера](../concepts/index.md#workers):
        
            * `resource_preset_id` — [класс хостов](../concepts/instance-types.md) воркера.
            
            * `fixed_scale` — фиксированное количество воркеров.
                
                * `count` — количество воркеров.

            * `auto_scale` — автоматическое масштабирование количества воркеров.
                
                * `min_count` — минимальное количество воркеров.
                * `max_count` — максимальное количество воркеров.
            
            Чтобы количество воркеров автоматически изменялось в зависимости от нагрузки, используйте блок `auto_scale` и задайте минимальное и максимальное значения. Для фиксированного числа воркеров используйте блок `fixed_scale` и укажите требуемое значение.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "<список_изменяемых_параметров>",
          "trino": {
            "coordinatorConfig": {
              "resources": {
                "resourcePresetId": "<класс_хостов>"
              }
            },
            "workerConfig": {
              "resources": {
                "resourcePresetId": "<класс_хостов>"
              },
              "scalePolicy": {
                "fixedScale": {
                  "count": "<количество_экземпляров>"
                },
                "autoScale": {
                  "minCount": "<минимальное_количество_экземпляров>",
                  "maxCount": "<максимальное_количество_экземпляров>"
                }
              }
            }
          }
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую.

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

            {% endnote %}

        * `trino.coordinatorConfig` — конфигурация [координатора](../concepts/index.md#coordinator):

            * `resources.resourcePresetId` — [класс хостов](../concepts/instance-types.md) координатора.
              
        * `trino.workerConfig` — конфигурация [воркера](../concepts/index.md#workers):

            * `resources.resourcePresetId` — [класс хостов](../concepts/instance-types.md) воркера.

            * `scalePolicy.fixedScale` — фиксированное количество воркеров.
                
                * `count` — количество воркеров.

            * `scalePolicy.autoScale` — автоматическое масштабирование количества воркеров.

                * `minCount` — минимальное количество воркеров.
                * `maxCount` — максимальное количество воркеров.

            Чтобы количество воркеров автоматически изменялось в зависимости от нагрузки, используйте настройку `scalePolicy.autoScale` и задайте минимальное и максимальное значения. Для фиксированного числа воркеров используйте настройку `scalePolicy.fixedScale` и укажите требуемое значение.

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
          --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              <список_изменяемых_параметров>
            ]
          },
          "trino": {
            "coordinator_config": {
              "resources": {
                "resource_preset_id": "<класс_хостов>"
              }
            },
            "worker_config": {
              "resources": {
                "resource_preset_id": "<класс_хостов>"
              },
              "scale_policy": {
                "fixed_scale": {
                  "count": "<количество_экземпляров>"
                },
                "auto_scale": {
                  "min_count": "<минимальное_количество_экземпляров>",
                  "max_count": "<максимальное_количество_экземпляров>"
                }
              }
            }
          }
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.
            
            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

            {% cut "Формат перечисления настроек" %}

            ```yaml
            "update_mask": {
              "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
              ]
            }
            ```

            {% endcut %}

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

            {% endnote %}

        * `trino.coordinator_config"` — конфигурация [координатора](../concepts/index.md#coordinator):

            * `resources.resource_preset_id` — [класс хостов](../concepts/instance-types.md) координатора.
              
        * `trino.worker_config` — конфигурация [воркера](../concepts/index.md#workers):

            * `resources.resource_preset_id` — [класс хостов](../concepts/instance-types.md) воркера.

            * `scale_policy.fixed_scale` — фиксированное количество воркеров.
                
                * `count` — количество воркеров.

            * `scale_policy.auto_scale` — автоматическое масштабирование количества воркеров.

                * `minCount` — минимальное количество воркеров.
                * `maxCount` — максимальное количество воркеров.

            Чтобы количество воркеров автоматически изменялось в зависимости от нагрузки, используйте настройку `scale_policy.auto_scale` и задайте минимальное и максимальное значения. Для фиксированного числа воркеров используйте настройку `scale_policy.fixed_scale` и укажите требуемое значение.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}

## Изменить дополнительные настройки кластера {#change-additional-settings}

{% list tabs group=instructions %}

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

    1. Перейдите на [страницу каталога](https://kz.console.yandex.cloud).
    1. Перейдите в сервис **Managed Service for&nbsp;Trino**.
    1. Выберите кластер и нажмите кнопку **Редактировать** на панели сверху.
    1. Измените дополнительные настройки кластера:
        
        * **Защита от удаления** — защита кластера от непреднамеренного удаления пользователем.

            Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
        
        * **Обслуживание** — настройки окна [технического обслуживания](../concepts/maintenance.md).

            * Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт **В любое время** (по умолчанию).
            * Чтобы указать предпочтительное время начала обслуживания, выберите пункт **По расписанию** и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
            
            Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.

        * **Запись логов** — опция включает логирование. 
        
          * Выберите место записи логов:
            * **Каталог** — выберите каталог из списка. Логи будут записываться в лог-группу по умолчанию выбранного каталога.
                
            * **Группа** — выберите [лог-группу](../../logging/concepts/log-group.md) из списка или создайте новую.
            
          * Выберите **Минимальный уровень логирования** из списка.

          {% note info %}
                    
          Для управления логированием вашему аккаунту в Yandex Cloud нужны роли:
          
          * [logging.reader](../../logging/security/index.md#logging-reader) — чтобы просматривать логи кластера;
          * [logging.editor](../../logging/security/index.md#logging-editor) — чтобы управлять настройками логирования кластера.
                    
          {% endnote %}

    1. Измените параметры [TLS](../../glossary/tls.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 managed-trino cluster update --help
        ```

    2. Измените дополнительные настройки кластера, выполнив команду:

        ```bash
        yc managed-trino cluster update <имя_или_идентификатор_кластера> \
          --deletion-protection \
          --maintenance-window type=<тип_технического_обслуживания>,`
                              `day=<день_недели>,`
                              `hour=<час_дня> \
          --log-enabled \
          --log-folder-id <идентификатор_каталога> \
          --log-group-id <идентификатор_лог-группы> \
          --log-min-level <уровень_логирования> \
          --trusted-certs-from-files <список_путей_к_файлам_с_сертификатами>
        ```

        Где:

        * `--deletion-protection` — включает защиту кластера от непреднамеренного удаления.
          
            Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
        
        * `--maintenance-window` — настройки окна [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров), где `type` — тип технического обслуживания:

            * `anytime` (по умолчанию) — в любое время.
            * `weekly` — по расписанию. Для этого значения дополнительно укажите:
                * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
                * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
            
                  > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

        * Параметры логирования:

          * `--log-enabled` — включает логирование. Логи, сгенерированные компонентами Trino, будут отправляться в Yandex Cloud Logging.
          * `--log-folder-id` — идентификатор каталога. Логи будут записываться в [лог-группу](../../logging/concepts/log-group.md) по умолчанию для этого каталога.
          * `--log-group-id` — идентификатор пользовательской [лог-группы](../../logging/concepts/log-group.md).

            Вы можете указать только один из параметров: `--log-folder-id` или `--log-group-id`.

          * `--log-min-level` — минимальный уровень логирования. Возможные значения: `TRACE`, `DEBUG`, `INFO` (значение по умолчанию), `WARN`, `ERROR` и `FATAL`.
        
          {% note info %}
                    
          Для управления логированием вашему аккаунту в Yandex Cloud нужны роли:
          
          * [logging.reader](../../logging/security/index.md#logging-reader) — чтобы просматривать логи кластера;
          * [logging.editor](../../logging/security/index.md#logging-editor) — чтобы управлять настройками логирования кластера.
                    
          {% endnote %}
        
        * `--trusted-certs-from-files` — список путей к файлам с доверенными сертификатами. 
        
          Если вы хотите удалить все сертификаты, передайте параметр `--remove-trusted-certs`.

        Имя и идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.   

- Terraform {#tf}

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

        Инструкция по созданию файла описана в разделе [Создание кластера](cluster-create.md).

    1. Чтобы включить защиту кластера от непреднамеренного удаления, добавьте параметр `deletion_protection = true`:
        
        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          deletion_protection = true
          ...
        }
        ```

        Где `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

        Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.

    1. Чтобы изменить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок `maintenance_window`:

        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          maintenance_window = {
            type = <тип_технического_обслуживания>
            day  = <день_недели>
            hour = <час_дня>
          }
          ...
        }
        ```
        
        Где:
        
        * `type` — тип технического обслуживания. Принимает значения:
            * `ANYTIME` — в любое время.
            * `WEEKLY` — по расписанию.
        * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
        * `hour` — порядковый номер часового интервала по UTC для типа `WEEKLY`: от `1` до `24`.
        
          > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

    1. Чтобы включить отправку логов Trino в сервис [Yandex Cloud Logging](../../logging/index.md), добавьте к описанию кластера блок `logging`:

        ```hcl
        resource "yandex_trino_cluster" "<имя_кластера>" {
          ...
          logging = {
            enabled   = <включить_логирование>
            folder_id = <идентификатор_каталога>
            min_level = "<уровень_логирования>"
          }
          ...
        }
        ```
        
        Где:
        
        * `enabled` — включает логирование: `true` или `false`.
        * `folder_id` — идентификатор каталога. Логи будут записываться в [лог-группу](../../logging/concepts/log-group.md) по умолчанию для этого каталога.
        * `log_group_id` — идентификатор пользовательской лог-группы. Логи будут записываться в нее.
        
            Вы можете указать только один из параметров: `folder_id` или `log_group_id`.
        
        * `min_level` — минимальный уровень логирования. Возможные значения: `TRACE`, `DEBUG`, `INFO` (значение по умолчанию), `WARN`, `ERROR` и `FATAL`.

        {% note info %}
                  
        Для управления логированием вашему аккаунту в Yandex Cloud нужны роли:
        
        * [logging.reader](../../logging/security/index.md#logging-reader) — чтобы просматривать логи кластера;
        * [logging.editor](../../logging/security/index.md#logging-editor) — чтобы управлять настройками логирования кластера.
                  
        {% endnote %}

    1. Чтобы изменить параметры [TLS](../../glossary/tls.md):

       ```hcl
       resource "yandex_trino_cluster" "<имя_кластера>" {
         ...
         tls = {
           trusted_certificates = [<список_сертификатов>]
         }
         ...
       }
       ```
       
       Где:
       
       * `tls` — параметры TLS.
         
           ## Параметры TLS {#tls}
           
           Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
           
           ## TLS для PG и CH {#tls-pg-ch}
           
           {% note info %}
                      
           Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                      
           {% endnote %}
           
           ## Список сертификатов {#cert-list}
           
           Передайте один или несколько пользовательских сертификатов в PEM-формате:
           * самоподписанный сертификат;
           * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.
       
           * `trusted_certificates` — список сертификатов, разделенных запятой.
       
             ## Параметры TLS {#tls}
             
             Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
             
             ## TLS для PG и CH {#tls-pg-ch}
             
             {% note info %}
                        
             Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                        
             {% endnote %}
             
             ## Список сертификатов {#cert-list}
             
             Передайте один или несколько пользовательских сертификатов в PEM-формате:
             * самоподписанный сертификат;
             * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.
       
           ## Параметры TLS {#tls}
           
           Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
           
           ## TLS для PG и CH {#tls-pg-ch}
           
           {% note info %}
                      
           Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                      
           {% endnote %}
           
           ## Список сертификатов {#cert-list}
           
           Передайте один или несколько пользовательских сертификатов в PEM-формате:
           * самоподписанный сертификат;
           * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.

    1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "updateMask": "<список_изменяемых_параметров>",
          "deletionProtection": "<защита_от_удаления>",
          "logging": {
            "enabled": "<использование_логирования>",
            "folderId": "<идентификатор_каталога>",
            "logGroupId": "<идентификатор_лог-группы>",
            "minLevel": "<уровень_логирования>"
          },
          "maintenanceWindow": {
            "weeklyMaintenanceWindow": {
              "day": "<день_недели>",
              "hour": "<час_дня>"
            }
          },
          "tls": {
            "trustedCertificates": [ <список_сертификатов> ]
          }
        }
        ```

        Где:

        * `updateMask` — перечень изменяемых параметров в строку через запятую.

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask`.

            {% endnote %}

        * `deletionProtection` — защита кластера от непреднамеренного удаления: `true` или `false`.

            Включенная защита от удаления не помешает подключиться к кластеру вручную и удалить его.

        * `logging` — параметры логирования:

            * `enabled` — включает логирование. Логи, сгенерированные компонентами Trino, будут отправляться в Yandex Cloud Logging. Возможные значения: `true` или `false`.
            * `folderId` — идентификатор каталога. Логи будут записываться в [лог-группу](../../logging/concepts/log-group.md) по умолчанию для этого каталога.
            * `logGroupId` — идентификатор пользовательской [лог-группы](../../logging/concepts/log-group.md).

                Вы можете указать только один из параметров: `folderId` или `logGroupId`.

            * `minLevel` — минимальный уровень логирования. Возможные значения: `TRACE`, `DEBUG`, `INFO` (значение по умолчанию), `WARN`, `ERROR` и `FATAL`.

            {% note info %}
                      
            Для управления логированием вашему аккаунту в Yandex Cloud нужны роли:
            
            * [logging.reader](../../logging/security/index.md#logging-reader) — чтобы просматривать логи кластера;
            * [logging.editor](../../logging/security/index.md#logging-editor) — чтобы управлять настройками логирования кластера.
                      
            {% endnote %}

        * `maintenanceWindow` — настройки окна [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Передайте один из двух параметров:

            * `anytime` — техническое обслуживание происходит в любое время.
            * `weeklyMaintenanceWindow` — техническое обслуживание происходит раз в неделю в указанное время:
            
              * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — час дня по UTC для типа `WEEKLY`: от `1` до `24`.
        * `tls` — параметры [TLS](../../glossary/tls.md).

           ## Параметры TLS {#tls}
           
           Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
           
           ## TLS для PG и CH {#tls-pg-ch}
           
           {% note info %}
                      
           Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                      
           {% endnote %}
           
           ## Список сертификатов {#cert-list}
           
           Передайте один или несколько пользовательских сертификатов в PEM-формате:
           * самоподписанный сертификат;
           * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.

           * `trustedCertificates` — список сертификатов, разделенных запятой.

              ## Параметры TLS {#tls}
              
              Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
              
              ## TLS для PG и CH {#tls-pg-ch}
              
              {% note info %}
                         
              Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                         
              {% endnote %}
              
              ## Список сертификатов {#cert-list}
              
              Передайте один или несколько пользовательских сертификатов в PEM-формате:
              * самоподписанный сертификат;
              * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.
               
           ## Параметры TLS {#tls}
           
           Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
           
           ## TLS для PG и CH {#tls-pg-ch}
           
           {% note info %}
                      
           Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                      
           {% endnote %}
           
           ## Список сертификатов {#cert-list}
           
           Передайте один или несколько пользовательских сертификатов в PEM-формате:
           * самоподписанный сертификат;
           * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.

    1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --url 'https://trino.api.cloud.yandex.net/managed-trino/v1/clusters/<идентификатор_кластера>'
          --data '@body.json'
        ```

        Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "cluster_id": "<идентификатор_кластера>",
          "update_mask": {
            "paths": [
              <список_изменяемых_параметров>
            ]
          },
          "deletion_protection": "<защита_от_удаления>",
          "logging": {
            "enabled": "<использование_логирования>",
            "folder_id": "<идентификатор_каталога>",
            "log_group_id": "<идентификатор_лог-группы>",
            "min_level": "<уровень_логирования>"
          },
          "maintenance_window": {
            "weekly_maintenance_window": {
              "day": "<день_недели>",
              "hour": "<час_дня>"
            }
          },
          "tls": {
            "trusted_certificates": [ <список_сертификатов> ]
          }
        }
        ```

        Где:

        * `cluster_id` — идентификатор кластера.
            
            Идентификатор кластера можно получить со [списком кластеров](cluster-list.md#list-clusters) в каталоге.

        * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

            {% cut "Формат перечисления настроек" %}

            ```yaml
            "update_mask": {
              "paths": [
                "<настройка_1>",
                "<настройка_2>",
                ...
                "<настройка_N>"
              ]
            }
            ```

            {% endcut %}

            {% note warning %}

            При изменении кластера все параметры изменяемого объекта, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask`.

            {% endnote %}

        * `deletion_protection` — защита кластера от непреднамеренного удаления: `true` или `false`.

            Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.

        * `logging` — параметры логирования:

            * `enabled` — включает логирование. Логи, сгенерированные компонентами Trino, будут отправляться в Yandex Cloud Logging. Возможные значения: `true` или `false`.
            * `folder_id` — идентификатор каталога. Логи будут записываться в [лог-группу](../../logging/concepts/log-group.md) по умолчанию для этого каталога.
            * `log_group_id` — идентификатор пользовательской [лог-группы](../../logging/concepts/log-group.md).

                Вы можете указать только один из параметров: `folderId` или `logGroupId`.

            * `min_level` — минимальный уровень логирования. Возможные значения: `TRACE`, `DEBUG`, `INFO` (значение по умолчанию), `WARN`, `ERROR` и `FATAL`.

            {% note info %}
                      
            Для управления логированием вашему аккаунту в Yandex Cloud нужны роли:
            
            * [logging.reader](../../logging/security/index.md#logging-reader) — чтобы просматривать логи кластера;
            * [logging.editor](../../logging/security/index.md#logging-editor) — чтобы управлять настройками логирования кластера.
                      
            {% endnote %}

        * `maintenance_window` — настройки окна [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). Передайте один из двух параметров:

            * `anytime` — техническое обслуживание происходит в любое время.
            * `weekly_maintenance_window` — техническое обслуживание происходит раз в неделю в указанное время:
            
              * `day` — день недели для типа `WEEKLY`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — час дня по UTC для типа `WEEKLY`: от `1` до `24`.
        
        * `tls` — параметры [TLS](../../glossary/tls.md).

          ## Параметры TLS {#tls}
          
          Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
          
          ## TLS для PG и CH {#tls-pg-ch}
          
          {% note info %}
                     
          Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                     
          {% endnote %}
          
          ## Список сертификатов {#cert-list}
          
          Передайте один или несколько пользовательских сертификатов в PEM-формате:
          * самоподписанный сертификат;
          * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.

          * `trusted_certificates` — список сертификатов, разделенных запятой.

            ## Параметры TLS {#tls}
            
            Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
            
            ## TLS для PG и CH {#tls-pg-ch}
            
            {% note info %}
                       
            Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                       
            {% endnote %}
            
            ## Список сертификатов {#cert-list}
            
            Передайте один или несколько пользовательских сертификатов в PEM-формате:
            * самоподписанный сертификат;
            * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.
               
          ## Параметры TLS {#tls}
          
          Managed Service for Trino будет использовать указанные сертификаты для подключения к пользовательским инсталляциям баз данных. Для управляемых баз данных TLS-сертификат добавляется в параметры подключения автоматически.
          
          ## TLS для PG и CH {#tls-pg-ch}
          
          {% note info %}
                     
          Если вы настраиваете TLS для коннекторов ClickHouse®, PostgreSQL или MySQL® — [создайте подключение](../../metadata-hub/operations/create-connection.md#on-premise-connection) к пользовательской инсталляции в Connection Manager, в настройках включите использование TLS.
                     
          {% endnote %}
          
          ## Список сертификатов {#cert-list}
          
          Передайте один или несколько пользовательских сертификатов в PEM-формате:
          * самоподписанный сертификат;
          * сертификат, выпущенный в стороннем центре сертификации с цепочкой промежуточных сертификатов.

    1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/trino/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d @ \
          trino.api.cloud.yandex.net:443 \
          yandex.cloud.trino.v1.ClusterService.Update \
          < body.json
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/create.md#yandex.cloud.operation.Operation).

{% endlist %}