# 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__ = ['ListenerArgs', 'Listener']

@pulumi.input_type
class ListenerArgs:
    def __init__(__self__, *,
                 load_balancer_id: pulumi.Input[builtins.str],
                 port: pulumi.Input[builtins.int],
                 protocol: pulumi.Input[builtins.str],
                 server_group_id: pulumi.Input[builtins.str],
                 access_log_record_customized_headers_enabled: Optional[pulumi.Input[builtins.str]] = None,
                 acl_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 acl_status: Optional[pulumi.Input[builtins.str]] = None,
                 acl_type: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 cert_center_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 customized_cfg_id: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 domain_extensions: Optional[pulumi.Input[Sequence[pulumi.Input['ListenerDomainExtensionArgs']]]] = None,
                 enable_http2: Optional[pulumi.Input[builtins.str]] = None,
                 enable_quic: Optional[pulumi.Input[builtins.str]] = None,
                 enabled: Optional[pulumi.Input[builtins.str]] = None,
                 listener_name: Optional[pulumi.Input[builtins.str]] = None,
                 pca_leaf_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_root_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_sub_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 server_groups: Optional[pulumi.Input[Sequence[pulumi.Input['ListenerServerGroupArgs']]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['ListenerTagArgs']]]] = None):
        """
        The set of arguments for constructing a Listener resource.
        :param pulumi.Input[builtins.str] load_balancer_id: 监听器所属的负载均衡实例 ID。
        :param pulumi.Input[builtins.int] port: 监听器的监听端口，取值：1   - 65535 。
        :param pulumi.Input[builtins.str] protocol: 监听器的协议，支持 HTTP 协议和 HTTPS 协议。
        :param pulumi.Input[builtins.str] server_group_id: 监听器的默认服务器组。
        :param pulumi.Input[builtins.str] access_log_record_customized_headers_enabled: 监听器是否已开启“在访问日志中记录自定义header”的功能：on：表示该功能已开启。off：表示该功能未开启。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] acl_ids: 监听器绑定的访问控制策略组 ID。当AclStatus参数配置为 on 时，AclIds为必填参数。
        :param pulumi.Input[builtins.str] acl_status: 是否开启访问控制功能。取值如下：on：开启。off ：不开启（默认）。
        :param pulumi.Input[builtins.str] acl_type: 访问控制的方式，取值如下：white：白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器不会转发任何请求。black：黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器会转发全部请求。当AclStatus参数配置为 on 时，AclType为必填参数。
        :param pulumi.Input[builtins.str] ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 alb 时，必须指定 CACertificateId 参数。
        :param pulumi.Input[builtins.str] ca_certificate_source: HTTPS 监听器关联的 CA 证书的来源，用于双向认证。alb（默认）：表示通过 ALB 上传的证书。标准版 ALB 实例不支持此来源的证书。pca*root：表示通过火山引擎证书中心购买或上传的私有根 CA 证书。pca*sub：表示通过火山引擎证书中心购买或上传的私有子 CA 证书。
        :param pulumi.Input[builtins.str] cert_center_certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 cert_center 时必传。
        :param pulumi.Input[builtins.str] certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 alb 时必传。
        :param pulumi.Input[builtins.str] certificate_source: HTTPS监听器关联的默认证书的来源，取值：alb：表示通过 ALB 上传的证书。cert*center：表示通过火山引擎证书中心购买或上传的 SSL 证书。pca*leaf：表示通过火山引擎证书中心购买或上传的私有叶子证书。
        :param pulumi.Input[builtins.str] customized_cfg_id: 个性化配置ID，未绑定时值为空字符串。
        :param pulumi.Input[builtins.str] description: 监听器的描述。不能以http://或https://开头。必须以字母或中文开头，可包含数字、英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。） 。长度限制为1 ～ 255个字符。不填默认为空字符串。
        :param pulumi.Input[builtins.str] enable_http2: HTTP2.0 特性开关，该参数仅对 HTTPS 监听器有效。取值如下：on：开启。off：关闭（默认）。
        :param pulumi.Input[builtins.str] enable_quic: QUIC 特性开关，该参数仅对 HTTPS 监听器有效，取值如下：on：开启。off：关闭（默认）。只有标准版 ALB 实例支持 QUIC。
        :param pulumi.Input[builtins.str] enabled: 监听器开启/关闭，取值如下：on：开启（默认）。off：关闭。
        :param pulumi.Input[builtins.str] listener_name: 监听器的名字。不填写时以“协议-端口”格式命名。不能以http://或https://开头。必须以字母或中文开头，可包含数字、点（.）、下划线（_）和短横线（-）。长度限制在1-128字符之间。
        :param pulumi.Input[builtins.str] pca_leaf_certificate_id: HTTPS监听器关联的私有叶子证书 ID。创建 HTTPS 监听器且证书来源为 pca_leaf 时必传。
        :param pulumi.Input[builtins.str] pca_root_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_root 时，必须指定 PcaRootCACertificateId 参数。
        :param pulumi.Input[builtins.str] pca_sub_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_sub 时，必须指定 PcaSubCACertificateId 参数。
        """
        pulumi.set(__self__, "load_balancer_id", load_balancer_id)
        pulumi.set(__self__, "port", port)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "server_group_id", server_group_id)
        if access_log_record_customized_headers_enabled is not None:
            pulumi.set(__self__, "access_log_record_customized_headers_enabled", access_log_record_customized_headers_enabled)
        if acl_ids is not None:
            pulumi.set(__self__, "acl_ids", acl_ids)
        if acl_status is not None:
            pulumi.set(__self__, "acl_status", acl_status)
        if acl_type is not None:
            pulumi.set(__self__, "acl_type", acl_type)
        if ca_certificate_id is not None:
            pulumi.set(__self__, "ca_certificate_id", ca_certificate_id)
        if ca_certificate_source is not None:
            pulumi.set(__self__, "ca_certificate_source", ca_certificate_source)
        if cert_center_certificate_id is not None:
            pulumi.set(__self__, "cert_center_certificate_id", cert_center_certificate_id)
        if certificate_id is not None:
            pulumi.set(__self__, "certificate_id", certificate_id)
        if certificate_source is not None:
            pulumi.set(__self__, "certificate_source", certificate_source)
        if customized_cfg_id is not None:
            pulumi.set(__self__, "customized_cfg_id", customized_cfg_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if domain_extensions is not None:
            pulumi.set(__self__, "domain_extensions", domain_extensions)
        if enable_http2 is not None:
            pulumi.set(__self__, "enable_http2", enable_http2)
        if enable_quic is not None:
            pulumi.set(__self__, "enable_quic", enable_quic)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if listener_name is not None:
            pulumi.set(__self__, "listener_name", listener_name)
        if pca_leaf_certificate_id is not None:
            pulumi.set(__self__, "pca_leaf_certificate_id", pca_leaf_certificate_id)
        if pca_root_ca_certificate_id is not None:
            pulumi.set(__self__, "pca_root_ca_certificate_id", pca_root_ca_certificate_id)
        if pca_sub_ca_certificate_id is not None:
            pulumi.set(__self__, "pca_sub_ca_certificate_id", pca_sub_ca_certificate_id)
        if server_groups is not None:
            pulumi.set(__self__, "server_groups", server_groups)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter(name="loadBalancerId")
    def load_balancer_id(self) -> pulumi.Input[builtins.str]:
        """
        监听器所属的负载均衡实例 ID。
        """
        return pulumi.get(self, "load_balancer_id")

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

    @property
    @pulumi.getter
    def port(self) -> pulumi.Input[builtins.int]:
        """
        监听器的监听端口，取值：1   - 65535 。
        """
        return pulumi.get(self, "port")

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

    @property
    @pulumi.getter
    def protocol(self) -> pulumi.Input[builtins.str]:
        """
        监听器的协议，支持 HTTP 协议和 HTTPS 协议。
        """
        return pulumi.get(self, "protocol")

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

    @property
    @pulumi.getter(name="serverGroupId")
    def server_group_id(self) -> pulumi.Input[builtins.str]:
        """
        监听器的默认服务器组。
        """
        return pulumi.get(self, "server_group_id")

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

    @property
    @pulumi.getter(name="accessLogRecordCustomizedHeadersEnabled")
    def access_log_record_customized_headers_enabled(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器是否已开启“在访问日志中记录自定义header”的功能：on：表示该功能已开启。off：表示该功能未开启。
        """
        return pulumi.get(self, "access_log_record_customized_headers_enabled")

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

    @property
    @pulumi.getter(name="aclIds")
    def acl_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        监听器绑定的访问控制策略组 ID。当AclStatus参数配置为 on 时，AclIds为必填参数。
        """
        return pulumi.get(self, "acl_ids")

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

    @property
    @pulumi.getter(name="aclStatus")
    def acl_status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        是否开启访问控制功能。取值如下：on：开启。off ：不开启（默认）。
        """
        return pulumi.get(self, "acl_status")

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

    @property
    @pulumi.getter(name="aclType")
    def acl_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问控制的方式，取值如下：white：白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器不会转发任何请求。black：黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器会转发全部请求。当AclStatus参数配置为 on 时，AclType为必填参数。
        """
        return pulumi.get(self, "acl_type")

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

    @property
    @pulumi.getter(name="caCertificateId")
    def ca_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 alb 时，必须指定 CACertificateId 参数。
        """
        return pulumi.get(self, "ca_certificate_id")

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

    @property
    @pulumi.getter(name="caCertificateSource")
    def ca_certificate_source(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书的来源，用于双向认证。alb（默认）：表示通过 ALB 上传的证书。标准版 ALB 实例不支持此来源的证书。pca*root：表示通过火山引擎证书中心购买或上传的私有根 CA 证书。pca*sub：表示通过火山引擎证书中心购买或上传的私有子 CA 证书。
        """
        return pulumi.get(self, "ca_certificate_source")

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

    @property
    @pulumi.getter(name="certCenterCertificateId")
    def cert_center_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 cert_center 时必传。
        """
        return pulumi.get(self, "cert_center_certificate_id")

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

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 alb 时必传。
        """
        return pulumi.get(self, "certificate_id")

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

    @property
    @pulumi.getter(name="certificateSource")
    def certificate_source(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的默认证书的来源，取值：alb：表示通过 ALB 上传的证书。cert*center：表示通过火山引擎证书中心购买或上传的 SSL 证书。pca*leaf：表示通过火山引擎证书中心购买或上传的私有叶子证书。
        """
        return pulumi.get(self, "certificate_source")

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

    @property
    @pulumi.getter(name="customizedCfgId")
    def customized_cfg_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        个性化配置ID，未绑定时值为空字符串。
        """
        return pulumi.get(self, "customized_cfg_id")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器的描述。不能以http://或https://开头。必须以字母或中文开头，可包含数字、英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。） 。长度限制为1 ～ 255个字符。不填默认为空字符串。
        """
        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="domainExtensions")
    def domain_extensions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ListenerDomainExtensionArgs']]]]:
        return pulumi.get(self, "domain_extensions")

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

    @property
    @pulumi.getter(name="enableHttp2")
    def enable_http2(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTP2.0 特性开关，该参数仅对 HTTPS 监听器有效。取值如下：on：开启。off：关闭（默认）。
        """
        return pulumi.get(self, "enable_http2")

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

    @property
    @pulumi.getter(name="enableQuic")
    def enable_quic(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        QUIC 特性开关，该参数仅对 HTTPS 监听器有效，取值如下：on：开启。off：关闭（默认）。只有标准版 ALB 实例支持 QUIC。
        """
        return pulumi.get(self, "enable_quic")

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器开启/关闭，取值如下：on：开启（默认）。off：关闭。
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter(name="listenerName")
    def listener_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器的名字。不填写时以“协议-端口”格式命名。不能以http://或https://开头。必须以字母或中文开头，可包含数字、点（.）、下划线（_）和短横线（-）。长度限制在1-128字符之间。
        """
        return pulumi.get(self, "listener_name")

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

    @property
    @pulumi.getter(name="pcaLeafCertificateId")
    def pca_leaf_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的私有叶子证书 ID。创建 HTTPS 监听器且证书来源为 pca_leaf 时必传。
        """
        return pulumi.get(self, "pca_leaf_certificate_id")

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

    @property
    @pulumi.getter(name="pcaRootCaCertificateId")
    def pca_root_ca_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_root 时，必须指定 PcaRootCACertificateId 参数。
        """
        return pulumi.get(self, "pca_root_ca_certificate_id")

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

    @property
    @pulumi.getter(name="pcaSubCaCertificateId")
    def pca_sub_ca_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_sub 时，必须指定 PcaSubCACertificateId 参数。
        """
        return pulumi.get(self, "pca_sub_ca_certificate_id")

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

    @property
    @pulumi.getter(name="serverGroups")
    def server_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ListenerServerGroupArgs']]]]:
        return pulumi.get(self, "server_groups")

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

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

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


@pulumi.input_type
class _ListenerState:
    def __init__(__self__, *,
                 access_log_record_customized_headers_enabled: Optional[pulumi.Input[builtins.str]] = None,
                 acl_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 acl_status: Optional[pulumi.Input[builtins.str]] = None,
                 acl_type: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 cert_center_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 created_time: Optional[pulumi.Input[builtins.str]] = None,
                 customized_cfg_id: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 domain_extensions: Optional[pulumi.Input[Sequence[pulumi.Input['ListenerDomainExtensionArgs']]]] = None,
                 enable_http2: Optional[pulumi.Input[builtins.str]] = None,
                 enable_quic: Optional[pulumi.Input[builtins.str]] = None,
                 enabled: Optional[pulumi.Input[builtins.str]] = None,
                 listener_id: Optional[pulumi.Input[builtins.str]] = None,
                 listener_name: Optional[pulumi.Input[builtins.str]] = None,
                 load_balancer_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_leaf_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_root_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_sub_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 protocol: Optional[pulumi.Input[builtins.str]] = None,
                 server_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 server_groups: Optional[pulumi.Input[Sequence[pulumi.Input['ListenerServerGroupArgs']]]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['ListenerTagArgs']]]] = None,
                 updated_time: Optional[pulumi.Input[builtins.str]] = None):
        """
        Input properties used for looking up and filtering Listener resources.
        :param pulumi.Input[builtins.str] access_log_record_customized_headers_enabled: 监听器是否已开启“在访问日志中记录自定义header”的功能：on：表示该功能已开启。off：表示该功能未开启。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] acl_ids: 监听器绑定的访问控制策略组 ID。当AclStatus参数配置为 on 时，AclIds为必填参数。
        :param pulumi.Input[builtins.str] acl_status: 是否开启访问控制功能。取值如下：on：开启。off ：不开启（默认）。
        :param pulumi.Input[builtins.str] acl_type: 访问控制的方式，取值如下：white：白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器不会转发任何请求。black：黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器会转发全部请求。当AclStatus参数配置为 on 时，AclType为必填参数。
        :param pulumi.Input[builtins.str] ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 alb 时，必须指定 CACertificateId 参数。
        :param pulumi.Input[builtins.str] ca_certificate_source: HTTPS 监听器关联的 CA 证书的来源，用于双向认证。alb（默认）：表示通过 ALB 上传的证书。标准版 ALB 实例不支持此来源的证书。pca*root：表示通过火山引擎证书中心购买或上传的私有根 CA 证书。pca*sub：表示通过火山引擎证书中心购买或上传的私有子 CA 证书。
        :param pulumi.Input[builtins.str] cert_center_certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 cert_center 时必传。
        :param pulumi.Input[builtins.str] certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 alb 时必传。
        :param pulumi.Input[builtins.str] certificate_source: HTTPS监听器关联的默认证书的来源，取值：alb：表示通过 ALB 上传的证书。cert*center：表示通过火山引擎证书中心购买或上传的 SSL 证书。pca*leaf：表示通过火山引擎证书中心购买或上传的私有叶子证书。
        :param pulumi.Input[builtins.str] created_time: 监听器的创建时间。
        :param pulumi.Input[builtins.str] customized_cfg_id: 个性化配置ID，未绑定时值为空字符串。
        :param pulumi.Input[builtins.str] description: 监听器的描述。不能以http://或https://开头。必须以字母或中文开头，可包含数字、英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。） 。长度限制为1 ～ 255个字符。不填默认为空字符串。
        :param pulumi.Input[builtins.str] enable_http2: HTTP2.0 特性开关，该参数仅对 HTTPS 监听器有效。取值如下：on：开启。off：关闭（默认）。
        :param pulumi.Input[builtins.str] enable_quic: QUIC 特性开关，该参数仅对 HTTPS 监听器有效，取值如下：on：开启。off：关闭（默认）。只有标准版 ALB 实例支持 QUIC。
        :param pulumi.Input[builtins.str] enabled: 监听器开启/关闭，取值如下：on：开启（默认）。off：关闭。
        :param pulumi.Input[builtins.str] listener_id: 监听器 ID。
        :param pulumi.Input[builtins.str] listener_name: 监听器的名字。不填写时以“协议-端口”格式命名。不能以http://或https://开头。必须以字母或中文开头，可包含数字、点（.）、下划线（_）和短横线（-）。长度限制在1-128字符之间。
        :param pulumi.Input[builtins.str] load_balancer_id: 监听器所属的负载均衡实例 ID。
        :param pulumi.Input[builtins.str] pca_leaf_certificate_id: HTTPS监听器关联的私有叶子证书 ID。创建 HTTPS 监听器且证书来源为 pca_leaf 时必传。
        :param pulumi.Input[builtins.str] pca_root_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_root 时，必须指定 PcaRootCACertificateId 参数。
        :param pulumi.Input[builtins.str] pca_sub_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_sub 时，必须指定 PcaSubCACertificateId 参数。
        :param pulumi.Input[builtins.int] port: 监听器的监听端口，取值：1   - 65535 。
        :param pulumi.Input[builtins.str] project_name: 监听器所属项目名称。
        :param pulumi.Input[builtins.str] protocol: 监听器的协议，支持 HTTP 协议和 HTTPS 协议。
        :param pulumi.Input[builtins.str] server_group_id: 监听器的默认服务器组。
        :param pulumi.Input[builtins.str] status: 监听器的状态。取值如下：Creating：创建中。Active： 运行中。Pending： 变配中。Disabled：已停止。Deleting：删除中。
        :param pulumi.Input[builtins.str] updated_time: 监听器最近一次的操作时间。
        """
        if access_log_record_customized_headers_enabled is not None:
            pulumi.set(__self__, "access_log_record_customized_headers_enabled", access_log_record_customized_headers_enabled)
        if acl_ids is not None:
            pulumi.set(__self__, "acl_ids", acl_ids)
        if acl_status is not None:
            pulumi.set(__self__, "acl_status", acl_status)
        if acl_type is not None:
            pulumi.set(__self__, "acl_type", acl_type)
        if ca_certificate_id is not None:
            pulumi.set(__self__, "ca_certificate_id", ca_certificate_id)
        if ca_certificate_source is not None:
            pulumi.set(__self__, "ca_certificate_source", ca_certificate_source)
        if cert_center_certificate_id is not None:
            pulumi.set(__self__, "cert_center_certificate_id", cert_center_certificate_id)
        if certificate_id is not None:
            pulumi.set(__self__, "certificate_id", certificate_id)
        if certificate_source is not None:
            pulumi.set(__self__, "certificate_source", certificate_source)
        if created_time is not None:
            pulumi.set(__self__, "created_time", created_time)
        if customized_cfg_id is not None:
            pulumi.set(__self__, "customized_cfg_id", customized_cfg_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if domain_extensions is not None:
            pulumi.set(__self__, "domain_extensions", domain_extensions)
        if enable_http2 is not None:
            pulumi.set(__self__, "enable_http2", enable_http2)
        if enable_quic is not None:
            pulumi.set(__self__, "enable_quic", enable_quic)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if listener_id is not None:
            pulumi.set(__self__, "listener_id", listener_id)
        if listener_name is not None:
            pulumi.set(__self__, "listener_name", listener_name)
        if load_balancer_id is not None:
            pulumi.set(__self__, "load_balancer_id", load_balancer_id)
        if pca_leaf_certificate_id is not None:
            pulumi.set(__self__, "pca_leaf_certificate_id", pca_leaf_certificate_id)
        if pca_root_ca_certificate_id is not None:
            pulumi.set(__self__, "pca_root_ca_certificate_id", pca_root_ca_certificate_id)
        if pca_sub_ca_certificate_id is not None:
            pulumi.set(__self__, "pca_sub_ca_certificate_id", pca_sub_ca_certificate_id)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if server_group_id is not None:
            pulumi.set(__self__, "server_group_id", server_group_id)
        if server_groups is not None:
            pulumi.set(__self__, "server_groups", server_groups)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if updated_time is not None:
            pulumi.set(__self__, "updated_time", updated_time)

    @property
    @pulumi.getter(name="accessLogRecordCustomizedHeadersEnabled")
    def access_log_record_customized_headers_enabled(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器是否已开启“在访问日志中记录自定义header”的功能：on：表示该功能已开启。off：表示该功能未开启。
        """
        return pulumi.get(self, "access_log_record_customized_headers_enabled")

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

    @property
    @pulumi.getter(name="aclIds")
    def acl_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        监听器绑定的访问控制策略组 ID。当AclStatus参数配置为 on 时，AclIds为必填参数。
        """
        return pulumi.get(self, "acl_ids")

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

    @property
    @pulumi.getter(name="aclStatus")
    def acl_status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        是否开启访问控制功能。取值如下：on：开启。off ：不开启（默认）。
        """
        return pulumi.get(self, "acl_status")

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

    @property
    @pulumi.getter(name="aclType")
    def acl_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        访问控制的方式，取值如下：white：白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器不会转发任何请求。black：黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器会转发全部请求。当AclStatus参数配置为 on 时，AclType为必填参数。
        """
        return pulumi.get(self, "acl_type")

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

    @property
    @pulumi.getter(name="caCertificateId")
    def ca_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 alb 时，必须指定 CACertificateId 参数。
        """
        return pulumi.get(self, "ca_certificate_id")

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

    @property
    @pulumi.getter(name="caCertificateSource")
    def ca_certificate_source(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书的来源，用于双向认证。alb（默认）：表示通过 ALB 上传的证书。标准版 ALB 实例不支持此来源的证书。pca*root：表示通过火山引擎证书中心购买或上传的私有根 CA 证书。pca*sub：表示通过火山引擎证书中心购买或上传的私有子 CA 证书。
        """
        return pulumi.get(self, "ca_certificate_source")

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

    @property
    @pulumi.getter(name="certCenterCertificateId")
    def cert_center_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 cert_center 时必传。
        """
        return pulumi.get(self, "cert_center_certificate_id")

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

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 alb 时必传。
        """
        return pulumi.get(self, "certificate_id")

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

    @property
    @pulumi.getter(name="certificateSource")
    def certificate_source(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的默认证书的来源，取值：alb：表示通过 ALB 上传的证书。cert*center：表示通过火山引擎证书中心购买或上传的 SSL 证书。pca*leaf：表示通过火山引擎证书中心购买或上传的私有叶子证书。
        """
        return pulumi.get(self, "certificate_source")

    @certificate_source.setter
    def certificate_source(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "certificate_source", 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(name="customizedCfgId")
    def customized_cfg_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        个性化配置ID，未绑定时值为空字符串。
        """
        return pulumi.get(self, "customized_cfg_id")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器的描述。不能以http://或https://开头。必须以字母或中文开头，可包含数字、英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。） 。长度限制为1 ～ 255个字符。不填默认为空字符串。
        """
        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="domainExtensions")
    def domain_extensions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ListenerDomainExtensionArgs']]]]:
        return pulumi.get(self, "domain_extensions")

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

    @property
    @pulumi.getter(name="enableHttp2")
    def enable_http2(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTP2.0 特性开关，该参数仅对 HTTPS 监听器有效。取值如下：on：开启。off：关闭（默认）。
        """
        return pulumi.get(self, "enable_http2")

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

    @property
    @pulumi.getter(name="enableQuic")
    def enable_quic(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        QUIC 特性开关，该参数仅对 HTTPS 监听器有效，取值如下：on：开启。off：关闭（默认）。只有标准版 ALB 实例支持 QUIC。
        """
        return pulumi.get(self, "enable_quic")

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器开启/关闭，取值如下：on：开启（默认）。off：关闭。
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter(name="listenerId")
    def listener_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器 ID。
        """
        return pulumi.get(self, "listener_id")

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

    @property
    @pulumi.getter(name="listenerName")
    def listener_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器的名字。不填写时以“协议-端口”格式命名。不能以http://或https://开头。必须以字母或中文开头，可包含数字、点（.）、下划线（_）和短横线（-）。长度限制在1-128字符之间。
        """
        return pulumi.get(self, "listener_name")

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

    @property
    @pulumi.getter(name="loadBalancerId")
    def load_balancer_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器所属的负载均衡实例 ID。
        """
        return pulumi.get(self, "load_balancer_id")

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

    @property
    @pulumi.getter(name="pcaLeafCertificateId")
    def pca_leaf_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS监听器关联的私有叶子证书 ID。创建 HTTPS 监听器且证书来源为 pca_leaf 时必传。
        """
        return pulumi.get(self, "pca_leaf_certificate_id")

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

    @property
    @pulumi.getter(name="pcaRootCaCertificateId")
    def pca_root_ca_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_root 时，必须指定 PcaRootCACertificateId 参数。
        """
        return pulumi.get(self, "pca_root_ca_certificate_id")

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

    @property
    @pulumi.getter(name="pcaSubCaCertificateId")
    def pca_sub_ca_certificate_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_sub 时，必须指定 PcaSubCACertificateId 参数。
        """
        return pulumi.get(self, "pca_sub_ca_certificate_id")

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

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        监听器的监听端口，取值：1   - 65535 。
        """
        return pulumi.get(self, "port")

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

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器所属项目名称。
        """
        return pulumi.get(self, "project_name")

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

    @property
    @pulumi.getter
    def protocol(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器的协议，支持 HTTP 协议和 HTTPS 协议。
        """
        return pulumi.get(self, "protocol")

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

    @property
    @pulumi.getter(name="serverGroupId")
    def server_group_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器的默认服务器组。
        """
        return pulumi.get(self, "server_group_id")

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

    @property
    @pulumi.getter(name="serverGroups")
    def server_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ListenerServerGroupArgs']]]]:
        return pulumi.get(self, "server_groups")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        监听器的状态。取值如下：Creating：创建中。Active： 运行中。Pending： 变配中。Disabled：已停止。Deleting：删除中。
        """
        return pulumi.get(self, "status")

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

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

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ListenerTagArgs']]]]):
        pulumi.set(self, "tags", 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:alb/listener:Listener")
class Listener(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access_log_record_customized_headers_enabled: Optional[pulumi.Input[builtins.str]] = None,
                 acl_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 acl_status: Optional[pulumi.Input[builtins.str]] = None,
                 acl_type: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 cert_center_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 customized_cfg_id: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 domain_extensions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerDomainExtensionArgs', 'ListenerDomainExtensionArgsDict']]]]] = None,
                 enable_http2: Optional[pulumi.Input[builtins.str]] = None,
                 enable_quic: Optional[pulumi.Input[builtins.str]] = None,
                 enabled: Optional[pulumi.Input[builtins.str]] = None,
                 listener_name: Optional[pulumi.Input[builtins.str]] = None,
                 load_balancer_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_leaf_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_root_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_sub_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 protocol: Optional[pulumi.Input[builtins.str]] = None,
                 server_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 server_groups: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerServerGroupArgs', 'ListenerServerGroupArgsDict']]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerTagArgs', 'ListenerTagArgsDict']]]]] = None,
                 __props__=None):
        """
        每个 ALB 实例至少要有一个监听器才能正常工作。监听器接收客户端请求，并根据您配置的转发规则和负载均衡算法将请求分发到后端服务器上。您可以在一个 ALB 实例下创建多个监听器，并为监听器配置不同的监听协议，以处理使用不同协议的客户端请求。

        ## Import

        ```sh
        $ pulumi import bytepluscc:alb/listener:Listener example "listener_id"
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] access_log_record_customized_headers_enabled: 监听器是否已开启“在访问日志中记录自定义header”的功能：on：表示该功能已开启。off：表示该功能未开启。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] acl_ids: 监听器绑定的访问控制策略组 ID。当AclStatus参数配置为 on 时，AclIds为必填参数。
        :param pulumi.Input[builtins.str] acl_status: 是否开启访问控制功能。取值如下：on：开启。off ：不开启（默认）。
        :param pulumi.Input[builtins.str] acl_type: 访问控制的方式，取值如下：white：白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器不会转发任何请求。black：黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器会转发全部请求。当AclStatus参数配置为 on 时，AclType为必填参数。
        :param pulumi.Input[builtins.str] ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 alb 时，必须指定 CACertificateId 参数。
        :param pulumi.Input[builtins.str] ca_certificate_source: HTTPS 监听器关联的 CA 证书的来源，用于双向认证。alb（默认）：表示通过 ALB 上传的证书。标准版 ALB 实例不支持此来源的证书。pca*root：表示通过火山引擎证书中心购买或上传的私有根 CA 证书。pca*sub：表示通过火山引擎证书中心购买或上传的私有子 CA 证书。
        :param pulumi.Input[builtins.str] cert_center_certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 cert_center 时必传。
        :param pulumi.Input[builtins.str] certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 alb 时必传。
        :param pulumi.Input[builtins.str] certificate_source: HTTPS监听器关联的默认证书的来源，取值：alb：表示通过 ALB 上传的证书。cert*center：表示通过火山引擎证书中心购买或上传的 SSL 证书。pca*leaf：表示通过火山引擎证书中心购买或上传的私有叶子证书。
        :param pulumi.Input[builtins.str] customized_cfg_id: 个性化配置ID，未绑定时值为空字符串。
        :param pulumi.Input[builtins.str] description: 监听器的描述。不能以http://或https://开头。必须以字母或中文开头，可包含数字、英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。） 。长度限制为1 ～ 255个字符。不填默认为空字符串。
        :param pulumi.Input[builtins.str] enable_http2: HTTP2.0 特性开关，该参数仅对 HTTPS 监听器有效。取值如下：on：开启。off：关闭（默认）。
        :param pulumi.Input[builtins.str] enable_quic: QUIC 特性开关，该参数仅对 HTTPS 监听器有效，取值如下：on：开启。off：关闭（默认）。只有标准版 ALB 实例支持 QUIC。
        :param pulumi.Input[builtins.str] enabled: 监听器开启/关闭，取值如下：on：开启（默认）。off：关闭。
        :param pulumi.Input[builtins.str] listener_name: 监听器的名字。不填写时以“协议-端口”格式命名。不能以http://或https://开头。必须以字母或中文开头，可包含数字、点（.）、下划线（_）和短横线（-）。长度限制在1-128字符之间。
        :param pulumi.Input[builtins.str] load_balancer_id: 监听器所属的负载均衡实例 ID。
        :param pulumi.Input[builtins.str] pca_leaf_certificate_id: HTTPS监听器关联的私有叶子证书 ID。创建 HTTPS 监听器且证书来源为 pca_leaf 时必传。
        :param pulumi.Input[builtins.str] pca_root_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_root 时，必须指定 PcaRootCACertificateId 参数。
        :param pulumi.Input[builtins.str] pca_sub_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_sub 时，必须指定 PcaSubCACertificateId 参数。
        :param pulumi.Input[builtins.int] port: 监听器的监听端口，取值：1   - 65535 。
        :param pulumi.Input[builtins.str] protocol: 监听器的协议，支持 HTTP 协议和 HTTPS 协议。
        :param pulumi.Input[builtins.str] server_group_id: 监听器的默认服务器组。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ListenerArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        每个 ALB 实例至少要有一个监听器才能正常工作。监听器接收客户端请求，并根据您配置的转发规则和负载均衡算法将请求分发到后端服务器上。您可以在一个 ALB 实例下创建多个监听器，并为监听器配置不同的监听协议，以处理使用不同协议的客户端请求。

        ## Import

        ```sh
        $ pulumi import bytepluscc:alb/listener:Listener example "listener_id"
        ```

        :param str resource_name: The name of the resource.
        :param ListenerArgs 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(ListenerArgs, 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,
                 access_log_record_customized_headers_enabled: Optional[pulumi.Input[builtins.str]] = None,
                 acl_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 acl_status: Optional[pulumi.Input[builtins.str]] = None,
                 acl_type: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 ca_certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 cert_center_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 certificate_source: Optional[pulumi.Input[builtins.str]] = None,
                 customized_cfg_id: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 domain_extensions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerDomainExtensionArgs', 'ListenerDomainExtensionArgsDict']]]]] = None,
                 enable_http2: Optional[pulumi.Input[builtins.str]] = None,
                 enable_quic: Optional[pulumi.Input[builtins.str]] = None,
                 enabled: Optional[pulumi.Input[builtins.str]] = None,
                 listener_name: Optional[pulumi.Input[builtins.str]] = None,
                 load_balancer_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_leaf_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_root_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 pca_sub_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 protocol: Optional[pulumi.Input[builtins.str]] = None,
                 server_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 server_groups: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerServerGroupArgs', 'ListenerServerGroupArgsDict']]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerTagArgs', 'ListenerTagArgsDict']]]]] = 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__ = ListenerArgs.__new__(ListenerArgs)

            __props__.__dict__["access_log_record_customized_headers_enabled"] = access_log_record_customized_headers_enabled
            __props__.__dict__["acl_ids"] = acl_ids
            __props__.__dict__["acl_status"] = acl_status
            __props__.__dict__["acl_type"] = acl_type
            __props__.__dict__["ca_certificate_id"] = ca_certificate_id
            __props__.__dict__["ca_certificate_source"] = ca_certificate_source
            __props__.__dict__["cert_center_certificate_id"] = cert_center_certificate_id
            __props__.__dict__["certificate_id"] = certificate_id
            __props__.__dict__["certificate_source"] = certificate_source
            __props__.__dict__["customized_cfg_id"] = customized_cfg_id
            __props__.__dict__["description"] = description
            __props__.__dict__["domain_extensions"] = domain_extensions
            __props__.__dict__["enable_http2"] = enable_http2
            __props__.__dict__["enable_quic"] = enable_quic
            __props__.__dict__["enabled"] = enabled
            __props__.__dict__["listener_name"] = listener_name
            if load_balancer_id is None and not opts.urn:
                raise TypeError("Missing required property 'load_balancer_id'")
            __props__.__dict__["load_balancer_id"] = load_balancer_id
            __props__.__dict__["pca_leaf_certificate_id"] = pca_leaf_certificate_id
            __props__.__dict__["pca_root_ca_certificate_id"] = pca_root_ca_certificate_id
            __props__.__dict__["pca_sub_ca_certificate_id"] = pca_sub_ca_certificate_id
            if port is None and not opts.urn:
                raise TypeError("Missing required property 'port'")
            __props__.__dict__["port"] = port
            if protocol is None and not opts.urn:
                raise TypeError("Missing required property 'protocol'")
            __props__.__dict__["protocol"] = protocol
            if server_group_id is None and not opts.urn:
                raise TypeError("Missing required property 'server_group_id'")
            __props__.__dict__["server_group_id"] = server_group_id
            __props__.__dict__["server_groups"] = server_groups
            __props__.__dict__["tags"] = tags
            __props__.__dict__["created_time"] = None
            __props__.__dict__["listener_id"] = None
            __props__.__dict__["project_name"] = None
            __props__.__dict__["status"] = None
            __props__.__dict__["updated_time"] = None
        super(Listener, __self__).__init__(
            'bytepluscc:alb/listener:Listener',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            access_log_record_customized_headers_enabled: Optional[pulumi.Input[builtins.str]] = None,
            acl_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
            acl_status: Optional[pulumi.Input[builtins.str]] = None,
            acl_type: Optional[pulumi.Input[builtins.str]] = None,
            ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
            ca_certificate_source: Optional[pulumi.Input[builtins.str]] = None,
            cert_center_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
            certificate_id: Optional[pulumi.Input[builtins.str]] = None,
            certificate_source: Optional[pulumi.Input[builtins.str]] = None,
            created_time: Optional[pulumi.Input[builtins.str]] = None,
            customized_cfg_id: Optional[pulumi.Input[builtins.str]] = None,
            description: Optional[pulumi.Input[builtins.str]] = None,
            domain_extensions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerDomainExtensionArgs', 'ListenerDomainExtensionArgsDict']]]]] = None,
            enable_http2: Optional[pulumi.Input[builtins.str]] = None,
            enable_quic: Optional[pulumi.Input[builtins.str]] = None,
            enabled: Optional[pulumi.Input[builtins.str]] = None,
            listener_id: Optional[pulumi.Input[builtins.str]] = None,
            listener_name: Optional[pulumi.Input[builtins.str]] = None,
            load_balancer_id: Optional[pulumi.Input[builtins.str]] = None,
            pca_leaf_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
            pca_root_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
            pca_sub_ca_certificate_id: Optional[pulumi.Input[builtins.str]] = None,
            port: Optional[pulumi.Input[builtins.int]] = None,
            project_name: Optional[pulumi.Input[builtins.str]] = None,
            protocol: Optional[pulumi.Input[builtins.str]] = None,
            server_group_id: Optional[pulumi.Input[builtins.str]] = None,
            server_groups: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerServerGroupArgs', 'ListenerServerGroupArgsDict']]]]] = None,
            status: Optional[pulumi.Input[builtins.str]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ListenerTagArgs', 'ListenerTagArgsDict']]]]] = None,
            updated_time: Optional[pulumi.Input[builtins.str]] = None) -> 'Listener':
        """
        Get an existing Listener 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.str] access_log_record_customized_headers_enabled: 监听器是否已开启“在访问日志中记录自定义header”的功能：on：表示该功能已开启。off：表示该功能未开启。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] acl_ids: 监听器绑定的访问控制策略组 ID。当AclStatus参数配置为 on 时，AclIds为必填参数。
        :param pulumi.Input[builtins.str] acl_status: 是否开启访问控制功能。取值如下：on：开启。off ：不开启（默认）。
        :param pulumi.Input[builtins.str] acl_type: 访问控制的方式，取值如下：white：白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器不会转发任何请求。black：黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器会转发全部请求。当AclStatus参数配置为 on 时，AclType为必填参数。
        :param pulumi.Input[builtins.str] ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 alb 时，必须指定 CACertificateId 参数。
        :param pulumi.Input[builtins.str] ca_certificate_source: HTTPS 监听器关联的 CA 证书的来源，用于双向认证。alb（默认）：表示通过 ALB 上传的证书。标准版 ALB 实例不支持此来源的证书。pca*root：表示通过火山引擎证书中心购买或上传的私有根 CA 证书。pca*sub：表示通过火山引擎证书中心购买或上传的私有子 CA 证书。
        :param pulumi.Input[builtins.str] cert_center_certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 cert_center 时必传。
        :param pulumi.Input[builtins.str] certificate_id: HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 alb 时必传。
        :param pulumi.Input[builtins.str] certificate_source: HTTPS监听器关联的默认证书的来源，取值：alb：表示通过 ALB 上传的证书。cert*center：表示通过火山引擎证书中心购买或上传的 SSL 证书。pca*leaf：表示通过火山引擎证书中心购买或上传的私有叶子证书。
        :param pulumi.Input[builtins.str] created_time: 监听器的创建时间。
        :param pulumi.Input[builtins.str] customized_cfg_id: 个性化配置ID，未绑定时值为空字符串。
        :param pulumi.Input[builtins.str] description: 监听器的描述。不能以http://或https://开头。必须以字母或中文开头，可包含数字、英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。） 。长度限制为1 ～ 255个字符。不填默认为空字符串。
        :param pulumi.Input[builtins.str] enable_http2: HTTP2.0 特性开关，该参数仅对 HTTPS 监听器有效。取值如下：on：开启。off：关闭（默认）。
        :param pulumi.Input[builtins.str] enable_quic: QUIC 特性开关，该参数仅对 HTTPS 监听器有效，取值如下：on：开启。off：关闭（默认）。只有标准版 ALB 实例支持 QUIC。
        :param pulumi.Input[builtins.str] enabled: 监听器开启/关闭，取值如下：on：开启（默认）。off：关闭。
        :param pulumi.Input[builtins.str] listener_id: 监听器 ID。
        :param pulumi.Input[builtins.str] listener_name: 监听器的名字。不填写时以“协议-端口”格式命名。不能以http://或https://开头。必须以字母或中文开头，可包含数字、点（.）、下划线（_）和短横线（-）。长度限制在1-128字符之间。
        :param pulumi.Input[builtins.str] load_balancer_id: 监听器所属的负载均衡实例 ID。
        :param pulumi.Input[builtins.str] pca_leaf_certificate_id: HTTPS监听器关联的私有叶子证书 ID。创建 HTTPS 监听器且证书来源为 pca_leaf 时必传。
        :param pulumi.Input[builtins.str] pca_root_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_root 时，必须指定 PcaRootCACertificateId 参数。
        :param pulumi.Input[builtins.str] pca_sub_ca_certificate_id: HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_sub 时，必须指定 PcaSubCACertificateId 参数。
        :param pulumi.Input[builtins.int] port: 监听器的监听端口，取值：1   - 65535 。
        :param pulumi.Input[builtins.str] project_name: 监听器所属项目名称。
        :param pulumi.Input[builtins.str] protocol: 监听器的协议，支持 HTTP 协议和 HTTPS 协议。
        :param pulumi.Input[builtins.str] server_group_id: 监听器的默认服务器组。
        :param pulumi.Input[builtins.str] status: 监听器的状态。取值如下：Creating：创建中。Active： 运行中。Pending： 变配中。Disabled：已停止。Deleting：删除中。
        :param pulumi.Input[builtins.str] updated_time: 监听器最近一次的操作时间。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ListenerState.__new__(_ListenerState)

        __props__.__dict__["access_log_record_customized_headers_enabled"] = access_log_record_customized_headers_enabled
        __props__.__dict__["acl_ids"] = acl_ids
        __props__.__dict__["acl_status"] = acl_status
        __props__.__dict__["acl_type"] = acl_type
        __props__.__dict__["ca_certificate_id"] = ca_certificate_id
        __props__.__dict__["ca_certificate_source"] = ca_certificate_source
        __props__.__dict__["cert_center_certificate_id"] = cert_center_certificate_id
        __props__.__dict__["certificate_id"] = certificate_id
        __props__.__dict__["certificate_source"] = certificate_source
        __props__.__dict__["created_time"] = created_time
        __props__.__dict__["customized_cfg_id"] = customized_cfg_id
        __props__.__dict__["description"] = description
        __props__.__dict__["domain_extensions"] = domain_extensions
        __props__.__dict__["enable_http2"] = enable_http2
        __props__.__dict__["enable_quic"] = enable_quic
        __props__.__dict__["enabled"] = enabled
        __props__.__dict__["listener_id"] = listener_id
        __props__.__dict__["listener_name"] = listener_name
        __props__.__dict__["load_balancer_id"] = load_balancer_id
        __props__.__dict__["pca_leaf_certificate_id"] = pca_leaf_certificate_id
        __props__.__dict__["pca_root_ca_certificate_id"] = pca_root_ca_certificate_id
        __props__.__dict__["pca_sub_ca_certificate_id"] = pca_sub_ca_certificate_id
        __props__.__dict__["port"] = port
        __props__.__dict__["project_name"] = project_name
        __props__.__dict__["protocol"] = protocol
        __props__.__dict__["server_group_id"] = server_group_id
        __props__.__dict__["server_groups"] = server_groups
        __props__.__dict__["status"] = status
        __props__.__dict__["tags"] = tags
        __props__.__dict__["updated_time"] = updated_time
        return Listener(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="accessLogRecordCustomizedHeadersEnabled")
    def access_log_record_customized_headers_enabled(self) -> pulumi.Output[builtins.str]:
        """
        监听器是否已开启“在访问日志中记录自定义header”的功能：on：表示该功能已开启。off：表示该功能未开启。
        """
        return pulumi.get(self, "access_log_record_customized_headers_enabled")

    @property
    @pulumi.getter(name="aclIds")
    def acl_ids(self) -> pulumi.Output[Sequence[builtins.str]]:
        """
        监听器绑定的访问控制策略组 ID。当AclStatus参数配置为 on 时，AclIds为必填参数。
        """
        return pulumi.get(self, "acl_ids")

    @property
    @pulumi.getter(name="aclStatus")
    def acl_status(self) -> pulumi.Output[builtins.str]:
        """
        是否开启访问控制功能。取值如下：on：开启。off ：不开启（默认）。
        """
        return pulumi.get(self, "acl_status")

    @property
    @pulumi.getter(name="aclType")
    def acl_type(self) -> pulumi.Output[builtins.str]:
        """
        访问控制的方式，取值如下：white：白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器不会转发任何请求。black：黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的IP地址或地址段的请求。 如果所选策略组中没有添加任何IP，则监听器会转发全部请求。当AclStatus参数配置为 on 时，AclType为必填参数。
        """
        return pulumi.get(self, "acl_type")

    @property
    @pulumi.getter(name="caCertificateId")
    def ca_certificate_id(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 alb 时，必须指定 CACertificateId 参数。
        """
        return pulumi.get(self, "ca_certificate_id")

    @property
    @pulumi.getter(name="caCertificateSource")
    def ca_certificate_source(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS 监听器关联的 CA 证书的来源，用于双向认证。alb（默认）：表示通过 ALB 上传的证书。标准版 ALB 实例不支持此来源的证书。pca*root：表示通过火山引擎证书中心购买或上传的私有根 CA 证书。pca*sub：表示通过火山引擎证书中心购买或上传的私有子 CA 证书。
        """
        return pulumi.get(self, "ca_certificate_source")

    @property
    @pulumi.getter(name="certCenterCertificateId")
    def cert_center_certificate_id(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 cert_center 时必传。
        """
        return pulumi.get(self, "cert_center_certificate_id")

    @property
    @pulumi.getter(name="certificateId")
    def certificate_id(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS监听器关联的证书 ID。创建 HTTPS 监听器且证书来源为 alb 时必传。
        """
        return pulumi.get(self, "certificate_id")

    @property
    @pulumi.getter(name="certificateSource")
    def certificate_source(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS监听器关联的默认证书的来源，取值：alb：表示通过 ALB 上传的证书。cert*center：表示通过火山引擎证书中心购买或上传的 SSL 证书。pca*leaf：表示通过火山引擎证书中心购买或上传的私有叶子证书。
        """
        return pulumi.get(self, "certificate_source")

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> pulumi.Output[builtins.str]:
        """
        监听器的创建时间。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter(name="customizedCfgId")
    def customized_cfg_id(self) -> pulumi.Output[builtins.str]:
        """
        个性化配置ID，未绑定时值为空字符串。
        """
        return pulumi.get(self, "customized_cfg_id")

    @property
    @pulumi.getter
    def description(self) -> pulumi.Output[builtins.str]:
        """
        监听器的描述。不能以http://或https://开头。必须以字母或中文开头，可包含数字、英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。） 。长度限制为1 ～ 255个字符。不填默认为空字符串。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="domainExtensions")
    def domain_extensions(self) -> pulumi.Output[Sequence['outputs.ListenerDomainExtension']]:
        return pulumi.get(self, "domain_extensions")

    @property
    @pulumi.getter(name="enableHttp2")
    def enable_http2(self) -> pulumi.Output[builtins.str]:
        """
        HTTP2.0 特性开关，该参数仅对 HTTPS 监听器有效。取值如下：on：开启。off：关闭（默认）。
        """
        return pulumi.get(self, "enable_http2")

    @property
    @pulumi.getter(name="enableQuic")
    def enable_quic(self) -> pulumi.Output[builtins.str]:
        """
        QUIC 特性开关，该参数仅对 HTTPS 监听器有效，取值如下：on：开启。off：关闭（默认）。只有标准版 ALB 实例支持 QUIC。
        """
        return pulumi.get(self, "enable_quic")

    @property
    @pulumi.getter
    def enabled(self) -> pulumi.Output[builtins.str]:
        """
        监听器开启/关闭，取值如下：on：开启（默认）。off：关闭。
        """
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter(name="listenerId")
    def listener_id(self) -> pulumi.Output[builtins.str]:
        """
        监听器 ID。
        """
        return pulumi.get(self, "listener_id")

    @property
    @pulumi.getter(name="listenerName")
    def listener_name(self) -> pulumi.Output[builtins.str]:
        """
        监听器的名字。不填写时以“协议-端口”格式命名。不能以http://或https://开头。必须以字母或中文开头，可包含数字、点（.）、下划线（_）和短横线（-）。长度限制在1-128字符之间。
        """
        return pulumi.get(self, "listener_name")

    @property
    @pulumi.getter(name="loadBalancerId")
    def load_balancer_id(self) -> pulumi.Output[builtins.str]:
        """
        监听器所属的负载均衡实例 ID。
        """
        return pulumi.get(self, "load_balancer_id")

    @property
    @pulumi.getter(name="pcaLeafCertificateId")
    def pca_leaf_certificate_id(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS监听器关联的私有叶子证书 ID。创建 HTTPS 监听器且证书来源为 pca_leaf 时必传。
        """
        return pulumi.get(self, "pca_leaf_certificate_id")

    @property
    @pulumi.getter(name="pcaRootCaCertificateId")
    def pca_root_ca_certificate_id(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_root 时，必须指定 PcaRootCACertificateId 参数。
        """
        return pulumi.get(self, "pca_root_ca_certificate_id")

    @property
    @pulumi.getter(name="pcaSubCaCertificateId")
    def pca_sub_ca_certificate_id(self) -> pulumi.Output[builtins.str]:
        """
        HTTPS 监听器关联的 CA 证书 ID。该参数用于 HTTPS 监听器的双向认证。当证书来源是 pca_sub 时，必须指定 PcaSubCACertificateId 参数。
        """
        return pulumi.get(self, "pca_sub_ca_certificate_id")

    @property
    @pulumi.getter
    def port(self) -> pulumi.Output[builtins.int]:
        """
        监听器的监听端口，取值：1   - 65535 。
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> pulumi.Output[builtins.str]:
        """
        监听器所属项目名称。
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter
    def protocol(self) -> pulumi.Output[builtins.str]:
        """
        监听器的协议，支持 HTTP 协议和 HTTPS 协议。
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter(name="serverGroupId")
    def server_group_id(self) -> pulumi.Output[builtins.str]:
        """
        监听器的默认服务器组。
        """
        return pulumi.get(self, "server_group_id")

    @property
    @pulumi.getter(name="serverGroups")
    def server_groups(self) -> pulumi.Output[Sequence['outputs.ListenerServerGroup']]:
        return pulumi.get(self, "server_groups")

    @property
    @pulumi.getter
    def status(self) -> pulumi.Output[builtins.str]:
        """
        监听器的状态。取值如下：Creating：创建中。Active： 运行中。Pending： 变配中。Disabled：已停止。Deleting：删除中。
        """
        return pulumi.get(self, "status")

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

    @property
    @pulumi.getter(name="updatedTime")
    def updated_time(self) -> pulumi.Output[builtins.str]:
        """
        监听器最近一次的操作时间。
        """
        return pulumi.get(self, "updated_time")

