# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities
from . import outputs
from ._inputs import *

__all__ = ['TopicArgs', 'Topic']

@pulumi.input_type
class TopicArgs:
    def __init__(__self__, *,
                 project_id: pulumi.Input[builtins.str],
                 shard_count: pulumi.Input[builtins.int],
                 topic_name: pulumi.Input[builtins.str],
                 allow_consume: Optional[pulumi.Input[builtins.bool]] = None,
                 archive_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 auto_split: Optional[pulumi.Input[builtins.bool]] = None,
                 cold_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 enable_hot_ttl: Optional[pulumi.Input[builtins.bool]] = None,
                 enable_tracking: Optional[pulumi.Input[builtins.bool]] = None,
                 hot_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 log_public_ip: Optional[pulumi.Input[builtins.bool]] = None,
                 max_split_shard: Optional[pulumi.Input[builtins.int]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['TopicTagArgs']]]] = None,
                 time_format: Optional[pulumi.Input[builtins.str]] = None,
                 time_key: Optional[pulumi.Input[builtins.str]] = None,
                 ttl: Optional[pulumi.Input[builtins.int]] = None):
        """
        The set of arguments for constructing a Topic resource.
        :param pulumi.Input[builtins.str] project_id: 日志主题所属的日志项目 ID。
        :param pulumi.Input[builtins.int] shard_count: 日志分区的数量，默认创建 1 个分区，取值范围为 1～10。 每个分区提供的写入能力为 5MiB/s、500 次/s，读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区，创建后暂不支持修改分区数量。
        :param pulumi.Input[builtins.str] topic_name: 日志主题名称。
        :param pulumi.Input[builtins.bool] allow_consume: 指定日志主题是否已开启了 Kafka 协议消费功能。true：已开启。false：未开启。
        :param pulumi.Input[builtins.int] archive_ttl: 归档存储时长。该时长取值范围为 60~3650。满足如下任一条件时，可实现归档存储。标准存储时长 30 天及以上。标准存储时长 7 天及以上且低频存储时长 30 天及以上。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] auto_split: 是否开启分区的自动分裂功能。true：当写入的数据量连续 5 分钟超过已有分区服务能力时，日志服务会根据数据量自动分裂分区以满足业务需求，但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。false：不开启分区的自动分裂。
        :param pulumi.Input[builtins.int] cold_ttl: 低频存储时长。该时长取值范围为 30~3650。标准存储时长 7 天及以上可实现低频存储。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.str] description: 日志主题描述信息。不支持 <>、'、\\、\\、所有 emoji 表情符号。长度为 0~64 个字符。
        :param pulumi.Input[builtins.bool] enable_hot_ttl: 是否开启分层存储。开启后，日志服务支持标准存储、低频存储和归档存储。设置 HotTtl、ArchiveTtl、ColdTtl 后，如果数据存储时间超过对应时长，那么数据会自动沉降至低频存储、归档存储进行后续保存，直到日志采集到服务端的总时长达到 Ttl 时，被后端服务自动清理。
        :param pulumi.Input[builtins.bool] enable_tracking: 是否开启 WebTracking 功能，开启后，可以通过 WebTracking 快速采集前端埋点数据。true：开启 WebTracking功能。false：（默认）关闭 WebTracking 功能。为日志主题开启 Web Tracking 后，通过 API 接口 WebTracks 写入数据时无需经过鉴权，相当于面向公网开放了匿名写入权限，可能产生脏数据。
        :param pulumi.Input[builtins.int] hot_ttl: 标准存储时长。该时长默认为 30 天，取值范围为 7~3650。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] log_public_ip: 是否开启记录外网 IP 功能。默认为开启状态。开启后日志服务会自动在日志内容中添加以下元数据字段。**tag****client_ip**：日志来源设备的公网 IP 地址。使用日志服务的私网域名写入日志数据时，则记录私网 IP 地址。**tag****receive_time**：日志达到服务端的时间，格式为 10 位的 Unixtime 时间戳。
        :param pulumi.Input[builtins.int] max_split_shard: 分区的最大分裂数，即分区分裂后，所有分区的最大数量。取值范围为 1~256，默认为 256。仅在开启自动分裂日志分区，即 AutoSplit 为 true 时必选。MaxSplitShard 必须大于指定的 ShardCount，否则日志服务无法自动分裂分区。
        :param pulumi.Input[builtins.str] time_format: 时间格式
        :param pulumi.Input[builtins.str] time_key: 时间字段名
        :param pulumi.Input[builtins.int] ttl: 日志在日志服务中的总保存时间，超过指定的日志存储时长后，此日志主题中的过期日志会被自动清除。单位为天，默认为 30 天。取值范围为 1～3650，指定为 3650 天表示永久存储。
        """
        pulumi.set(__self__, "project_id", project_id)
        pulumi.set(__self__, "shard_count", shard_count)
        pulumi.set(__self__, "topic_name", topic_name)
        if allow_consume is not None:
            pulumi.set(__self__, "allow_consume", allow_consume)
        if archive_ttl is not None:
            pulumi.set(__self__, "archive_ttl", archive_ttl)
        if auto_split is not None:
            pulumi.set(__self__, "auto_split", auto_split)
        if cold_ttl is not None:
            pulumi.set(__self__, "cold_ttl", cold_ttl)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if enable_hot_ttl is not None:
            pulumi.set(__self__, "enable_hot_ttl", enable_hot_ttl)
        if enable_tracking is not None:
            pulumi.set(__self__, "enable_tracking", enable_tracking)
        if hot_ttl is not None:
            pulumi.set(__self__, "hot_ttl", hot_ttl)
        if log_public_ip is not None:
            pulumi.set(__self__, "log_public_ip", log_public_ip)
        if max_split_shard is not None:
            pulumi.set(__self__, "max_split_shard", max_split_shard)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if time_format is not None:
            pulumi.set(__self__, "time_format", time_format)
        if time_key is not None:
            pulumi.set(__self__, "time_key", time_key)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[builtins.str]:
        """
        日志主题所属的日志项目 ID。
        """
        return pulumi.get(self, "project_id")

    @project_id.setter
    def project_id(self, value: pulumi.Input[builtins.str]):
        pulumi.set(self, "project_id", value)

    @property
    @pulumi.getter(name="shardCount")
    def shard_count(self) -> pulumi.Input[builtins.int]:
        """
        日志分区的数量，默认创建 1 个分区，取值范围为 1～10。 每个分区提供的写入能力为 5MiB/s、500 次/s，读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区，创建后暂不支持修改分区数量。
        """
        return pulumi.get(self, "shard_count")

    @shard_count.setter
    def shard_count(self, value: pulumi.Input[builtins.int]):
        pulumi.set(self, "shard_count", value)

    @property
    @pulumi.getter(name="topicName")
    def topic_name(self) -> pulumi.Input[builtins.str]:
        """
        日志主题名称。
        """
        return pulumi.get(self, "topic_name")

    @topic_name.setter
    def topic_name(self, value: pulumi.Input[builtins.str]):
        pulumi.set(self, "topic_name", value)

    @property
    @pulumi.getter(name="allowConsume")
    def allow_consume(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        指定日志主题是否已开启了 Kafka 协议消费功能。true：已开启。false：未开启。
        """
        return pulumi.get(self, "allow_consume")

    @allow_consume.setter
    def allow_consume(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "allow_consume", value)

    @property
    @pulumi.getter(name="archiveTtl")
    def archive_ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        归档存储时长。该时长取值范围为 60~3650。满足如下任一条件时，可实现归档存储。标准存储时长 30 天及以上。标准存储时长 7 天及以上且低频存储时长 30 天及以上。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "archive_ttl")

    @archive_ttl.setter
    def archive_ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "archive_ttl", value)

    @property
    @pulumi.getter(name="autoSplit")
    def auto_split(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启分区的自动分裂功能。true：当写入的数据量连续 5 分钟超过已有分区服务能力时，日志服务会根据数据量自动分裂分区以满足业务需求，但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。false：不开启分区的自动分裂。
        """
        return pulumi.get(self, "auto_split")

    @auto_split.setter
    def auto_split(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "auto_split", value)

    @property
    @pulumi.getter(name="coldTtl")
    def cold_ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        低频存储时长。该时长取值范围为 30~3650。标准存储时长 7 天及以上可实现低频存储。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "cold_ttl")

    @cold_ttl.setter
    def cold_ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "cold_ttl", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        日志主题描述信息。不支持 <>、'、\\、\\、所有 emoji 表情符号。长度为 0~64 个字符。
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter(name="enableHotTtl")
    def enable_hot_ttl(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启分层存储。开启后，日志服务支持标准存储、低频存储和归档存储。设置 HotTtl、ArchiveTtl、ColdTtl 后，如果数据存储时间超过对应时长，那么数据会自动沉降至低频存储、归档存储进行后续保存，直到日志采集到服务端的总时长达到 Ttl 时，被后端服务自动清理。
        """
        return pulumi.get(self, "enable_hot_ttl")

    @enable_hot_ttl.setter
    def enable_hot_ttl(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "enable_hot_ttl", value)

    @property
    @pulumi.getter(name="enableTracking")
    def enable_tracking(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启 WebTracking 功能，开启后，可以通过 WebTracking 快速采集前端埋点数据。true：开启 WebTracking功能。false：（默认）关闭 WebTracking 功能。为日志主题开启 Web Tracking 后，通过 API 接口 WebTracks 写入数据时无需经过鉴权，相当于面向公网开放了匿名写入权限，可能产生脏数据。
        """
        return pulumi.get(self, "enable_tracking")

    @enable_tracking.setter
    def enable_tracking(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "enable_tracking", value)

    @property
    @pulumi.getter(name="hotTtl")
    def hot_ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        标准存储时长。该时长默认为 30 天，取值范围为 7~3650。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "hot_ttl")

    @hot_ttl.setter
    def hot_ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "hot_ttl", value)

    @property
    @pulumi.getter(name="logPublicIp")
    def log_public_ip(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启记录外网 IP 功能。默认为开启状态。开启后日志服务会自动在日志内容中添加以下元数据字段。**tag****client_ip**：日志来源设备的公网 IP 地址。使用日志服务的私网域名写入日志数据时，则记录私网 IP 地址。**tag****receive_time**：日志达到服务端的时间，格式为 10 位的 Unixtime 时间戳。
        """
        return pulumi.get(self, "log_public_ip")

    @log_public_ip.setter
    def log_public_ip(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "log_public_ip", value)

    @property
    @pulumi.getter(name="maxSplitShard")
    def max_split_shard(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        分区的最大分裂数，即分区分裂后，所有分区的最大数量。取值范围为 1~256，默认为 256。仅在开启自动分裂日志分区，即 AutoSplit 为 true 时必选。MaxSplitShard 必须大于指定的 ShardCount，否则日志服务无法自动分裂分区。
        """
        return pulumi.get(self, "max_split_shard")

    @max_split_shard.setter
    def max_split_shard(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "max_split_shard", value)

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['TopicTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['TopicTagArgs']]]]):
        pulumi.set(self, "tags", value)

    @property
    @pulumi.getter(name="timeFormat")
    def time_format(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        时间格式
        """
        return pulumi.get(self, "time_format")

    @time_format.setter
    def time_format(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "time_format", value)

    @property
    @pulumi.getter(name="timeKey")
    def time_key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        时间字段名
        """
        return pulumi.get(self, "time_key")

    @time_key.setter
    def time_key(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "time_key", value)

    @property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        日志在日志服务中的总保存时间，超过指定的日志存储时长后，此日志主题中的过期日志会被自动清除。单位为天，默认为 30 天。取值范围为 1～3650，指定为 3650 天表示永久存储。
        """
        return pulumi.get(self, "ttl")

    @ttl.setter
    def ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "ttl", value)


@pulumi.input_type
class _TopicState:
    def __init__(__self__, *,
                 allow_consume: Optional[pulumi.Input[builtins.bool]] = None,
                 archive_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 auto_split: Optional[pulumi.Input[builtins.bool]] = None,
                 cold_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 consume_topic: Optional[pulumi.Input[builtins.str]] = None,
                 created_time: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 enable_hot_ttl: Optional[pulumi.Input[builtins.bool]] = None,
                 enable_tracking: Optional[pulumi.Input[builtins.bool]] = None,
                 hot_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 log_public_ip: Optional[pulumi.Input[builtins.bool]] = None,
                 max_split_shard: Optional[pulumi.Input[builtins.int]] = None,
                 project_id: Optional[pulumi.Input[builtins.str]] = None,
                 shard_count: Optional[pulumi.Input[builtins.int]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['TopicTagArgs']]]] = None,
                 time_format: Optional[pulumi.Input[builtins.str]] = None,
                 time_key: Optional[pulumi.Input[builtins.str]] = None,
                 topic_id: Optional[pulumi.Input[builtins.str]] = None,
                 topic_name: Optional[pulumi.Input[builtins.str]] = None,
                 ttl: Optional[pulumi.Input[builtins.int]] = None,
                 updated_time: Optional[pulumi.Input[builtins.str]] = None):
        """
        Input properties used for looking up and filtering Topic resources.
        :param pulumi.Input[builtins.bool] allow_consume: 指定日志主题是否已开启了 Kafka 协议消费功能。true：已开启。false：未开启。
        :param pulumi.Input[builtins.int] archive_ttl: 归档存储时长。该时长取值范围为 60~3650。满足如下任一条件时，可实现归档存储。标准存储时长 30 天及以上。标准存储时长 7 天及以上且低频存储时长 30 天及以上。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] auto_split: 是否开启分区的自动分裂功能。true：当写入的数据量连续 5 分钟超过已有分区服务能力时，日志服务会根据数据量自动分裂分区以满足业务需求，但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。false：不开启分区的自动分裂。
        :param pulumi.Input[builtins.int] cold_ttl: 低频存储时长。该时长取值范围为 30~3650。标准存储时长 7 天及以上可实现低频存储。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.str] consume_topic: Kafka 协议消费主题 ID，格式为 out+日志主题 ID。通过 Kafka 协议消费此日志主题中的日志数据时，Topic 应指定为此 ID。
        :param pulumi.Input[builtins.str] created_time: 日志主题创建时间。
        :param pulumi.Input[builtins.str] description: 日志主题描述信息。不支持 <>、'、\\、\\、所有 emoji 表情符号。长度为 0~64 个字符。
        :param pulumi.Input[builtins.bool] enable_hot_ttl: 是否开启分层存储。开启后，日志服务支持标准存储、低频存储和归档存储。设置 HotTtl、ArchiveTtl、ColdTtl 后，如果数据存储时间超过对应时长，那么数据会自动沉降至低频存储、归档存储进行后续保存，直到日志采集到服务端的总时长达到 Ttl 时，被后端服务自动清理。
        :param pulumi.Input[builtins.bool] enable_tracking: 是否开启 WebTracking 功能，开启后，可以通过 WebTracking 快速采集前端埋点数据。true：开启 WebTracking功能。false：（默认）关闭 WebTracking 功能。为日志主题开启 Web Tracking 后，通过 API 接口 WebTracks 写入数据时无需经过鉴权，相当于面向公网开放了匿名写入权限，可能产生脏数据。
        :param pulumi.Input[builtins.int] hot_ttl: 标准存储时长。该时长默认为 30 天，取值范围为 7~3650。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] log_public_ip: 是否开启记录外网 IP 功能。默认为开启状态。开启后日志服务会自动在日志内容中添加以下元数据字段。**tag****client_ip**：日志来源设备的公网 IP 地址。使用日志服务的私网域名写入日志数据时，则记录私网 IP 地址。**tag****receive_time**：日志达到服务端的时间，格式为 10 位的 Unixtime 时间戳。
        :param pulumi.Input[builtins.int] max_split_shard: 分区的最大分裂数，即分区分裂后，所有分区的最大数量。取值范围为 1~256，默认为 256。仅在开启自动分裂日志分区，即 AutoSplit 为 true 时必选。MaxSplitShard 必须大于指定的 ShardCount，否则日志服务无法自动分裂分区。
        :param pulumi.Input[builtins.str] project_id: 日志主题所属的日志项目 ID。
        :param pulumi.Input[builtins.int] shard_count: 日志分区的数量，默认创建 1 个分区，取值范围为 1～10。 每个分区提供的写入能力为 5MiB/s、500 次/s，读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区，创建后暂不支持修改分区数量。
        :param pulumi.Input[builtins.str] time_format: 时间格式
        :param pulumi.Input[builtins.str] time_key: 时间字段名
        :param pulumi.Input[builtins.str] topic_id: 日志主题 ID。
        :param pulumi.Input[builtins.str] topic_name: 日志主题名称。
        :param pulumi.Input[builtins.int] ttl: 日志在日志服务中的总保存时间，超过指定的日志存储时长后，此日志主题中的过期日志会被自动清除。单位为天，默认为 30 天。取值范围为 1～3650，指定为 3650 天表示永久存储。
        :param pulumi.Input[builtins.str] updated_time: 日志主题修改时间。
        """
        if allow_consume is not None:
            pulumi.set(__self__, "allow_consume", allow_consume)
        if archive_ttl is not None:
            pulumi.set(__self__, "archive_ttl", archive_ttl)
        if auto_split is not None:
            pulumi.set(__self__, "auto_split", auto_split)
        if cold_ttl is not None:
            pulumi.set(__self__, "cold_ttl", cold_ttl)
        if consume_topic is not None:
            pulumi.set(__self__, "consume_topic", consume_topic)
        if created_time is not None:
            pulumi.set(__self__, "created_time", created_time)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if enable_hot_ttl is not None:
            pulumi.set(__self__, "enable_hot_ttl", enable_hot_ttl)
        if enable_tracking is not None:
            pulumi.set(__self__, "enable_tracking", enable_tracking)
        if hot_ttl is not None:
            pulumi.set(__self__, "hot_ttl", hot_ttl)
        if log_public_ip is not None:
            pulumi.set(__self__, "log_public_ip", log_public_ip)
        if max_split_shard is not None:
            pulumi.set(__self__, "max_split_shard", max_split_shard)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)
        if shard_count is not None:
            pulumi.set(__self__, "shard_count", shard_count)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if time_format is not None:
            pulumi.set(__self__, "time_format", time_format)
        if time_key is not None:
            pulumi.set(__self__, "time_key", time_key)
        if topic_id is not None:
            pulumi.set(__self__, "topic_id", topic_id)
        if topic_name is not None:
            pulumi.set(__self__, "topic_name", topic_name)
        if ttl is not None:
            pulumi.set(__self__, "ttl", ttl)
        if updated_time is not None:
            pulumi.set(__self__, "updated_time", updated_time)

    @property
    @pulumi.getter(name="allowConsume")
    def allow_consume(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        指定日志主题是否已开启了 Kafka 协议消费功能。true：已开启。false：未开启。
        """
        return pulumi.get(self, "allow_consume")

    @allow_consume.setter
    def allow_consume(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "allow_consume", value)

    @property
    @pulumi.getter(name="archiveTtl")
    def archive_ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        归档存储时长。该时长取值范围为 60~3650。满足如下任一条件时，可实现归档存储。标准存储时长 30 天及以上。标准存储时长 7 天及以上且低频存储时长 30 天及以上。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "archive_ttl")

    @archive_ttl.setter
    def archive_ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "archive_ttl", value)

    @property
    @pulumi.getter(name="autoSplit")
    def auto_split(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启分区的自动分裂功能。true：当写入的数据量连续 5 分钟超过已有分区服务能力时，日志服务会根据数据量自动分裂分区以满足业务需求，但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。false：不开启分区的自动分裂。
        """
        return pulumi.get(self, "auto_split")

    @auto_split.setter
    def auto_split(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "auto_split", value)

    @property
    @pulumi.getter(name="coldTtl")
    def cold_ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        低频存储时长。该时长取值范围为 30~3650。标准存储时长 7 天及以上可实现低频存储。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "cold_ttl")

    @cold_ttl.setter
    def cold_ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "cold_ttl", value)

    @property
    @pulumi.getter(name="consumeTopic")
    def consume_topic(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Kafka 协议消费主题 ID，格式为 out+日志主题 ID。通过 Kafka 协议消费此日志主题中的日志数据时，Topic 应指定为此 ID。
        """
        return pulumi.get(self, "consume_topic")

    @consume_topic.setter
    def consume_topic(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "consume_topic", value)

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        日志主题创建时间。
        """
        return pulumi.get(self, "created_time")

    @created_time.setter
    def created_time(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "created_time", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        日志主题描述信息。不支持 <>、'、\\、\\、所有 emoji 表情符号。长度为 0~64 个字符。
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter(name="enableHotTtl")
    def enable_hot_ttl(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启分层存储。开启后，日志服务支持标准存储、低频存储和归档存储。设置 HotTtl、ArchiveTtl、ColdTtl 后，如果数据存储时间超过对应时长，那么数据会自动沉降至低频存储、归档存储进行后续保存，直到日志采集到服务端的总时长达到 Ttl 时，被后端服务自动清理。
        """
        return pulumi.get(self, "enable_hot_ttl")

    @enable_hot_ttl.setter
    def enable_hot_ttl(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "enable_hot_ttl", value)

    @property
    @pulumi.getter(name="enableTracking")
    def enable_tracking(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启 WebTracking 功能，开启后，可以通过 WebTracking 快速采集前端埋点数据。true：开启 WebTracking功能。false：（默认）关闭 WebTracking 功能。为日志主题开启 Web Tracking 后，通过 API 接口 WebTracks 写入数据时无需经过鉴权，相当于面向公网开放了匿名写入权限，可能产生脏数据。
        """
        return pulumi.get(self, "enable_tracking")

    @enable_tracking.setter
    def enable_tracking(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "enable_tracking", value)

    @property
    @pulumi.getter(name="hotTtl")
    def hot_ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        标准存储时长。该时长默认为 30 天，取值范围为 7~3650。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "hot_ttl")

    @hot_ttl.setter
    def hot_ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "hot_ttl", value)

    @property
    @pulumi.getter(name="logPublicIp")
    def log_public_ip(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启记录外网 IP 功能。默认为开启状态。开启后日志服务会自动在日志内容中添加以下元数据字段。**tag****client_ip**：日志来源设备的公网 IP 地址。使用日志服务的私网域名写入日志数据时，则记录私网 IP 地址。**tag****receive_time**：日志达到服务端的时间，格式为 10 位的 Unixtime 时间戳。
        """
        return pulumi.get(self, "log_public_ip")

    @log_public_ip.setter
    def log_public_ip(self, value: Optional[pulumi.Input[builtins.bool]]):
        pulumi.set(self, "log_public_ip", value)

    @property
    @pulumi.getter(name="maxSplitShard")
    def max_split_shard(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        分区的最大分裂数，即分区分裂后，所有分区的最大数量。取值范围为 1~256，默认为 256。仅在开启自动分裂日志分区，即 AutoSplit 为 true 时必选。MaxSplitShard 必须大于指定的 ShardCount，否则日志服务无法自动分裂分区。
        """
        return pulumi.get(self, "max_split_shard")

    @max_split_shard.setter
    def max_split_shard(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "max_split_shard", value)

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        日志主题所属的日志项目 ID。
        """
        return pulumi.get(self, "project_id")

    @project_id.setter
    def project_id(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "project_id", value)

    @property
    @pulumi.getter(name="shardCount")
    def shard_count(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        日志分区的数量，默认创建 1 个分区，取值范围为 1～10。 每个分区提供的写入能力为 5MiB/s、500 次/s，读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区，创建后暂不支持修改分区数量。
        """
        return pulumi.get(self, "shard_count")

    @shard_count.setter
    def shard_count(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "shard_count", value)

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['TopicTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['TopicTagArgs']]]]):
        pulumi.set(self, "tags", value)

    @property
    @pulumi.getter(name="timeFormat")
    def time_format(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        时间格式
        """
        return pulumi.get(self, "time_format")

    @time_format.setter
    def time_format(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "time_format", value)

    @property
    @pulumi.getter(name="timeKey")
    def time_key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        时间字段名
        """
        return pulumi.get(self, "time_key")

    @time_key.setter
    def time_key(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "time_key", value)

    @property
    @pulumi.getter(name="topicId")
    def topic_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        日志主题 ID。
        """
        return pulumi.get(self, "topic_id")

    @topic_id.setter
    def topic_id(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "topic_id", value)

    @property
    @pulumi.getter(name="topicName")
    def topic_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        日志主题名称。
        """
        return pulumi.get(self, "topic_name")

    @topic_name.setter
    def topic_name(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "topic_name", value)

    @property
    @pulumi.getter
    def ttl(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        日志在日志服务中的总保存时间，超过指定的日志存储时长后，此日志主题中的过期日志会被自动清除。单位为天，默认为 30 天。取值范围为 1～3650，指定为 3650 天表示永久存储。
        """
        return pulumi.get(self, "ttl")

    @ttl.setter
    def ttl(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "ttl", value)

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        日志主题修改时间。
        """
        return pulumi.get(self, "updated_time")

    @updated_time.setter
    def updated_time(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "updated_time", value)


@pulumi.type_token("bytepluscc:tls/topic:Topic")
class Topic(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 allow_consume: Optional[pulumi.Input[builtins.bool]] = None,
                 archive_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 auto_split: Optional[pulumi.Input[builtins.bool]] = None,
                 cold_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 enable_hot_ttl: Optional[pulumi.Input[builtins.bool]] = None,
                 enable_tracking: Optional[pulumi.Input[builtins.bool]] = None,
                 hot_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 log_public_ip: Optional[pulumi.Input[builtins.bool]] = None,
                 max_split_shard: Optional[pulumi.Input[builtins.int]] = None,
                 project_id: Optional[pulumi.Input[builtins.str]] = None,
                 shard_count: Optional[pulumi.Input[builtins.int]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['TopicTagArgs', 'TopicTagArgsDict']]]]] = None,
                 time_format: Optional[pulumi.Input[builtins.str]] = None,
                 time_key: Optional[pulumi.Input[builtins.str]] = None,
                 topic_name: Optional[pulumi.Input[builtins.str]] = None,
                 ttl: Optional[pulumi.Input[builtins.int]] = None,
                 __props__=None):
        """
        日志主题是日志服务进行日志管理的基本单位，日志接入、检索分析、消费等功能都是基于日志主题的粒度进行操作。

        ## Example Usage

        ```python
        import pulumi
        import pulumi_bytepluscc as bytepluscc

        tls_topic_demo = bytepluscc.tls.Topic("TlsTopicDemo",
            ttl=187,
            hot_ttl=8,
            cold_ttl=79,
            archive_ttl=100,
            shard_count=2,
            auto_split=True,
            max_split_shard=256,
            tags=[{
                "key": "env",
                "value": "test",
            }],
            time_key="time",
            time_format="%Y-%m-%d %H:%M:%S",
            log_public_ip=False,
            topic_name="ccapi-test",
            description="test",
            project_id="c6fef4c1-041f-434e-b0f4-d5e9*****",
            enable_hot_ttl=False,
            allow_consume=False)
        ```

        ## Import

        ```sh
        $ pulumi import bytepluscc:tls/topic:Topic example "topic_id"
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.bool] allow_consume: 指定日志主题是否已开启了 Kafka 协议消费功能。true：已开启。false：未开启。
        :param pulumi.Input[builtins.int] archive_ttl: 归档存储时长。该时长取值范围为 60~3650。满足如下任一条件时，可实现归档存储。标准存储时长 30 天及以上。标准存储时长 7 天及以上且低频存储时长 30 天及以上。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] auto_split: 是否开启分区的自动分裂功能。true：当写入的数据量连续 5 分钟超过已有分区服务能力时，日志服务会根据数据量自动分裂分区以满足业务需求，但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。false：不开启分区的自动分裂。
        :param pulumi.Input[builtins.int] cold_ttl: 低频存储时长。该时长取值范围为 30~3650。标准存储时长 7 天及以上可实现低频存储。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.str] description: 日志主题描述信息。不支持 <>、'、\\、\\、所有 emoji 表情符号。长度为 0~64 个字符。
        :param pulumi.Input[builtins.bool] enable_hot_ttl: 是否开启分层存储。开启后，日志服务支持标准存储、低频存储和归档存储。设置 HotTtl、ArchiveTtl、ColdTtl 后，如果数据存储时间超过对应时长，那么数据会自动沉降至低频存储、归档存储进行后续保存，直到日志采集到服务端的总时长达到 Ttl 时，被后端服务自动清理。
        :param pulumi.Input[builtins.bool] enable_tracking: 是否开启 WebTracking 功能，开启后，可以通过 WebTracking 快速采集前端埋点数据。true：开启 WebTracking功能。false：（默认）关闭 WebTracking 功能。为日志主题开启 Web Tracking 后，通过 API 接口 WebTracks 写入数据时无需经过鉴权，相当于面向公网开放了匿名写入权限，可能产生脏数据。
        :param pulumi.Input[builtins.int] hot_ttl: 标准存储时长。该时长默认为 30 天，取值范围为 7~3650。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] log_public_ip: 是否开启记录外网 IP 功能。默认为开启状态。开启后日志服务会自动在日志内容中添加以下元数据字段。**tag****client_ip**：日志来源设备的公网 IP 地址。使用日志服务的私网域名写入日志数据时，则记录私网 IP 地址。**tag****receive_time**：日志达到服务端的时间，格式为 10 位的 Unixtime 时间戳。
        :param pulumi.Input[builtins.int] max_split_shard: 分区的最大分裂数，即分区分裂后，所有分区的最大数量。取值范围为 1~256，默认为 256。仅在开启自动分裂日志分区，即 AutoSplit 为 true 时必选。MaxSplitShard 必须大于指定的 ShardCount，否则日志服务无法自动分裂分区。
        :param pulumi.Input[builtins.str] project_id: 日志主题所属的日志项目 ID。
        :param pulumi.Input[builtins.int] shard_count: 日志分区的数量，默认创建 1 个分区，取值范围为 1～10。 每个分区提供的写入能力为 5MiB/s、500 次/s，读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区，创建后暂不支持修改分区数量。
        :param pulumi.Input[builtins.str] time_format: 时间格式
        :param pulumi.Input[builtins.str] time_key: 时间字段名
        :param pulumi.Input[builtins.str] topic_name: 日志主题名称。
        :param pulumi.Input[builtins.int] ttl: 日志在日志服务中的总保存时间，超过指定的日志存储时长后，此日志主题中的过期日志会被自动清除。单位为天，默认为 30 天。取值范围为 1～3650，指定为 3650 天表示永久存储。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: TopicArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        日志主题是日志服务进行日志管理的基本单位，日志接入、检索分析、消费等功能都是基于日志主题的粒度进行操作。

        ## Example Usage

        ```python
        import pulumi
        import pulumi_bytepluscc as bytepluscc

        tls_topic_demo = bytepluscc.tls.Topic("TlsTopicDemo",
            ttl=187,
            hot_ttl=8,
            cold_ttl=79,
            archive_ttl=100,
            shard_count=2,
            auto_split=True,
            max_split_shard=256,
            tags=[{
                "key": "env",
                "value": "test",
            }],
            time_key="time",
            time_format="%Y-%m-%d %H:%M:%S",
            log_public_ip=False,
            topic_name="ccapi-test",
            description="test",
            project_id="c6fef4c1-041f-434e-b0f4-d5e9*****",
            enable_hot_ttl=False,
            allow_consume=False)
        ```

        ## Import

        ```sh
        $ pulumi import bytepluscc:tls/topic:Topic example "topic_id"
        ```

        :param str resource_name: The name of the resource.
        :param TopicArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(TopicArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 allow_consume: Optional[pulumi.Input[builtins.bool]] = None,
                 archive_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 auto_split: Optional[pulumi.Input[builtins.bool]] = None,
                 cold_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 enable_hot_ttl: Optional[pulumi.Input[builtins.bool]] = None,
                 enable_tracking: Optional[pulumi.Input[builtins.bool]] = None,
                 hot_ttl: Optional[pulumi.Input[builtins.int]] = None,
                 log_public_ip: Optional[pulumi.Input[builtins.bool]] = None,
                 max_split_shard: Optional[pulumi.Input[builtins.int]] = None,
                 project_id: Optional[pulumi.Input[builtins.str]] = None,
                 shard_count: Optional[pulumi.Input[builtins.int]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['TopicTagArgs', 'TopicTagArgsDict']]]]] = None,
                 time_format: Optional[pulumi.Input[builtins.str]] = None,
                 time_key: Optional[pulumi.Input[builtins.str]] = None,
                 topic_name: Optional[pulumi.Input[builtins.str]] = None,
                 ttl: Optional[pulumi.Input[builtins.int]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = TopicArgs.__new__(TopicArgs)

            __props__.__dict__["allow_consume"] = allow_consume
            __props__.__dict__["archive_ttl"] = archive_ttl
            __props__.__dict__["auto_split"] = auto_split
            __props__.__dict__["cold_ttl"] = cold_ttl
            __props__.__dict__["description"] = description
            __props__.__dict__["enable_hot_ttl"] = enable_hot_ttl
            __props__.__dict__["enable_tracking"] = enable_tracking
            __props__.__dict__["hot_ttl"] = hot_ttl
            __props__.__dict__["log_public_ip"] = log_public_ip
            __props__.__dict__["max_split_shard"] = max_split_shard
            if project_id is None and not opts.urn:
                raise TypeError("Missing required property 'project_id'")
            __props__.__dict__["project_id"] = project_id
            if shard_count is None and not opts.urn:
                raise TypeError("Missing required property 'shard_count'")
            __props__.__dict__["shard_count"] = shard_count
            __props__.__dict__["tags"] = tags
            __props__.__dict__["time_format"] = time_format
            __props__.__dict__["time_key"] = time_key
            if topic_name is None and not opts.urn:
                raise TypeError("Missing required property 'topic_name'")
            __props__.__dict__["topic_name"] = topic_name
            __props__.__dict__["ttl"] = ttl
            __props__.__dict__["consume_topic"] = None
            __props__.__dict__["created_time"] = None
            __props__.__dict__["topic_id"] = None
            __props__.__dict__["updated_time"] = None
        super(Topic, __self__).__init__(
            'bytepluscc:tls/topic:Topic',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            allow_consume: Optional[pulumi.Input[builtins.bool]] = None,
            archive_ttl: Optional[pulumi.Input[builtins.int]] = None,
            auto_split: Optional[pulumi.Input[builtins.bool]] = None,
            cold_ttl: Optional[pulumi.Input[builtins.int]] = None,
            consume_topic: Optional[pulumi.Input[builtins.str]] = None,
            created_time: Optional[pulumi.Input[builtins.str]] = None,
            description: Optional[pulumi.Input[builtins.str]] = None,
            enable_hot_ttl: Optional[pulumi.Input[builtins.bool]] = None,
            enable_tracking: Optional[pulumi.Input[builtins.bool]] = None,
            hot_ttl: Optional[pulumi.Input[builtins.int]] = None,
            log_public_ip: Optional[pulumi.Input[builtins.bool]] = None,
            max_split_shard: Optional[pulumi.Input[builtins.int]] = None,
            project_id: Optional[pulumi.Input[builtins.str]] = None,
            shard_count: Optional[pulumi.Input[builtins.int]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['TopicTagArgs', 'TopicTagArgsDict']]]]] = None,
            time_format: Optional[pulumi.Input[builtins.str]] = None,
            time_key: Optional[pulumi.Input[builtins.str]] = None,
            topic_id: Optional[pulumi.Input[builtins.str]] = None,
            topic_name: Optional[pulumi.Input[builtins.str]] = None,
            ttl: Optional[pulumi.Input[builtins.int]] = None,
            updated_time: Optional[pulumi.Input[builtins.str]] = None) -> 'Topic':
        """
        Get an existing Topic resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.bool] allow_consume: 指定日志主题是否已开启了 Kafka 协议消费功能。true：已开启。false：未开启。
        :param pulumi.Input[builtins.int] archive_ttl: 归档存储时长。该时长取值范围为 60~3650。满足如下任一条件时，可实现归档存储。标准存储时长 30 天及以上。标准存储时长 7 天及以上且低频存储时长 30 天及以上。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] auto_split: 是否开启分区的自动分裂功能。true：当写入的数据量连续 5 分钟超过已有分区服务能力时，日志服务会根据数据量自动分裂分区以满足业务需求，但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。false：不开启分区的自动分裂。
        :param pulumi.Input[builtins.int] cold_ttl: 低频存储时长。该时长取值范围为 30~3650。标准存储时长 7 天及以上可实现低频存储。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.str] consume_topic: Kafka 协议消费主题 ID，格式为 out+日志主题 ID。通过 Kafka 协议消费此日志主题中的日志数据时，Topic 应指定为此 ID。
        :param pulumi.Input[builtins.str] created_time: 日志主题创建时间。
        :param pulumi.Input[builtins.str] description: 日志主题描述信息。不支持 <>、'、\\、\\、所有 emoji 表情符号。长度为 0~64 个字符。
        :param pulumi.Input[builtins.bool] enable_hot_ttl: 是否开启分层存储。开启后，日志服务支持标准存储、低频存储和归档存储。设置 HotTtl、ArchiveTtl、ColdTtl 后，如果数据存储时间超过对应时长，那么数据会自动沉降至低频存储、归档存储进行后续保存，直到日志采集到服务端的总时长达到 Ttl 时，被后端服务自动清理。
        :param pulumi.Input[builtins.bool] enable_tracking: 是否开启 WebTracking 功能，开启后，可以通过 WebTracking 快速采集前端埋点数据。true：开启 WebTracking功能。false：（默认）关闭 WebTracking 功能。为日志主题开启 Web Tracking 后，通过 API 接口 WebTracks 写入数据时无需经过鉴权，相当于面向公网开放了匿名写入权限，可能产生脏数据。
        :param pulumi.Input[builtins.int] hot_ttl: 标准存储时长。该时长默认为 30 天，取值范围为 7~3650。此参数仅在 EnableHotTtl 为 true 时生效。
        :param pulumi.Input[builtins.bool] log_public_ip: 是否开启记录外网 IP 功能。默认为开启状态。开启后日志服务会自动在日志内容中添加以下元数据字段。**tag****client_ip**：日志来源设备的公网 IP 地址。使用日志服务的私网域名写入日志数据时，则记录私网 IP 地址。**tag****receive_time**：日志达到服务端的时间，格式为 10 位的 Unixtime 时间戳。
        :param pulumi.Input[builtins.int] max_split_shard: 分区的最大分裂数，即分区分裂后，所有分区的最大数量。取值范围为 1~256，默认为 256。仅在开启自动分裂日志分区，即 AutoSplit 为 true 时必选。MaxSplitShard 必须大于指定的 ShardCount，否则日志服务无法自动分裂分区。
        :param pulumi.Input[builtins.str] project_id: 日志主题所属的日志项目 ID。
        :param pulumi.Input[builtins.int] shard_count: 日志分区的数量，默认创建 1 个分区，取值范围为 1～10。 每个分区提供的写入能力为 5MiB/s、500 次/s，读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区，创建后暂不支持修改分区数量。
        :param pulumi.Input[builtins.str] time_format: 时间格式
        :param pulumi.Input[builtins.str] time_key: 时间字段名
        :param pulumi.Input[builtins.str] topic_id: 日志主题 ID。
        :param pulumi.Input[builtins.str] topic_name: 日志主题名称。
        :param pulumi.Input[builtins.int] ttl: 日志在日志服务中的总保存时间，超过指定的日志存储时长后，此日志主题中的过期日志会被自动清除。单位为天，默认为 30 天。取值范围为 1～3650，指定为 3650 天表示永久存储。
        :param pulumi.Input[builtins.str] updated_time: 日志主题修改时间。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _TopicState.__new__(_TopicState)

        __props__.__dict__["allow_consume"] = allow_consume
        __props__.__dict__["archive_ttl"] = archive_ttl
        __props__.__dict__["auto_split"] = auto_split
        __props__.__dict__["cold_ttl"] = cold_ttl
        __props__.__dict__["consume_topic"] = consume_topic
        __props__.__dict__["created_time"] = created_time
        __props__.__dict__["description"] = description
        __props__.__dict__["enable_hot_ttl"] = enable_hot_ttl
        __props__.__dict__["enable_tracking"] = enable_tracking
        __props__.__dict__["hot_ttl"] = hot_ttl
        __props__.__dict__["log_public_ip"] = log_public_ip
        __props__.__dict__["max_split_shard"] = max_split_shard
        __props__.__dict__["project_id"] = project_id
        __props__.__dict__["shard_count"] = shard_count
        __props__.__dict__["tags"] = tags
        __props__.__dict__["time_format"] = time_format
        __props__.__dict__["time_key"] = time_key
        __props__.__dict__["topic_id"] = topic_id
        __props__.__dict__["topic_name"] = topic_name
        __props__.__dict__["ttl"] = ttl
        __props__.__dict__["updated_time"] = updated_time
        return Topic(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="allowConsume")
    def allow_consume(self) -> pulumi.Output[builtins.bool]:
        """
        指定日志主题是否已开启了 Kafka 协议消费功能。true：已开启。false：未开启。
        """
        return pulumi.get(self, "allow_consume")

    @property
    @pulumi.getter(name="archiveTtl")
    def archive_ttl(self) -> pulumi.Output[builtins.int]:
        """
        归档存储时长。该时长取值范围为 60~3650。满足如下任一条件时，可实现归档存储。标准存储时长 30 天及以上。标准存储时长 7 天及以上且低频存储时长 30 天及以上。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "archive_ttl")

    @property
    @pulumi.getter(name="autoSplit")
    def auto_split(self) -> pulumi.Output[builtins.bool]:
        """
        是否开启分区的自动分裂功能。true：当写入的数据量连续 5 分钟超过已有分区服务能力时，日志服务会根据数据量自动分裂分区以满足业务需求，但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。false：不开启分区的自动分裂。
        """
        return pulumi.get(self, "auto_split")

    @property
    @pulumi.getter(name="coldTtl")
    def cold_ttl(self) -> pulumi.Output[builtins.int]:
        """
        低频存储时长。该时长取值范围为 30~3650。标准存储时长 7 天及以上可实现低频存储。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "cold_ttl")

    @property
    @pulumi.getter(name="consumeTopic")
    def consume_topic(self) -> pulumi.Output[builtins.str]:
        """
        Kafka 协议消费主题 ID，格式为 out+日志主题 ID。通过 Kafka 协议消费此日志主题中的日志数据时，Topic 应指定为此 ID。
        """
        return pulumi.get(self, "consume_topic")

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> pulumi.Output[builtins.str]:
        """
        日志主题创建时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter
    def description(self) -> pulumi.Output[builtins.str]:
        """
        日志主题描述信息。不支持 <>、'、\\、\\、所有 emoji 表情符号。长度为 0~64 个字符。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="enableHotTtl")
    def enable_hot_ttl(self) -> pulumi.Output[builtins.bool]:
        """
        是否开启分层存储。开启后，日志服务支持标准存储、低频存储和归档存储。设置 HotTtl、ArchiveTtl、ColdTtl 后，如果数据存储时间超过对应时长，那么数据会自动沉降至低频存储、归档存储进行后续保存，直到日志采集到服务端的总时长达到 Ttl 时，被后端服务自动清理。
        """
        return pulumi.get(self, "enable_hot_ttl")

    @property
    @pulumi.getter(name="enableTracking")
    def enable_tracking(self) -> pulumi.Output[builtins.bool]:
        """
        是否开启 WebTracking 功能，开启后，可以通过 WebTracking 快速采集前端埋点数据。true：开启 WebTracking功能。false：（默认）关闭 WebTracking 功能。为日志主题开启 Web Tracking 后，通过 API 接口 WebTracks 写入数据时无需经过鉴权，相当于面向公网开放了匿名写入权限，可能产生脏数据。
        """
        return pulumi.get(self, "enable_tracking")

    @property
    @pulumi.getter(name="hotTtl")
    def hot_ttl(self) -> pulumi.Output[builtins.int]:
        """
        标准存储时长。该时长默认为 30 天，取值范围为 7~3650。此参数仅在 EnableHotTtl 为 true 时生效。
        """
        return pulumi.get(self, "hot_ttl")

    @property
    @pulumi.getter(name="logPublicIp")
    def log_public_ip(self) -> pulumi.Output[builtins.bool]:
        """
        是否开启记录外网 IP 功能。默认为开启状态。开启后日志服务会自动在日志内容中添加以下元数据字段。**tag****client_ip**：日志来源设备的公网 IP 地址。使用日志服务的私网域名写入日志数据时，则记录私网 IP 地址。**tag****receive_time**：日志达到服务端的时间，格式为 10 位的 Unixtime 时间戳。
        """
        return pulumi.get(self, "log_public_ip")

    @property
    @pulumi.getter(name="maxSplitShard")
    def max_split_shard(self) -> pulumi.Output[builtins.int]:
        """
        分区的最大分裂数，即分区分裂后，所有分区的最大数量。取值范围为 1~256，默认为 256。仅在开启自动分裂日志分区，即 AutoSplit 为 true 时必选。MaxSplitShard 必须大于指定的 ShardCount，否则日志服务无法自动分裂分区。
        """
        return pulumi.get(self, "max_split_shard")

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Output[builtins.str]:
        """
        日志主题所属的日志项目 ID。
        """
        return pulumi.get(self, "project_id")

    @property
    @pulumi.getter(name="shardCount")
    def shard_count(self) -> pulumi.Output[builtins.int]:
        """
        日志分区的数量，默认创建 1 个分区，取值范围为 1～10。 每个分区提供的写入能力为 5MiB/s、500 次/s，读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区，创建后暂不支持修改分区数量。
        """
        return pulumi.get(self, "shard_count")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Sequence['outputs.TopicTag']]:
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="timeFormat")
    def time_format(self) -> pulumi.Output[builtins.str]:
        """
        时间格式
        """
        return pulumi.get(self, "time_format")

    @property
    @pulumi.getter(name="timeKey")
    def time_key(self) -> pulumi.Output[builtins.str]:
        """
        时间字段名
        """
        return pulumi.get(self, "time_key")

    @property
    @pulumi.getter(name="topicId")
    def topic_id(self) -> pulumi.Output[builtins.str]:
        """
        日志主题 ID。
        """
        return pulumi.get(self, "topic_id")

    @property
    @pulumi.getter(name="topicName")
    def topic_name(self) -> pulumi.Output[builtins.str]:
        """
        日志主题名称。
        """
        return pulumi.get(self, "topic_name")

    @property
    @pulumi.getter
    def ttl(self) -> pulumi.Output[builtins.int]:
        """
        日志在日志服务中的总保存时间，超过指定的日志存储时长后，此日志主题中的过期日志会被自动清除。单位为天，默认为 30 天。取值范围为 1～3650，指定为 3650 天表示永久存储。
        """
        return pulumi.get(self, "ttl")

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> pulumi.Output[builtins.str]:
        """
        日志主题修改时间。
        """
        return pulumi.get(self, "updated_time")

