Skip to content

mws_mkafka_topic (Resource)

Топик — это логический поток сообщений, который создается пользователем в кластере и обеспечивает группировку сообщений по темам

Пример использования

terraform
resource "mws_vpc_network" "network" {
  network = var.network_name
}

resource "mws_vpc_subnet" "subnet_a" {
  subnet  = "${var.subnet_name}-a"
  network = mws_vpc_network.network.network
  cidr    = var.subnet_cidr_a
}

resource "mws_vpc_subnet" "subnet_b" {
  subnet  = "${var.subnet_name}-b"
  network = mws_vpc_network.network.network
  cidr    = var.subnet_cidr_b
}

resource "mws_vpc_address" "broker_addr_1" {
  address = "${var.kafka_name}-broker-addr-1"
  network = mws_vpc_network.network.network
  subnet  = mws_vpc_subnet.subnet_a.metadata.id
}

resource "mws_vpc_address" "broker_addr_2" {
  address = "${var.kafka_name}-broker-addr-2"
  network = mws_vpc_network.network.network
  subnet  = mws_vpc_subnet.subnet_b.metadata.id
}

resource "mws_vpc_address" "broker_addr_3" {
  address = "${var.kafka_name}-broker-addr-3"
  network = mws_vpc_network.network.network
  subnet  = mws_vpc_subnet.subnet_b.metadata.id
}

resource "mws_mkafka_cluster" "example" {
  cluster = var.kafka_name
  version = "4.0"

  metadata = {
    display_name = "Example Kafka Cluster"
    description  = "Managed Kafka cluster example with VPC endpoints"
  }

  active = true

  endpoints = [
    {
      name    = "vpc-endpoint"
      network = mws_vpc_network.network.metadata.id
      broker_addresses = [
        { ref = mws_vpc_address.broker_addr_1.id },
        { ref = mws_vpc_address.broker_addr_2.id },
        { ref = mws_vpc_address.broker_addr_3.id }
      ]
    }
  ]

  instances = {
    broker = {
      vm_type = "compute/vmTypes/gen-2-4"
      disk = {
        size = "10Gb"
        type = "NETWORK_STANDARD_SSD"
      }
      allocation = [
        {
          zone  = "ru-central1-b"
          count = 3
        }
      ]
    }
    controller = {
      vm_type = "compute/vmTypes/gen-2-4"
      disk = {
        size = "10Gb"
        type = "NETWORK_STANDARD_SSD"
      }
      allocation = [
        {
          zone  = "ru-central1-b"
          count = 3
        }
      ]
    }
  }

  maintenance_window = {
    weekly = {
      days = ["TUESDAY"]
      hour = 4
    }
  }
}

resource "mws_mkafka_topic" "example" {
  cluster = mws_mkafka_cluster.example.cluster
  topic   = var.topic_name

  metadata = {
    display_name = "Example Kafka Topic"
    description  = "A sample Kafka topic with custom configuration"
  }

  partitions         = 6
  replication_factor = 3

  config = {
    "cleanup.policy" = "compact,delete"
    "retention.ms"   = "604800000"  # 7 days
    "segment.bytes"  = "1073741824" # 1GB
  }
}

variable "network_name" {
  type        = string
  default     = "kafka-vpc-network"
  description = "VPC network name"
}

variable "subnet_name" {
  type        = string
  default     = "kafka-subnet"
  description = "Base name for subnets"
}

variable "subnet_cidr_a" {
  type        = string
  default     = "192.168.1.0/24"
  description = "CIDR for subnet A"
}

variable "subnet_cidr_b" {
  type        = string
  default     = "192.168.2.0/24"
  description = "CIDR for subnet B"
}

variable "kafka_name" {
  type        = string
  default     = "kafka-cluster"
  description = "Kafka cluster name"
}

variable "topic_name" {
  type        = string
  default     = "example-topic"
  description = "Kafka topic name"
}

Schema

Required

  • cluster (String) Название или идентификатор кластера.
  • topic (String) Название топика.

Optional

  • config (String) Дополнительные параметры.
  • kind (String)
  • metadata (Attributes) (see below for nested schema)
  • partitions (Number) Количество партиций.
  • project (String) Путь к проекту
  • replication_factor (Number) Фактор репликации.
  • timeouts (Attributes) (see below for nested schema)

Read-Only

Nested Schema for metadata

Optional:

  • description (String) Описание ресурса.
  • display_name (String) Отображаемое имя. Необязательное поле, можно свободно задавать и изменять для удобства организации ресурсов.

Read-Only:

  • create_time (String) Дата создания объекта.
  • delete_time (String) Время запроса на удаление ресурса (не фактическое время удаления).
  • id (String) ссылка на типизированный референс
  • purge_time (String)
  • usages (Attributes List) Связи с другими ресурсами. В зависимости от типа связи, операции над ресурсом могут быть ограничены. (see below for nested schema)

Nested Schema for metadata.usages

Read-Only:

  • name (String) Имя связи, требуется для модификации коллекции
  • resource (String) ссылка на ресурс
  • usage_type (String) Тип связи. Помимо стандартных own и use могут быть добавлены специализированные типы для конкретных сервисов

Nested Schema for timeouts

Optional:

  • create (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
  • delete (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
  • update (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).

Nested Schema for status

Read-Only:

Nested Schema for status.ready

Read-Only:

  • message (String) Описание статуса
  • state (String) Состояние ресурса