Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Apache Kafka®
  • Начало работы
    • Все инструкции
    • Управление топиками
    • Управление пользователями
    • Управление коннекторами
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Yandex Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Управление топиками через интерфейсы Yandex Cloud
  • Создать топик
  • Изменить настройки топика
  • Получить список топиков в кластере
  • Получить детальную информацию о топике
  • Импортировать топик в Terraform
  • Перенести информацию о созданных топиках в файл состояния Terraform
  • Удалить топик
  • Управление топиками через Admin API Apache Kafka®
  1. Пошаговые инструкции
  2. Управление топиками

Управление топиками Apache Kafka®

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Управление топиками через интерфейсы Yandex Cloud
    • Создать топик
    • Изменить настройки топика
    • Получить список топиков в кластере
    • Получить детальную информацию о топике
    • Импортировать топик в Terraform
    • Перенести информацию о созданных топиках в файл состояния Terraform
    • Удалить топик
  • Управление топиками через Admin API Apache Kafka®

Кластер Managed Service for Apache Kafka® позволяет управлять топиками и разделами двумя способами (как отдельно, так и совместно):

  • С помощью стандартных интерфейсов Yandex Cloud (CLI, API, консоль управления). Способ подходит, если вы хотите управлять топиками, используя возможности сервиса Managed Service for Apache Kafka®.

    Вы можете выполнить следующие действия над топиками Managed Service for Apache Kafka®:

    • cоздать топик;
    • изменить настройки топика;
    • получить список топиков в кластере;
    • получить детальную информацию о топике;
    • импортировать топик в Terraform;
    • перенести информацию о созданных топиках в файл состояния Terraform;
    • удалить топик.
  • С помощью Admin API Apache Kafka®. Способ подходит, если вы хотите использовать уже существующее у вас решение для управления топиками и разделами.

Управление топиками через интерфейсы Yandex CloudУправление топиками через интерфейсы Yandex Cloud

Создать топикСоздать топик

Перед созданием топика рассчитайте минимальный размер хранилища.

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.
  2. В списке сервисов выберите Managed Service for Kafka.
  3. Нажмите на имя нужного кластера и перейдите на вкладку Топики.
  4. Нажмите кнопку Создать топик.
  5. В блоке Базовые параметры задайте базовые параметры топика:
    • Имя топика (должно быть уникально в пределах кластера Apache Kafka®).

      Примечание

      Если нужно создать топик, начинающийся с символа _, используйте Admin API Apache Kafka®. Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.

    • Количество разделов в топике.

    • Фактор репликации. Значение этого параметра не должно превышать количество брокеров в кластере. Минимальное значение: 1. Максимальное значение: 3. Значение по умолчанию:

      • для кластера из одного или двух брокеров: 1;
      • для кластера с тремя и более брокерами: 3.
  6. В блоке Настройки топика задайте настройки топика.
  7. Нажмите кнопку Создать.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы создать топик:

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

    yc managed-kafka topic create --help
    
  2. Создайте топик:

    yc managed-kafka topic create <имя_топика> \
      --cluster-name <имя_кластера> \
      --partitions <количество_разделов> \
      --replication-factor <фактор_репликации>
    

    При необходимости здесь же задайте настройки топика.

    Примечание

    Если нужно создать топик, начинающийся с символа _, используйте Admin API Apache Kafka®. Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.

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

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Добавьте ресурс yandex_mdb_kafka_topic и, при необходимости, задайте настройки топика в блоке topic_config:

    resource "yandex_mdb_kafka_topic" "<имя_топика>" {
      cluster_id         = "<идентификатор_кластера>"
      name               = "<имя_топика>"
      partitions         = <количество_разделов>
      replication_factor = <фактор_репликации>
      topic_config {
        compression_type = "<тип_сжатия>"
        flush_messages   = <максимальное_число_сообщений_в_памяти>
        ...
      }
    }
    

    Примечание

    Если нужно создать топик, начинающийся с символа _, используйте Admin API Apache Kafka®. Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.

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

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

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

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

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

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

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

    2. Если вас устраивают планируемые изменения, внесите их:

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

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Topic.create и выполните запрос, например, с помощью cURL:

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<идентификатор_кластера>/topics' \
      --data '{
                "topicSpec": {
                 "name": "<имя_топика>",
                 "partitions": "<количество_партиций>",
                 "replicationFactor": "<фактор_репликации>"
              }'
    

    Где:

    • topicSpec — настройки топика:

      • name — имя топика.

        Примечание

        Если нужно создать топик, начинающийся с символа _, используйте Admin API Apache Kafka®. Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.

      • partitions – количество разделов.

      • replicationFactor – фактор репликации.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом TopicService/Create и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/topic_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "topic_spec": {
                 "name": "<имя_топика>",
                 "partitions": {
                   "value": "<количество_партиций>"
                 },
                 "replication_factor": {
                   "value": "<фактор_репликации>"
                 }
            }
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.kafka.v1.TopicService.Create
    

    Где:

    • topic_spec — настройки топика:

      • name — имя топика.

        Примечание

        Если нужно создать топик, начинающийся с символа _, используйте Admin API Apache Kafka®. Создать такой топик с помощью интерфейсов Yandex Cloud нельзя.

      • partitions – количество разделов. Передается в виде объекта с полем value.

      • replication_factor – фактор репликации. Передается в виде объекта с полем value.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Примечание

В процессе своей работы Managed Service for Apache Kafka® может создавать служебные топики. Записывать пользовательские данные в такие топики нельзя.

Изменить настройки топикаИзменить настройки топика

Количество разделов в топиках Managed Service for Apache Kafka® нельзя уменьшить. Если в хранилище не хватает места, создать новые разделы нельзя.

Подробнее см. в разделе Минимальный размер хранилища.

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.
  2. В списке сервисов выберите Managed Service for Kafka.
  3. Нажмите на имя нужного кластера, затем выберите вкладку Топики.
  4. Нажмите значок для нужного топика и выберите пункт Редактировать.
  5. Измените базовые параметры топика:
    • Количество разделов в топике.
    • Фактор репликации. Значение этого параметра не должно превышать количество брокеров в кластере. Минимальное значение: 1. Максимальное значение: 3. Значение по умолчанию:
      • Для кластера из одного или двух брокеров: 1.
      • Для кластера с тремя и более брокерами: 3.
  6. Измените дополнительные настройки топика.
  7. Нажмите кнопку Сохранить.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы изменить настройки топика:

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

    yc managed-kafka topic update --help
    
  2. Измените настройки топика:

    yc managed-kafka topic update <имя_топика> \
      --cluster-name <имя_кластера> \
      --partitions <количество_разделов> \
      --replication-factor <фактор_репликации>
    
  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Измените значение параметров в описании ресурса yandex_mdb_kafka_topic:

    resource "yandex_mdb_kafka_topic" "<имя_топика>" {
      cluster_id         = "<идентификатор_кластера>"
      name               = "<имя_топика>"
      partitions         = <количество_разделов>
      replication_factor = <фактор_репликации>
      topic_config {
        compression_type = "<тип_сжатия>"
        flush_messages   = <максимальное_число_сообщений_в_памяти>
        ...
      }
    }
    
  3. Проверьте корректность настроек.

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

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

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

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

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

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

    2. Если вас устраивают планируемые изменения, внесите их:

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

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Topic.update и выполните запрос, например, с помощью cURL:

    Важно

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

    curl \
      --request PATCH \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<идентификатор_кластера>/topics/<имя_топика>' \
      --data '{
                "clusterId": "<идентификатор_кластера>",
                "updateMask": "topicSpec.partitions,topicSpec.replicationFactor,topicSpec.topicConfig_2_8.<настройка_1>,...,topicSpec.topicConfig_2_8.<настройка_N>,topicSpec.topicConfig_3.<настройка_1>,...,topicSpec.topicConfig_3.<настройка_N>",
                "topicSpec": {
                  "partitions": "<количество_партиций>",
                  "replicationFactor": "<фактор_репликации>",
                  "topicConfig_3": {
                    "<настройка_1_топика_Apache Kafka®_версии_3.x>": "<значение_1>",
                    "<настройка_2_топика_Apache Kafka®_версии_3.x>": "<значение_2>",
                    ...
                    "<настройка_N_топика_Apache Kafka®_версии_3.x>": "<значение_N>"
                  }
                } 
              }'
    

    Где:

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

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

    • topicSpec — новые настройки топика:

      • partitions – количество разделов.

      • replicationFactor – фактор репликации.

      • topicConfig_3 — набор настроек топика, если используется Apache Kafka® версий 3.x. Укажите каждую настройку на отдельной строке через запятую.

        Описание и возможные значения настроек см. в разделе Настройки отдельных топиков.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом TopicService/Update и выполните запрос, например, с помощью gRPCurl:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре update_mask (в виде массива строк paths[]).

    Формат перечисления настроек
    "update_mask": {
        "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
        ]
    }
    
    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/topic_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "topic_name": "<имя_топика>",
            "update_mask": {
              "paths": [
                "topic_spec.partitions",
                "topic_spec.replication_factor",
                "topic_spec.topic_config_2_8.<настройка_1>",
                ...,
                "topic_spec.topic_config_2_8.<настройка_N>",
                "topic_spec.topic_config_3.<настройка_1>",
                ...,
                "topic_spec.topic_config_3.<настройка_N>"
              ]
            },
            "topic_spec": {
                 "partitions": {
                   "value": "<количество_партиций>"
                 },
                 "replication_factor": {
                   "value": "<фактор_репликации>"
                 },
                  "topic_сonfig_3": {
                    "<настройка_1_топика_Apache Kafka®_версии_3.x>": "<значение_1>",
                    "<настройка_2_топика_Apache Kafka®_версии_3.x>": "<значение_2>",
                    ...
                    "<настройка_N_топика_Apache Kafka®_версии_3.x>": "<значение_N>"
                  }
            }
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.kafka.v1.TopicService.Update
    

    Где:

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

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

    • topic_spec — новые настройки топика:

      • partitions – количество разделов. Передается в виде объекта с полем value.

      • replication_factor – фактор репликации. Передается в виде объекта с полем value.

      • topic_config_3 — набор настроек топика, если используется Apache Kafka® версий 3.x. Укажите каждую настройку на отдельной строке через запятую.

        Описание и возможные значения настроек см. в разделе Настройки отдельных топиков.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Получить список топиков в кластереПолучить список топиков в кластере

Консоль управления
CLI
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.
  2. В списке сервисов выберите Managed Service for Kafka.
  3. Нажмите на имя нужного кластера и перейдите на вкладку Топики.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы получить список топиков, выполните следующую команду:

yc managed-kafka topic list --cluster-name <имя_кластера>
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Topic.list и выполните запрос, например, с помощью cURL:

    curl \
      --request GET \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<идентификатор_кластера>/topics'
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом TopicService/List и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/topic_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.kafka.v1.TopicService.List
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Получить детальную информацию о топикеПолучить детальную информацию о топике

Консоль управления
CLI
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.
  2. В списке сервисов выберите Managed Service for Kafka.
  3. Нажмите на имя нужного кластера и перейдите на вкладку Топики.
  4. Нажмите на имя нужного топика.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы получить детальную информацию о топике, выполните следующую команду:

yc managed-kafka topic get <имя_топика> --cluster-name <имя_кластера>
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Topic.list и выполните запрос, например, с помощью cURL:

    curl \
      --request GET \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<идентификатор_кластера>/topics/<имя_топика>'
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя топика — со списком топиков в кластере.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом TopicService/Get и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/topic_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "topic_name": "<имя_топика>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.kafka.v1.TopicService.Get
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя топика — со списком топиков в кластере.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Импортировать топик в TerraformИмпортировать топик в Terraform

С помощью импорта вы можете передать существующие в кластере топики под управление Terraform.

Terraform
  1. Укажите в конфигурационном файле Terraform топик, который необходимо импортировать:

    resource "yandex_mdb_kafka_topic" "<имя_топика>" {}
    
  2. Выполните команду для импорта топика:

    terraform import yandex_mdb_kafka_topic.<имя_топика> <идентификатор_кластера>:<имя_топика>
    

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

Перенести информацию о созданных топиках в файл состояния TerraformПеренести информацию о созданных топиках в файл состояния Terraform

При переходе на новую версию Terraform-провайдера между файлом состояния и конфигурационным файлом могут возникнуть расхождения по созданным топикам: устаревшие атрибуты topic и новые ресурсы yandex_mdb_kafka_topic. Чтобы убрать расхождения, необходимо удалить атрибуты topic и перенести информацию о созданных ресурсах yandex_mdb_kafka_topic в файл состояния .tfstate одним из двух способов.

Первый способПервый способ

Terraform
  1. Удалите информацию о кластере из файла состояния .tfstate, используя команду:

    terraform state rm yandex_mdb_kafka_cluster.<имя_кластера>
    
  2. Отредактируйте конфигурационный файл Terraform:

    • удалите атрибуты topic из ресурса yandex_mdb_kafka_cluster;
    • добавьте новые ресурсы yandex_mdb_kafka_topic.
    Пример обновленного конфигурационного файла
    resource "yandex_mdb_kafka_cluster" "this" {
      name = "terraform-test"
      environment = "PRODUCTION"
      network_id = data.yandex_vpc_network.this.id
    
      config {
        version = "3.4"
        brokers_count = 1
        zones = ["ru-central1-a"]
        kafka {
          resources {
            resource_preset_id = "s2.small"
            disk_size = 30
            disk_type_id = "network-ssd"
          }
          kafka_config {
            log_segment_bytes = 104857600
          }
        }
      }
    }
    
    resource "yandex_mdb_kafka_topic" "topic1" {
      cluster_id = yandex_mdb_kafka_cluster.this.id
      name = "topic1"
      partitions = 3
      replication_factor = 1
    }
    
    
    resource "yandex_mdb_kafka_topic" "topic2" {
      cluster_id = yandex_mdb_kafka_cluster.this.id
      name = "topic2"
      partitions = 3
      replication_factor = 1
    }
    
  3. Выполните импорт кластера и топиков:

    terraform import yandex_mdb_kafka_cluster.<имя_кластера> <идентификатор_кластера>
    terraform import yandex_mdb_kafka_topic.<имя_топика> <идентификатор_кластера>:<имя_топика>
    terraform import yandex_mdb_kafka_topic.<имя_топика> <идентификатор_кластера>:<имя_топика>
    
  4. Проверьте результат переноса, используя команду:

    terraform plan
    

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

    No changes. Infrastructure is up-to-date.
    

    Если файл состояния и конфигурации не совпадает, Terraform об этом сообщит.

Второй способВторой способ

Terraform
  1. Скачайте файл состояния .tfstate, используя команду:

    terraform state pull
    
  2. Откройте скачанный файл в любом текстовом редакторе и удалите атрибуты topic из ресурса yandex_mdb_kafka_cluster.

  3. Отправьте обновленный файл состояния, используя команду:

    terraform state push
    
  4. Отредактируйте конфигурационный файл Terraform:

    • удалите атрибуты topic из ресурса yandex_mdb_kafka_cluster;
    • добавьте новые ресурсы yandex_mdb_kafka_topic.
    Пример обновленного конфигурационного файла
    resource "yandex_mdb_kafka_cluster" "this" {
      name = "terraform-test"
      environment = "PRODUCTION"
      network_id = data.yandex_vpc_network.this.id
    
      config {
        version = "3.4"
        brokers_count = 1
        zones = ["ru-central1-a"]
        kafka {
          resources {
            resource_preset_id = "s2.small"
            disk_size = 30
            disk_type_id = "network-ssd"
          }
          kafka_config {
            log_segment_bytes = 104857600
          }
        }
      }
    }
    
    resource "yandex_mdb_kafka_topic" "topic1" {
      cluster_id = yandex_mdb_kafka_cluster.this.id
      name = "topic1"
      partitions = 3
      replication_factor = 1
    }
    
    
    resource "yandex_mdb_kafka_topic" "topic2" {
      cluster_id = yandex_mdb_kafka_cluster.this.id
      name = "topic2"
      partitions = 3
      replication_factor = 1
    }
    
  5. Выполните импорт топиков:

    terraform import yandex_mdb_kafka_topic.<имя_топика> <идентификатор_кластера>:<имя_топика>
    terraform import yandex_mdb_kafka_topic.<имя_топика> <идентификатор_кластера>:<имя_топика>
    
  6. Проверьте результат переноса, используя команду:

    terraform plan
    

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

    No changes. Infrastructure is up-to-date.
    

    Если файл состояния и конфигурации не совпадает, Terraform об этом сообщит.

Удалить топикУдалить топик

Примечание

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

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. В консоли управления перейдите в нужный каталог.
  2. В списке сервисов выберите Managed Service for Kafka.
  3. Нажмите на имя нужного кластера и перейдите на вкладку Топики.
  4. Нажмите значок для нужного топика и выберите пункт Удалить топик.
  5. В открывшемся окне нажмите кнопку Удалить.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы удалить топик:

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

    yc managed-kafka topic delete --help
    
  2. Удалите топик:

    yc managed-kafka topic delete <имя_топика> --cluster-name <имя_кластера>
    
  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Удалите ресурс yandex_mdb_kafka_topic с описанием нужного топика.

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

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

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

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

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

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

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

    2. Если вас устраивают планируемые изменения, внесите их:

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

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Topic.delete и выполните запрос, например, с помощью cURL:

    curl \
      --request DELETE \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<идентификатор_кластера>/topics/<имя_топика>'
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя топика — со списком топиков в кластере.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом TopicService/Delete и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/topic_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "topic_name": "<имя_топика>"
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.kafka.v1.TopicService.Delete
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге, а имя топика — со списком топиков в кластере.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Управление топиками через Admin API Apache Kafka®Управление топиками через Admin API Apache Kafka®

Чтобы управлять топиками через Admin API Apache Kafka®:

  1. Создайте в кластере пользователя-администратора с ролью ACCESS_ROLE_ADMIN.
  2. Управляйте топиками от имени этого пользователя с помощью запросов к Admin API Apache Kafka®. О работе с Admin API читайте в документации выбранного языка программирования.

Подробнее о работе с Admin API и о действующих ограничениях читайте в разделе Управление топиками и разделами и в документации Apache Kafka®.

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

Предыдущая
Примеры кода
Следующая
Управление пользователями
Проект Яндекса
© 2025 ООО «Яндекс.Облако»