# 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__ = ['InstanceArgs', 'Instance']

@pulumi.input_type
class InstanceArgs:
    def __init__(__self__, *,
                 configure_nodes: pulumi.Input[Sequence[pulumi.Input['InstanceConfigureNodeArgs']]],
                 engine_version: pulumi.Input[builtins.str],
                 multi_az: pulumi.Input[builtins.str],
                 node_number: pulumi.Input[builtins.int],
                 shard_capacity: pulumi.Input[builtins.int],
                 sharded_cluster: pulumi.Input[builtins.int],
                 subnet_id: pulumi.Input[builtins.str],
                 vpc_id: pulumi.Input[builtins.str],
                 allow_list_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 auto_renew: Optional[pulumi.Input[builtins.bool]] = None,
                 backup_point_name: Optional[pulumi.Input[builtins.str]] = None,
                 charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 create_backup: Optional[pulumi.Input[builtins.bool]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 no_auth_mode: Optional[pulumi.Input[builtins.str]] = None,
                 parameter_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 purchase_months: Optional[pulumi.Input[builtins.int]] = None,
                 reserve_additional_bandwidth: Optional[pulumi.Input[builtins.bool]] = None,
                 shard_number: Optional[pulumi.Input[builtins.int]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTagArgs']]]] = None):
        """
        The set of arguments for constructing a Instance resource.
        :param pulumi.Input[builtins.str] engine_version: 数据库版本号。
        :param pulumi.Input[builtins.str] multi_az: 设置实例的可用区部署方案。
        :param pulumi.Input[builtins.int] node_number: 每个分片中的节点数。取值范围为1~6。每个账号在每个地域下默认最多可创建4个256MiB规格的节点，若需要调整配额上限为10个，请参见账号配额。取值为1时表示创建单节点实例；取值大于1时表示创建主备实例。关于两种类型实例的功能特性差异详情，请参见功能特性差异。
        :param pulumi.Input[builtins.int] shard_capacity: 实例中每个分片的内存容量。单位：MiB。
        :param pulumi.Input[builtins.int] sharded_cluster: 是否启用分片集群。取值范围如下：0：不启用。1：启用。
        :param pulumi.Input[builtins.str] subnet_id: 设置实例的子网ID。子网具有可用区属性，必须选择目标私有网络中与实例属于同一可用区下的子网。子网是私有网络内的IP地址块私有网络中的所有云资源都必须部署在子网内，子网为云资源分配私网IP地址，您可以调用CreateSubnet接口创建子网。您可以调用DescribeSubnets接口查询指定可用区内的所有子网列表信息，包括子网ID。
        :param pulumi.Input[builtins.str] vpc_id: 设置实例的私有网络ID。建议Redis实例与需要连接的ECS实例在同一私有网络，否则它们无法通过内网互通来实现最佳性能。您可以调用CreateVpc接口创建私有网络。您可以调用DescribeVpcs接口查询符合指定条件的私有网络信息，包括私有网络ID。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] allow_list_ids: 白名单 ID 列表。若该参数留空，新建实例默认不加入任何白名单。您可以调用 DescribeAllowLists 接口查询当前账号下指定地域内的所有 IP 白名单信息，包括白名单 ID 信息。每个实例最多支持绑定 100 个白名单，每次可最多批量绑定 100 个白名单。每个实例最多支持绑定 1000 个 IP 地址或 CIDR 格式的 IP 地址段。
        :param pulumi.Input[builtins.bool] auto_renew: 是否开启自动续费。取值范围如下：false（默认值）：不开启。true：开启。
        :param pulumi.Input[builtins.str] backup_point_name: 为变更前创建的全量备份设置备份名称。
        :param pulumi.Input[builtins.str] charge_type: 实例计费类型。取值范围如下：PrePaid：包年包月（也称预付费）。PostPaid：按量计费（也称后付费）。
        :param pulumi.Input[builtins.bool] create_backup: 是否在变更前创建备份。
        :param pulumi.Input[builtins.str] deletion_protection: 开启或关闭实例删除保护功能。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头；只能包含中文、字母、数字、下划线（_）和中划线（-）；长度需要在1~128个字符内。
        :param pulumi.Input[builtins.str] no_auth_mode: 为新建实例开启或关闭免密访问功能。取值范围如下：open：开启免密访问。close（默认值）：关闭免密访问。
        :param pulumi.Input[builtins.str] parameter_group_id: 需要应用到新实例的参数模板。缓存数据库 Redis 版为每个数据库版本都创建了一份默认的系统参数模板，模板中包含了该版本支持设置的所有参数和默认参数值。若该参数留空，默认会根据您设置的数据库版本（即 EngineVersion）为新建实例选择并应用对应版本的系统参数模板。您可以调用 DescribeParameterGroups 接口查询当前账号和地域下的所有参数模板的基本信息，包括参数模板 ID。
        :param pulumi.Input[builtins.str] password: 设置默认数据库 default 账号的密码。
        :param pulumi.Input[builtins.int] port: 自定义私网连接地址的端口号。取值范围：1024~65535。若该参数留空，私网连接地址默认使用6379端口。实例创建成功后，还可以修改私网地址的端口号，修改方法请参见修改端口号。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目。
        :param pulumi.Input[builtins.int] purchase_months: 购买时长，单位：月。取值范围如下：按月购买：1，2，3，4，5，6，7，8，9。按年购买：12，24，36。当ChargeType为PrePaid时，该参数必填。
        :param pulumi.Input[builtins.bool] reserve_additional_bandwidth: 设置是否保留额外带宽
        :param pulumi.Input[builtins.int] shard_number: 实例中的分片数量。取值范围为 2~256。仅当 ShardedCluster 取值为 1（即启用分片集群）时，需要指定该参数。
        """
        pulumi.set(__self__, "configure_nodes", configure_nodes)
        pulumi.set(__self__, "engine_version", engine_version)
        pulumi.set(__self__, "multi_az", multi_az)
        pulumi.set(__self__, "node_number", node_number)
        pulumi.set(__self__, "shard_capacity", shard_capacity)
        pulumi.set(__self__, "sharded_cluster", sharded_cluster)
        pulumi.set(__self__, "subnet_id", subnet_id)
        pulumi.set(__self__, "vpc_id", vpc_id)
        if allow_list_ids is not None:
            pulumi.set(__self__, "allow_list_ids", allow_list_ids)
        if auto_renew is not None:
            pulumi.set(__self__, "auto_renew", auto_renew)
        if backup_point_name is not None:
            pulumi.set(__self__, "backup_point_name", backup_point_name)
        if charge_type is not None:
            pulumi.set(__self__, "charge_type", charge_type)
        if create_backup is not None:
            pulumi.set(__self__, "create_backup", create_backup)
        if deletion_protection is not None:
            pulumi.set(__self__, "deletion_protection", deletion_protection)
        if instance_name is not None:
            pulumi.set(__self__, "instance_name", instance_name)
        if no_auth_mode is not None:
            pulumi.set(__self__, "no_auth_mode", no_auth_mode)
        if parameter_group_id is not None:
            pulumi.set(__self__, "parameter_group_id", parameter_group_id)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if purchase_months is not None:
            pulumi.set(__self__, "purchase_months", purchase_months)
        if reserve_additional_bandwidth is not None:
            pulumi.set(__self__, "reserve_additional_bandwidth", reserve_additional_bandwidth)
        if shard_number is not None:
            pulumi.set(__self__, "shard_number", shard_number)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter(name="configureNodes")
    def configure_nodes(self) -> pulumi.Input[Sequence[pulumi.Input['InstanceConfigureNodeArgs']]]:
        return pulumi.get(self, "configure_nodes")

    @configure_nodes.setter
    def configure_nodes(self, value: pulumi.Input[Sequence[pulumi.Input['InstanceConfigureNodeArgs']]]):
        pulumi.set(self, "configure_nodes", value)

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> pulumi.Input[builtins.str]:
        """
        数据库版本号。
        """
        return pulumi.get(self, "engine_version")

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

    @property
    @pulumi.getter(name="multiAz")
    def multi_az(self) -> pulumi.Input[builtins.str]:
        """
        设置实例的可用区部署方案。
        """
        return pulumi.get(self, "multi_az")

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

    @property
    @pulumi.getter(name="nodeNumber")
    def node_number(self) -> pulumi.Input[builtins.int]:
        """
        每个分片中的节点数。取值范围为1~6。每个账号在每个地域下默认最多可创建4个256MiB规格的节点，若需要调整配额上限为10个，请参见账号配额。取值为1时表示创建单节点实例；取值大于1时表示创建主备实例。关于两种类型实例的功能特性差异详情，请参见功能特性差异。
        """
        return pulumi.get(self, "node_number")

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

    @property
    @pulumi.getter(name="shardCapacity")
    def shard_capacity(self) -> pulumi.Input[builtins.int]:
        """
        实例中每个分片的内存容量。单位：MiB。
        """
        return pulumi.get(self, "shard_capacity")

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

    @property
    @pulumi.getter(name="shardedCluster")
    def sharded_cluster(self) -> pulumi.Input[builtins.int]:
        """
        是否启用分片集群。取值范围如下：0：不启用。1：启用。
        """
        return pulumi.get(self, "sharded_cluster")

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

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> pulumi.Input[builtins.str]:
        """
        设置实例的子网ID。子网具有可用区属性，必须选择目标私有网络中与实例属于同一可用区下的子网。子网是私有网络内的IP地址块私有网络中的所有云资源都必须部署在子网内，子网为云资源分配私网IP地址，您可以调用CreateSubnet接口创建子网。您可以调用DescribeSubnets接口查询指定可用区内的所有子网列表信息，包括子网ID。
        """
        return pulumi.get(self, "subnet_id")

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

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> pulumi.Input[builtins.str]:
        """
        设置实例的私有网络ID。建议Redis实例与需要连接的ECS实例在同一私有网络，否则它们无法通过内网互通来实现最佳性能。您可以调用CreateVpc接口创建私有网络。您可以调用DescribeVpcs接口查询符合指定条件的私有网络信息，包括私有网络ID。
        """
        return pulumi.get(self, "vpc_id")

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

    @property
    @pulumi.getter(name="allowListIds")
    def allow_list_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        白名单 ID 列表。若该参数留空，新建实例默认不加入任何白名单。您可以调用 DescribeAllowLists 接口查询当前账号下指定地域内的所有 IP 白名单信息，包括白名单 ID 信息。每个实例最多支持绑定 100 个白名单，每次可最多批量绑定 100 个白名单。每个实例最多支持绑定 1000 个 IP 地址或 CIDR 格式的 IP 地址段。
        """
        return pulumi.get(self, "allow_list_ids")

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

    @property
    @pulumi.getter(name="autoRenew")
    def auto_renew(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启自动续费。取值范围如下：false（默认值）：不开启。true：开启。
        """
        return pulumi.get(self, "auto_renew")

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

    @property
    @pulumi.getter(name="backupPointName")
    def backup_point_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        为变更前创建的全量备份设置备份名称。
        """
        return pulumi.get(self, "backup_point_name")

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

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例计费类型。取值范围如下：PrePaid：包年包月（也称预付费）。PostPaid：按量计费（也称后付费）。
        """
        return pulumi.get(self, "charge_type")

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

    @property
    @pulumi.getter(name="createBackup")
    def create_backup(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否在变更前创建备份。
        """
        return pulumi.get(self, "create_backup")

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

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        开启或关闭实例删除保护功能。
        """
        return pulumi.get(self, "deletion_protection")

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

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例名称。命名规则：不能以数字、中划线（-）开头；只能包含中文、字母、数字、下划线（_）和中划线（-）；长度需要在1~128个字符内。
        """
        return pulumi.get(self, "instance_name")

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

    @property
    @pulumi.getter(name="noAuthMode")
    def no_auth_mode(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        为新建实例开启或关闭免密访问功能。取值范围如下：open：开启免密访问。close（默认值）：关闭免密访问。
        """
        return pulumi.get(self, "no_auth_mode")

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

    @property
    @pulumi.getter(name="parameterGroupId")
    def parameter_group_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        需要应用到新实例的参数模板。缓存数据库 Redis 版为每个数据库版本都创建了一份默认的系统参数模板，模板中包含了该版本支持设置的所有参数和默认参数值。若该参数留空，默认会根据您设置的数据库版本（即 EngineVersion）为新建实例选择并应用对应版本的系统参数模板。您可以调用 DescribeParameterGroups 接口查询当前账号和地域下的所有参数模板的基本信息，包括参数模板 ID。
        """
        return pulumi.get(self, "parameter_group_id")

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

    @property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        设置默认数据库 default 账号的密码。
        """
        return pulumi.get(self, "password")

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

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        自定义私网连接地址的端口号。取值范围：1024~65535。若该参数留空，私网连接地址默认使用6379端口。实例创建成功后，还可以修改私网地址的端口号，修改方法请参见修改端口号。
        """
        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(name="purchaseMonths")
    def purchase_months(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        购买时长，单位：月。取值范围如下：按月购买：1，2，3，4，5，6，7，8，9。按年购买：12，24，36。当ChargeType为PrePaid时，该参数必填。
        """
        return pulumi.get(self, "purchase_months")

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

    @property
    @pulumi.getter(name="reserveAdditionalBandwidth")
    def reserve_additional_bandwidth(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        设置是否保留额外带宽
        """
        return pulumi.get(self, "reserve_additional_bandwidth")

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

    @property
    @pulumi.getter(name="shardNumber")
    def shard_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        实例中的分片数量。取值范围为 2~256。仅当 ShardedCluster 取值为 1（即启用分片集群）时，需要指定该参数。
        """
        return pulumi.get(self, "shard_number")

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

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

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


@pulumi.input_type
class _InstanceState:
    def __init__(__self__, *,
                 allow_list_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 auto_renew: Optional[pulumi.Input[builtins.bool]] = None,
                 backup_point_name: Optional[pulumi.Input[builtins.str]] = None,
                 capacity: Optional[pulumi.Input['InstanceCapacityArgs']] = None,
                 charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 configure_nodes: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceConfigureNodeArgs']]]] = None,
                 create_backup: Optional[pulumi.Input[builtins.bool]] = None,
                 create_time: Optional[pulumi.Input[builtins.str]] = None,
                 data_layout: Optional[pulumi.Input[builtins.str]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 engine_version: Optional[pulumi.Input[builtins.str]] = None,
                 expired_time: Optional[pulumi.Input[builtins.str]] = None,
                 instance_class: Optional[pulumi.Input[builtins.str]] = None,
                 instance_id: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 instance_shards: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceInstanceShardArgs']]]] = None,
                 maintenance_time: Optional[pulumi.Input[builtins.str]] = None,
                 max_connections: Optional[pulumi.Input[builtins.int]] = None,
                 multi_az: Optional[pulumi.Input[builtins.str]] = None,
                 no_auth_mode: Optional[pulumi.Input[builtins.str]] = None,
                 node_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 node_number: Optional[pulumi.Input[builtins.int]] = None,
                 parameter_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 private_address: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 purchase_months: Optional[pulumi.Input[builtins.int]] = None,
                 reserve_additional_bandwidth: Optional[pulumi.Input[builtins.bool]] = None,
                 service_type: Optional[pulumi.Input[builtins.str]] = None,
                 shard_capacity: Optional[pulumi.Input[builtins.int]] = None,
                 shard_number: Optional[pulumi.Input[builtins.int]] = None,
                 sharded_cluster: Optional[pulumi.Input[builtins.int]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 subnet_id: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTagArgs']]]] = None,
                 vi_pv6: Optional[pulumi.Input[builtins.str]] = None,
                 vip: Optional[pulumi.Input[builtins.str]] = None,
                 visit_addrs: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceVisitAddrArgs']]]] = None,
                 vpc_auth_mode: Optional[pulumi.Input[builtins.str]] = None,
                 vpc_id: Optional[pulumi.Input[builtins.str]] = None,
                 zone_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
        """
        Input properties used for looking up and filtering Instance resources.
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] allow_list_ids: 白名单 ID 列表。若该参数留空，新建实例默认不加入任何白名单。您可以调用 DescribeAllowLists 接口查询当前账号下指定地域内的所有 IP 白名单信息，包括白名单 ID 信息。每个实例最多支持绑定 100 个白名单，每次可最多批量绑定 100 个白名单。每个实例最多支持绑定 1000 个 IP 地址或 CIDR 格式的 IP 地址段。
        :param pulumi.Input[builtins.bool] auto_renew: 是否开启自动续费。取值范围如下：false（默认值）：不开启。true：开启。
        :param pulumi.Input[builtins.str] backup_point_name: 为变更前创建的全量备份设置备份名称。
        :param pulumi.Input['InstanceCapacityArgs'] capacity: 实例的容量信息。
        :param pulumi.Input[builtins.str] charge_type: 实例计费类型。取值范围如下：PrePaid：包年包月（也称预付费）。PostPaid：按量计费（也称后付费）。
        :param pulumi.Input[builtins.bool] create_backup: 是否在变更前创建备份。
        :param pulumi.Input[builtins.str] create_time: 实例的创建时间。
        :param pulumi.Input[builtins.str] data_layout: 实例的数据存储形态。该参数仅对企业版（即ServiceType为Enterprise）实例有意义；社区版（即ServiceType为Basic）实例不涉及数据存储形态，DataLayout取值固定为RAM。若该参数留空，表示不使用数据存储形态进行筛选。
        :param pulumi.Input[builtins.str] deletion_protection: 开启或关闭实例删除保护功能。
        :param pulumi.Input[builtins.str] engine_version: 数据库版本号。
        :param pulumi.Input[builtins.str] expired_time: 实例到期时间。
        :param pulumi.Input[builtins.str] instance_class: Redis 实例的类型。取值范围如下：PrimarySecondary：主备实例；Standalone：单节点实例。若该参数留空，表示不使用实例类型条件进行筛选。关于实例类型的更多信息，请参见产品架构。
        :param pulumi.Input[builtins.str] instance_id: 实例 ID。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头；只能包含中文、字母、数字、下划线（_）和中划线（-）；长度需要在1~128个字符内。
        :param pulumi.Input[builtins.str] maintenance_time: 实例的可维护时间段，格式为HH:mm-HH:mm（UTC+8）。
        :param pulumi.Input[builtins.int] max_connections: 实例当前单分片最大连接数。每分片的默认连接数为10000，您也可以根据业务需要调用ModifyDBInstanceMaxConn接口修改单分片的最大连接数。
        :param pulumi.Input[builtins.str] multi_az: 设置实例的可用区部署方案。
        :param pulumi.Input[builtins.str] no_auth_mode: 为新建实例开启或关闭免密访问功能。取值范围如下：open：开启免密访问。close（默认值）：关闭免密访问。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] node_ids: Proxy 和 Server 节点 ID 列表。
        :param pulumi.Input[builtins.int] node_number: 每个分片中的节点数。取值范围为1~6。每个账号在每个地域下默认最多可创建4个256MiB规格的节点，若需要调整配额上限为10个，请参见账号配额。取值为1时表示创建单节点实例；取值大于1时表示创建主备实例。关于两种类型实例的功能特性差异详情，请参见功能特性差异。
        :param pulumi.Input[builtins.str] parameter_group_id: 需要应用到新实例的参数模板。缓存数据库 Redis 版为每个数据库版本都创建了一份默认的系统参数模板，模板中包含了该版本支持设置的所有参数和默认参数值。若该参数留空，默认会根据您设置的数据库版本（即 EngineVersion）为新建实例选择并应用对应版本的系统参数模板。您可以调用 DescribeParameterGroups 接口查询当前账号和地域下的所有参数模板的基本信息，包括参数模板 ID。
        :param pulumi.Input[builtins.str] password: 设置默认数据库 default 账号的密码。
        :param pulumi.Input[builtins.int] port: 自定义私网连接地址的端口号。取值范围：1024~65535。若该参数留空，私网连接地址默认使用6379端口。实例创建成功后，还可以修改私网地址的端口号，修改方法请参见修改端口号。
        :param pulumi.Input[builtins.str] private_address: 实例私网连接地址的域名。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目。
        :param pulumi.Input[builtins.int] purchase_months: 购买时长，单位：月。取值范围如下：按月购买：1，2，3，4，5，6，7，8，9。按年购买：12，24，36。当ChargeType为PrePaid时，该参数必填。
        :param pulumi.Input[builtins.bool] reserve_additional_bandwidth: 设置是否保留额外带宽
        :param pulumi.Input[builtins.str] service_type: 实例的服务类型
        :param pulumi.Input[builtins.int] shard_capacity: 实例中每个分片的内存容量。单位：MiB。
        :param pulumi.Input[builtins.int] shard_number: 实例中的分片数量。取值范围为 2~256。仅当 ShardedCluster 取值为 1（即启用分片集群）时，需要指定该参数。
        :param pulumi.Input[builtins.int] sharded_cluster: 是否启用分片集群。取值范围如下：0：不启用。1：启用。
        :param pulumi.Input[builtins.str] status: 实例的服务类型，取值范围如下：Basic（默认值）：社区版；Enterprise：企业版。
        :param pulumi.Input[builtins.str] subnet_id: 设置实例的子网ID。子网具有可用区属性，必须选择目标私有网络中与实例属于同一可用区下的子网。子网是私有网络内的IP地址块私有网络中的所有云资源都必须部署在子网内，子网为云资源分配私网IP地址，您可以调用CreateSubnet接口创建子网。您可以调用DescribeSubnets接口查询指定可用区内的所有子网列表信息，包括子网ID。
        :param pulumi.Input[builtins.str] vi_pv6: 实例私网连接地址所对应的 IPv6 地址。仅当实例使用了 IPv6 地址时才会返回该参数。
        :param pulumi.Input[builtins.str] vip: 实例私网连接地址所对应的 IPv4 地址。
        :param pulumi.Input[builtins.str] vpc_auth_mode: 开启或关闭免密访问功能。取值范围如下：open：开启免密访问；close：关闭免密访问。参数取值不区分大小写。
        :param pulumi.Input[builtins.str] vpc_id: 设置实例的私有网络ID。建议Redis实例与需要连接的ECS实例在同一私有网络，否则它们无法通过内网互通来实现最佳性能。您可以调用CreateVpc接口创建私有网络。您可以调用DescribeVpcs接口查询符合指定条件的私有网络信息，包括私有网络ID。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] zone_ids: 实例所在的可用区列表。
        """
        if allow_list_ids is not None:
            pulumi.set(__self__, "allow_list_ids", allow_list_ids)
        if auto_renew is not None:
            pulumi.set(__self__, "auto_renew", auto_renew)
        if backup_point_name is not None:
            pulumi.set(__self__, "backup_point_name", backup_point_name)
        if capacity is not None:
            pulumi.set(__self__, "capacity", capacity)
        if charge_type is not None:
            pulumi.set(__self__, "charge_type", charge_type)
        if configure_nodes is not None:
            pulumi.set(__self__, "configure_nodes", configure_nodes)
        if create_backup is not None:
            pulumi.set(__self__, "create_backup", create_backup)
        if create_time is not None:
            pulumi.set(__self__, "create_time", create_time)
        if data_layout is not None:
            pulumi.set(__self__, "data_layout", data_layout)
        if deletion_protection is not None:
            pulumi.set(__self__, "deletion_protection", deletion_protection)
        if engine_version is not None:
            pulumi.set(__self__, "engine_version", engine_version)
        if expired_time is not None:
            pulumi.set(__self__, "expired_time", expired_time)
        if instance_class is not None:
            pulumi.set(__self__, "instance_class", instance_class)
        if instance_id is not None:
            pulumi.set(__self__, "instance_id", instance_id)
        if instance_name is not None:
            pulumi.set(__self__, "instance_name", instance_name)
        if instance_shards is not None:
            pulumi.set(__self__, "instance_shards", instance_shards)
        if maintenance_time is not None:
            pulumi.set(__self__, "maintenance_time", maintenance_time)
        if max_connections is not None:
            pulumi.set(__self__, "max_connections", max_connections)
        if multi_az is not None:
            pulumi.set(__self__, "multi_az", multi_az)
        if no_auth_mode is not None:
            pulumi.set(__self__, "no_auth_mode", no_auth_mode)
        if node_ids is not None:
            pulumi.set(__self__, "node_ids", node_ids)
        if node_number is not None:
            pulumi.set(__self__, "node_number", node_number)
        if parameter_group_id is not None:
            pulumi.set(__self__, "parameter_group_id", parameter_group_id)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if private_address is not None:
            pulumi.set(__self__, "private_address", private_address)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if purchase_months is not None:
            pulumi.set(__self__, "purchase_months", purchase_months)
        if reserve_additional_bandwidth is not None:
            pulumi.set(__self__, "reserve_additional_bandwidth", reserve_additional_bandwidth)
        if service_type is not None:
            pulumi.set(__self__, "service_type", service_type)
        if shard_capacity is not None:
            pulumi.set(__self__, "shard_capacity", shard_capacity)
        if shard_number is not None:
            pulumi.set(__self__, "shard_number", shard_number)
        if sharded_cluster is not None:
            pulumi.set(__self__, "sharded_cluster", sharded_cluster)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if subnet_id is not None:
            pulumi.set(__self__, "subnet_id", subnet_id)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if vi_pv6 is not None:
            pulumi.set(__self__, "vi_pv6", vi_pv6)
        if vip is not None:
            pulumi.set(__self__, "vip", vip)
        if visit_addrs is not None:
            pulumi.set(__self__, "visit_addrs", visit_addrs)
        if vpc_auth_mode is not None:
            pulumi.set(__self__, "vpc_auth_mode", vpc_auth_mode)
        if vpc_id is not None:
            pulumi.set(__self__, "vpc_id", vpc_id)
        if zone_ids is not None:
            pulumi.set(__self__, "zone_ids", zone_ids)

    @property
    @pulumi.getter(name="allowListIds")
    def allow_list_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        白名单 ID 列表。若该参数留空，新建实例默认不加入任何白名单。您可以调用 DescribeAllowLists 接口查询当前账号下指定地域内的所有 IP 白名单信息，包括白名单 ID 信息。每个实例最多支持绑定 100 个白名单，每次可最多批量绑定 100 个白名单。每个实例最多支持绑定 1000 个 IP 地址或 CIDR 格式的 IP 地址段。
        """
        return pulumi.get(self, "allow_list_ids")

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

    @property
    @pulumi.getter(name="autoRenew")
    def auto_renew(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否开启自动续费。取值范围如下：false（默认值）：不开启。true：开启。
        """
        return pulumi.get(self, "auto_renew")

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

    @property
    @pulumi.getter(name="backupPointName")
    def backup_point_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        为变更前创建的全量备份设置备份名称。
        """
        return pulumi.get(self, "backup_point_name")

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

    @property
    @pulumi.getter
    def capacity(self) -> Optional[pulumi.Input['InstanceCapacityArgs']]:
        """
        实例的容量信息。
        """
        return pulumi.get(self, "capacity")

    @capacity.setter
    def capacity(self, value: Optional[pulumi.Input['InstanceCapacityArgs']]):
        pulumi.set(self, "capacity", value)

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例计费类型。取值范围如下：PrePaid：包年包月（也称预付费）。PostPaid：按量计费（也称后付费）。
        """
        return pulumi.get(self, "charge_type")

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

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

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

    @property
    @pulumi.getter(name="createBackup")
    def create_backup(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        是否在变更前创建备份。
        """
        return pulumi.get(self, "create_backup")

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

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的创建时间。
        """
        return pulumi.get(self, "create_time")

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

    @property
    @pulumi.getter(name="dataLayout")
    def data_layout(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的数据存储形态。该参数仅对企业版（即ServiceType为Enterprise）实例有意义；社区版（即ServiceType为Basic）实例不涉及数据存储形态，DataLayout取值固定为RAM。若该参数留空，表示不使用数据存储形态进行筛选。
        """
        return pulumi.get(self, "data_layout")

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

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        开启或关闭实例删除保护功能。
        """
        return pulumi.get(self, "deletion_protection")

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

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        数据库版本号。
        """
        return pulumi.get(self, "engine_version")

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

    @property
    @pulumi.getter(name="expiredTime")
    def expired_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例到期时间。
        """
        return pulumi.get(self, "expired_time")

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

    @property
    @pulumi.getter(name="instanceClass")
    def instance_class(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        Redis 实例的类型。取值范围如下：PrimarySecondary：主备实例；Standalone：单节点实例。若该参数留空，表示不使用实例类型条件进行筛选。关于实例类型的更多信息，请参见产品架构。
        """
        return pulumi.get(self, "instance_class")

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

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例 ID。
        """
        return pulumi.get(self, "instance_id")

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

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例名称。命名规则：不能以数字、中划线（-）开头；只能包含中文、字母、数字、下划线（_）和中划线（-）；长度需要在1~128个字符内。
        """
        return pulumi.get(self, "instance_name")

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

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

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

    @property
    @pulumi.getter(name="maintenanceTime")
    def maintenance_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的可维护时间段，格式为HH:mm-HH:mm（UTC+8）。
        """
        return pulumi.get(self, "maintenance_time")

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

    @property
    @pulumi.getter(name="maxConnections")
    def max_connections(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        实例当前单分片最大连接数。每分片的默认连接数为10000，您也可以根据业务需要调用ModifyDBInstanceMaxConn接口修改单分片的最大连接数。
        """
        return pulumi.get(self, "max_connections")

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

    @property
    @pulumi.getter(name="multiAz")
    def multi_az(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        设置实例的可用区部署方案。
        """
        return pulumi.get(self, "multi_az")

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

    @property
    @pulumi.getter(name="noAuthMode")
    def no_auth_mode(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        为新建实例开启或关闭免密访问功能。取值范围如下：open：开启免密访问。close（默认值）：关闭免密访问。
        """
        return pulumi.get(self, "no_auth_mode")

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

    @property
    @pulumi.getter(name="nodeIds")
    def node_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        Proxy 和 Server 节点 ID 列表。
        """
        return pulumi.get(self, "node_ids")

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

    @property
    @pulumi.getter(name="nodeNumber")
    def node_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        每个分片中的节点数。取值范围为1~6。每个账号在每个地域下默认最多可创建4个256MiB规格的节点，若需要调整配额上限为10个，请参见账号配额。取值为1时表示创建单节点实例；取值大于1时表示创建主备实例。关于两种类型实例的功能特性差异详情，请参见功能特性差异。
        """
        return pulumi.get(self, "node_number")

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

    @property
    @pulumi.getter(name="parameterGroupId")
    def parameter_group_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        需要应用到新实例的参数模板。缓存数据库 Redis 版为每个数据库版本都创建了一份默认的系统参数模板，模板中包含了该版本支持设置的所有参数和默认参数值。若该参数留空，默认会根据您设置的数据库版本（即 EngineVersion）为新建实例选择并应用对应版本的系统参数模板。您可以调用 DescribeParameterGroups 接口查询当前账号和地域下的所有参数模板的基本信息，包括参数模板 ID。
        """
        return pulumi.get(self, "parameter_group_id")

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

    @property
    @pulumi.getter
    def password(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        设置默认数据库 default 账号的密码。
        """
        return pulumi.get(self, "password")

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

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        自定义私网连接地址的端口号。取值范围：1024~65535。若该参数留空，私网连接地址默认使用6379端口。实例创建成功后，还可以修改私网地址的端口号，修改方法请参见修改端口号。
        """
        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="privateAddress")
    def private_address(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例私网连接地址的域名。
        """
        return pulumi.get(self, "private_address")

    @private_address.setter
    def private_address(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "private_address", 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(name="purchaseMonths")
    def purchase_months(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        购买时长，单位：月。取值范围如下：按月购买：1，2，3，4，5，6，7，8，9。按年购买：12，24，36。当ChargeType为PrePaid时，该参数必填。
        """
        return pulumi.get(self, "purchase_months")

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

    @property
    @pulumi.getter(name="reserveAdditionalBandwidth")
    def reserve_additional_bandwidth(self) -> Optional[pulumi.Input[builtins.bool]]:
        """
        设置是否保留额外带宽
        """
        return pulumi.get(self, "reserve_additional_bandwidth")

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

    @property
    @pulumi.getter(name="serviceType")
    def service_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的服务类型
        """
        return pulumi.get(self, "service_type")

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

    @property
    @pulumi.getter(name="shardCapacity")
    def shard_capacity(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        实例中每个分片的内存容量。单位：MiB。
        """
        return pulumi.get(self, "shard_capacity")

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

    @property
    @pulumi.getter(name="shardNumber")
    def shard_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        实例中的分片数量。取值范围为 2~256。仅当 ShardedCluster 取值为 1（即启用分片集群）时，需要指定该参数。
        """
        return pulumi.get(self, "shard_number")

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

    @property
    @pulumi.getter(name="shardedCluster")
    def sharded_cluster(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        是否启用分片集群。取值范围如下：0：不启用。1：启用。
        """
        return pulumi.get(self, "sharded_cluster")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的服务类型，取值范围如下：Basic（默认值）：社区版；Enterprise：企业版。
        """
        return pulumi.get(self, "status")

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

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        设置实例的子网ID。子网具有可用区属性，必须选择目标私有网络中与实例属于同一可用区下的子网。子网是私有网络内的IP地址块私有网络中的所有云资源都必须部署在子网内，子网为云资源分配私网IP地址，您可以调用CreateSubnet接口创建子网。您可以调用DescribeSubnets接口查询指定可用区内的所有子网列表信息，包括子网ID。
        """
        return pulumi.get(self, "subnet_id")

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

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

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

    @property
    @pulumi.getter(name="viPv6")
    def vi_pv6(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例私网连接地址所对应的 IPv6 地址。仅当实例使用了 IPv6 地址时才会返回该参数。
        """
        return pulumi.get(self, "vi_pv6")

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

    @property
    @pulumi.getter
    def vip(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例私网连接地址所对应的 IPv4 地址。
        """
        return pulumi.get(self, "vip")

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

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

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

    @property
    @pulumi.getter(name="vpcAuthMode")
    def vpc_auth_mode(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        开启或关闭免密访问功能。取值范围如下：open：开启免密访问；close：关闭免密访问。参数取值不区分大小写。
        """
        return pulumi.get(self, "vpc_auth_mode")

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

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        设置实例的私有网络ID。建议Redis实例与需要连接的ECS实例在同一私有网络，否则它们无法通过内网互通来实现最佳性能。您可以调用CreateVpc接口创建私有网络。您可以调用DescribeVpcs接口查询符合指定条件的私有网络信息，包括私有网络ID。
        """
        return pulumi.get(self, "vpc_id")

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

    @property
    @pulumi.getter(name="zoneIds")
    def zone_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
        """
        实例所在的可用区列表。
        """
        return pulumi.get(self, "zone_ids")

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


@pulumi.type_token("bytepluscc:redis/instance:Instance")
class Instance(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 allow_list_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 auto_renew: Optional[pulumi.Input[builtins.bool]] = None,
                 backup_point_name: Optional[pulumi.Input[builtins.str]] = None,
                 charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 configure_nodes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceConfigureNodeArgs', 'InstanceConfigureNodeArgsDict']]]]] = None,
                 create_backup: Optional[pulumi.Input[builtins.bool]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 engine_version: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 multi_az: Optional[pulumi.Input[builtins.str]] = None,
                 no_auth_mode: Optional[pulumi.Input[builtins.str]] = None,
                 node_number: Optional[pulumi.Input[builtins.int]] = None,
                 parameter_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 purchase_months: Optional[pulumi.Input[builtins.int]] = None,
                 reserve_additional_bandwidth: Optional[pulumi.Input[builtins.bool]] = None,
                 shard_capacity: Optional[pulumi.Input[builtins.int]] = None,
                 shard_number: Optional[pulumi.Input[builtins.int]] = None,
                 sharded_cluster: Optional[pulumi.Input[builtins.int]] = None,
                 subnet_id: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceTagArgs', 'InstanceTagArgsDict']]]]] = None,
                 vpc_id: Optional[pulumi.Input[builtins.str]] = None,
                 __props__=None):
        """
        缓存数据库 Redis 版的基本单位是实例。实例是独立的、虚拟化的数据库运行环境，是多个数据节点与代理节点的集合，数据节点上运行 Redis 引擎。

        ## Example Usage

        ```python
        import pulumi
        import pulumi_bytepluscc as bytepluscc

        redis_instance_demo = bytepluscc.redis.Instance("RedisInstanceDemo",
            instance_name="RedisInstance",
            sharded_cluster=1,
            password="********",
            node_number=2,
            shard_capacity=512,
            shard_number=2,
            engine_version="5.0",
            vpc_id="vpc-13f8xxxx",
            subnet_id="vpc_subnet-xxxx",
            deletion_protection="disabled",
            charge_type="PostPaid",
            port=6381,
            project_name="default",
            tags=[{
                "key": "env",
                "value": "test",
            }],
            multi_az="enabled",
            configure_nodes=[
                {
                    "az": "cn-beijing-a",
                },
                {
                    "az": "cn-beijing-b",
                },
            ])
        ```

        ## Import

        ```sh
        $ pulumi import bytepluscc:redis/instance:Instance example "instance_id"
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] allow_list_ids: 白名单 ID 列表。若该参数留空，新建实例默认不加入任何白名单。您可以调用 DescribeAllowLists 接口查询当前账号下指定地域内的所有 IP 白名单信息，包括白名单 ID 信息。每个实例最多支持绑定 100 个白名单，每次可最多批量绑定 100 个白名单。每个实例最多支持绑定 1000 个 IP 地址或 CIDR 格式的 IP 地址段。
        :param pulumi.Input[builtins.bool] auto_renew: 是否开启自动续费。取值范围如下：false（默认值）：不开启。true：开启。
        :param pulumi.Input[builtins.str] backup_point_name: 为变更前创建的全量备份设置备份名称。
        :param pulumi.Input[builtins.str] charge_type: 实例计费类型。取值范围如下：PrePaid：包年包月（也称预付费）。PostPaid：按量计费（也称后付费）。
        :param pulumi.Input[builtins.bool] create_backup: 是否在变更前创建备份。
        :param pulumi.Input[builtins.str] deletion_protection: 开启或关闭实例删除保护功能。
        :param pulumi.Input[builtins.str] engine_version: 数据库版本号。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头；只能包含中文、字母、数字、下划线（_）和中划线（-）；长度需要在1~128个字符内。
        :param pulumi.Input[builtins.str] multi_az: 设置实例的可用区部署方案。
        :param pulumi.Input[builtins.str] no_auth_mode: 为新建实例开启或关闭免密访问功能。取值范围如下：open：开启免密访问。close（默认值）：关闭免密访问。
        :param pulumi.Input[builtins.int] node_number: 每个分片中的节点数。取值范围为1~6。每个账号在每个地域下默认最多可创建4个256MiB规格的节点，若需要调整配额上限为10个，请参见账号配额。取值为1时表示创建单节点实例；取值大于1时表示创建主备实例。关于两种类型实例的功能特性差异详情，请参见功能特性差异。
        :param pulumi.Input[builtins.str] parameter_group_id: 需要应用到新实例的参数模板。缓存数据库 Redis 版为每个数据库版本都创建了一份默认的系统参数模板，模板中包含了该版本支持设置的所有参数和默认参数值。若该参数留空，默认会根据您设置的数据库版本（即 EngineVersion）为新建实例选择并应用对应版本的系统参数模板。您可以调用 DescribeParameterGroups 接口查询当前账号和地域下的所有参数模板的基本信息，包括参数模板 ID。
        :param pulumi.Input[builtins.str] password: 设置默认数据库 default 账号的密码。
        :param pulumi.Input[builtins.int] port: 自定义私网连接地址的端口号。取值范围：1024~65535。若该参数留空，私网连接地址默认使用6379端口。实例创建成功后，还可以修改私网地址的端口号，修改方法请参见修改端口号。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目。
        :param pulumi.Input[builtins.int] purchase_months: 购买时长，单位：月。取值范围如下：按月购买：1，2，3，4，5，6，7，8，9。按年购买：12，24，36。当ChargeType为PrePaid时，该参数必填。
        :param pulumi.Input[builtins.bool] reserve_additional_bandwidth: 设置是否保留额外带宽
        :param pulumi.Input[builtins.int] shard_capacity: 实例中每个分片的内存容量。单位：MiB。
        :param pulumi.Input[builtins.int] shard_number: 实例中的分片数量。取值范围为 2~256。仅当 ShardedCluster 取值为 1（即启用分片集群）时，需要指定该参数。
        :param pulumi.Input[builtins.int] sharded_cluster: 是否启用分片集群。取值范围如下：0：不启用。1：启用。
        :param pulumi.Input[builtins.str] subnet_id: 设置实例的子网ID。子网具有可用区属性，必须选择目标私有网络中与实例属于同一可用区下的子网。子网是私有网络内的IP地址块私有网络中的所有云资源都必须部署在子网内，子网为云资源分配私网IP地址，您可以调用CreateSubnet接口创建子网。您可以调用DescribeSubnets接口查询指定可用区内的所有子网列表信息，包括子网ID。
        :param pulumi.Input[builtins.str] vpc_id: 设置实例的私有网络ID。建议Redis实例与需要连接的ECS实例在同一私有网络，否则它们无法通过内网互通来实现最佳性能。您可以调用CreateVpc接口创建私有网络。您可以调用DescribeVpcs接口查询符合指定条件的私有网络信息，包括私有网络ID。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: InstanceArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        缓存数据库 Redis 版的基本单位是实例。实例是独立的、虚拟化的数据库运行环境，是多个数据节点与代理节点的集合，数据节点上运行 Redis 引擎。

        ## Example Usage

        ```python
        import pulumi
        import pulumi_bytepluscc as bytepluscc

        redis_instance_demo = bytepluscc.redis.Instance("RedisInstanceDemo",
            instance_name="RedisInstance",
            sharded_cluster=1,
            password="********",
            node_number=2,
            shard_capacity=512,
            shard_number=2,
            engine_version="5.0",
            vpc_id="vpc-13f8xxxx",
            subnet_id="vpc_subnet-xxxx",
            deletion_protection="disabled",
            charge_type="PostPaid",
            port=6381,
            project_name="default",
            tags=[{
                "key": "env",
                "value": "test",
            }],
            multi_az="enabled",
            configure_nodes=[
                {
                    "az": "cn-beijing-a",
                },
                {
                    "az": "cn-beijing-b",
                },
            ])
        ```

        ## Import

        ```sh
        $ pulumi import bytepluscc:redis/instance:Instance example "instance_id"
        ```

        :param str resource_name: The name of the resource.
        :param InstanceArgs 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(InstanceArgs, 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_list_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
                 auto_renew: Optional[pulumi.Input[builtins.bool]] = None,
                 backup_point_name: Optional[pulumi.Input[builtins.str]] = None,
                 charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 configure_nodes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceConfigureNodeArgs', 'InstanceConfigureNodeArgsDict']]]]] = None,
                 create_backup: Optional[pulumi.Input[builtins.bool]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 engine_version: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 multi_az: Optional[pulumi.Input[builtins.str]] = None,
                 no_auth_mode: Optional[pulumi.Input[builtins.str]] = None,
                 node_number: Optional[pulumi.Input[builtins.int]] = None,
                 parameter_group_id: Optional[pulumi.Input[builtins.str]] = None,
                 password: Optional[pulumi.Input[builtins.str]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 purchase_months: Optional[pulumi.Input[builtins.int]] = None,
                 reserve_additional_bandwidth: Optional[pulumi.Input[builtins.bool]] = None,
                 shard_capacity: Optional[pulumi.Input[builtins.int]] = None,
                 shard_number: Optional[pulumi.Input[builtins.int]] = None,
                 sharded_cluster: Optional[pulumi.Input[builtins.int]] = None,
                 subnet_id: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceTagArgs', 'InstanceTagArgsDict']]]]] = None,
                 vpc_id: Optional[pulumi.Input[builtins.str]] = 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__ = InstanceArgs.__new__(InstanceArgs)

            __props__.__dict__["allow_list_ids"] = allow_list_ids
            __props__.__dict__["auto_renew"] = auto_renew
            __props__.__dict__["backup_point_name"] = backup_point_name
            __props__.__dict__["charge_type"] = charge_type
            if configure_nodes is None and not opts.urn:
                raise TypeError("Missing required property 'configure_nodes'")
            __props__.__dict__["configure_nodes"] = configure_nodes
            __props__.__dict__["create_backup"] = create_backup
            __props__.__dict__["deletion_protection"] = deletion_protection
            if engine_version is None and not opts.urn:
                raise TypeError("Missing required property 'engine_version'")
            __props__.__dict__["engine_version"] = engine_version
            __props__.__dict__["instance_name"] = instance_name
            if multi_az is None and not opts.urn:
                raise TypeError("Missing required property 'multi_az'")
            __props__.__dict__["multi_az"] = multi_az
            __props__.__dict__["no_auth_mode"] = no_auth_mode
            if node_number is None and not opts.urn:
                raise TypeError("Missing required property 'node_number'")
            __props__.__dict__["node_number"] = node_number
            __props__.__dict__["parameter_group_id"] = parameter_group_id
            __props__.__dict__["password"] = password
            __props__.__dict__["port"] = port
            __props__.__dict__["project_name"] = project_name
            __props__.__dict__["purchase_months"] = purchase_months
            __props__.__dict__["reserve_additional_bandwidth"] = reserve_additional_bandwidth
            if shard_capacity is None and not opts.urn:
                raise TypeError("Missing required property 'shard_capacity'")
            __props__.__dict__["shard_capacity"] = shard_capacity
            __props__.__dict__["shard_number"] = shard_number
            if sharded_cluster is None and not opts.urn:
                raise TypeError("Missing required property 'sharded_cluster'")
            __props__.__dict__["sharded_cluster"] = sharded_cluster
            if subnet_id is None and not opts.urn:
                raise TypeError("Missing required property 'subnet_id'")
            __props__.__dict__["subnet_id"] = subnet_id
            __props__.__dict__["tags"] = tags
            if vpc_id is None and not opts.urn:
                raise TypeError("Missing required property 'vpc_id'")
            __props__.__dict__["vpc_id"] = vpc_id
            __props__.__dict__["capacity"] = None
            __props__.__dict__["create_time"] = None
            __props__.__dict__["data_layout"] = None
            __props__.__dict__["expired_time"] = None
            __props__.__dict__["instance_class"] = None
            __props__.__dict__["instance_id"] = None
            __props__.__dict__["instance_shards"] = None
            __props__.__dict__["maintenance_time"] = None
            __props__.__dict__["max_connections"] = None
            __props__.__dict__["node_ids"] = None
            __props__.__dict__["private_address"] = None
            __props__.__dict__["service_type"] = None
            __props__.__dict__["status"] = None
            __props__.__dict__["vi_pv6"] = None
            __props__.__dict__["vip"] = None
            __props__.__dict__["visit_addrs"] = None
            __props__.__dict__["vpc_auth_mode"] = None
            __props__.__dict__["zone_ids"] = None
        super(Instance, __self__).__init__(
            'bytepluscc:redis/instance:Instance',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            allow_list_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
            auto_renew: Optional[pulumi.Input[builtins.bool]] = None,
            backup_point_name: Optional[pulumi.Input[builtins.str]] = None,
            capacity: Optional[pulumi.Input[Union['InstanceCapacityArgs', 'InstanceCapacityArgsDict']]] = None,
            charge_type: Optional[pulumi.Input[builtins.str]] = None,
            configure_nodes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceConfigureNodeArgs', 'InstanceConfigureNodeArgsDict']]]]] = None,
            create_backup: Optional[pulumi.Input[builtins.bool]] = None,
            create_time: Optional[pulumi.Input[builtins.str]] = None,
            data_layout: Optional[pulumi.Input[builtins.str]] = None,
            deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
            engine_version: Optional[pulumi.Input[builtins.str]] = None,
            expired_time: Optional[pulumi.Input[builtins.str]] = None,
            instance_class: Optional[pulumi.Input[builtins.str]] = None,
            instance_id: Optional[pulumi.Input[builtins.str]] = None,
            instance_name: Optional[pulumi.Input[builtins.str]] = None,
            instance_shards: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceInstanceShardArgs', 'InstanceInstanceShardArgsDict']]]]] = None,
            maintenance_time: Optional[pulumi.Input[builtins.str]] = None,
            max_connections: Optional[pulumi.Input[builtins.int]] = None,
            multi_az: Optional[pulumi.Input[builtins.str]] = None,
            no_auth_mode: Optional[pulumi.Input[builtins.str]] = None,
            node_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
            node_number: Optional[pulumi.Input[builtins.int]] = None,
            parameter_group_id: Optional[pulumi.Input[builtins.str]] = None,
            password: Optional[pulumi.Input[builtins.str]] = None,
            port: Optional[pulumi.Input[builtins.int]] = None,
            private_address: Optional[pulumi.Input[builtins.str]] = None,
            project_name: Optional[pulumi.Input[builtins.str]] = None,
            purchase_months: Optional[pulumi.Input[builtins.int]] = None,
            reserve_additional_bandwidth: Optional[pulumi.Input[builtins.bool]] = None,
            service_type: Optional[pulumi.Input[builtins.str]] = None,
            shard_capacity: Optional[pulumi.Input[builtins.int]] = None,
            shard_number: Optional[pulumi.Input[builtins.int]] = None,
            sharded_cluster: Optional[pulumi.Input[builtins.int]] = None,
            status: Optional[pulumi.Input[builtins.str]] = None,
            subnet_id: Optional[pulumi.Input[builtins.str]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceTagArgs', 'InstanceTagArgsDict']]]]] = None,
            vi_pv6: Optional[pulumi.Input[builtins.str]] = None,
            vip: Optional[pulumi.Input[builtins.str]] = None,
            visit_addrs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceVisitAddrArgs', 'InstanceVisitAddrArgsDict']]]]] = None,
            vpc_auth_mode: Optional[pulumi.Input[builtins.str]] = None,
            vpc_id: Optional[pulumi.Input[builtins.str]] = None,
            zone_ids: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None) -> 'Instance':
        """
        Get an existing Instance 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[Sequence[pulumi.Input[builtins.str]]] allow_list_ids: 白名单 ID 列表。若该参数留空，新建实例默认不加入任何白名单。您可以调用 DescribeAllowLists 接口查询当前账号下指定地域内的所有 IP 白名单信息，包括白名单 ID 信息。每个实例最多支持绑定 100 个白名单，每次可最多批量绑定 100 个白名单。每个实例最多支持绑定 1000 个 IP 地址或 CIDR 格式的 IP 地址段。
        :param pulumi.Input[builtins.bool] auto_renew: 是否开启自动续费。取值范围如下：false（默认值）：不开启。true：开启。
        :param pulumi.Input[builtins.str] backup_point_name: 为变更前创建的全量备份设置备份名称。
        :param pulumi.Input[Union['InstanceCapacityArgs', 'InstanceCapacityArgsDict']] capacity: 实例的容量信息。
        :param pulumi.Input[builtins.str] charge_type: 实例计费类型。取值范围如下：PrePaid：包年包月（也称预付费）。PostPaid：按量计费（也称后付费）。
        :param pulumi.Input[builtins.bool] create_backup: 是否在变更前创建备份。
        :param pulumi.Input[builtins.str] create_time: 实例的创建时间。
        :param pulumi.Input[builtins.str] data_layout: 实例的数据存储形态。该参数仅对企业版（即ServiceType为Enterprise）实例有意义；社区版（即ServiceType为Basic）实例不涉及数据存储形态，DataLayout取值固定为RAM。若该参数留空，表示不使用数据存储形态进行筛选。
        :param pulumi.Input[builtins.str] deletion_protection: 开启或关闭实例删除保护功能。
        :param pulumi.Input[builtins.str] engine_version: 数据库版本号。
        :param pulumi.Input[builtins.str] expired_time: 实例到期时间。
        :param pulumi.Input[builtins.str] instance_class: Redis 实例的类型。取值范围如下：PrimarySecondary：主备实例；Standalone：单节点实例。若该参数留空，表示不使用实例类型条件进行筛选。关于实例类型的更多信息，请参见产品架构。
        :param pulumi.Input[builtins.str] instance_id: 实例 ID。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头；只能包含中文、字母、数字、下划线（_）和中划线（-）；长度需要在1~128个字符内。
        :param pulumi.Input[builtins.str] maintenance_time: 实例的可维护时间段，格式为HH:mm-HH:mm（UTC+8）。
        :param pulumi.Input[builtins.int] max_connections: 实例当前单分片最大连接数。每分片的默认连接数为10000，您也可以根据业务需要调用ModifyDBInstanceMaxConn接口修改单分片的最大连接数。
        :param pulumi.Input[builtins.str] multi_az: 设置实例的可用区部署方案。
        :param pulumi.Input[builtins.str] no_auth_mode: 为新建实例开启或关闭免密访问功能。取值范围如下：open：开启免密访问。close（默认值）：关闭免密访问。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] node_ids: Proxy 和 Server 节点 ID 列表。
        :param pulumi.Input[builtins.int] node_number: 每个分片中的节点数。取值范围为1~6。每个账号在每个地域下默认最多可创建4个256MiB规格的节点，若需要调整配额上限为10个，请参见账号配额。取值为1时表示创建单节点实例；取值大于1时表示创建主备实例。关于两种类型实例的功能特性差异详情，请参见功能特性差异。
        :param pulumi.Input[builtins.str] parameter_group_id: 需要应用到新实例的参数模板。缓存数据库 Redis 版为每个数据库版本都创建了一份默认的系统参数模板，模板中包含了该版本支持设置的所有参数和默认参数值。若该参数留空，默认会根据您设置的数据库版本（即 EngineVersion）为新建实例选择并应用对应版本的系统参数模板。您可以调用 DescribeParameterGroups 接口查询当前账号和地域下的所有参数模板的基本信息，包括参数模板 ID。
        :param pulumi.Input[builtins.str] password: 设置默认数据库 default 账号的密码。
        :param pulumi.Input[builtins.int] port: 自定义私网连接地址的端口号。取值范围：1024~65535。若该参数留空，私网连接地址默认使用6379端口。实例创建成功后，还可以修改私网地址的端口号，修改方法请参见修改端口号。
        :param pulumi.Input[builtins.str] private_address: 实例私网连接地址的域名。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目。
        :param pulumi.Input[builtins.int] purchase_months: 购买时长，单位：月。取值范围如下：按月购买：1，2，3，4，5，6，7，8，9。按年购买：12，24，36。当ChargeType为PrePaid时，该参数必填。
        :param pulumi.Input[builtins.bool] reserve_additional_bandwidth: 设置是否保留额外带宽
        :param pulumi.Input[builtins.str] service_type: 实例的服务类型
        :param pulumi.Input[builtins.int] shard_capacity: 实例中每个分片的内存容量。单位：MiB。
        :param pulumi.Input[builtins.int] shard_number: 实例中的分片数量。取值范围为 2~256。仅当 ShardedCluster 取值为 1（即启用分片集群）时，需要指定该参数。
        :param pulumi.Input[builtins.int] sharded_cluster: 是否启用分片集群。取值范围如下：0：不启用。1：启用。
        :param pulumi.Input[builtins.str] status: 实例的服务类型，取值范围如下：Basic（默认值）：社区版；Enterprise：企业版。
        :param pulumi.Input[builtins.str] subnet_id: 设置实例的子网ID。子网具有可用区属性，必须选择目标私有网络中与实例属于同一可用区下的子网。子网是私有网络内的IP地址块私有网络中的所有云资源都必须部署在子网内，子网为云资源分配私网IP地址，您可以调用CreateSubnet接口创建子网。您可以调用DescribeSubnets接口查询指定可用区内的所有子网列表信息，包括子网ID。
        :param pulumi.Input[builtins.str] vi_pv6: 实例私网连接地址所对应的 IPv6 地址。仅当实例使用了 IPv6 地址时才会返回该参数。
        :param pulumi.Input[builtins.str] vip: 实例私网连接地址所对应的 IPv4 地址。
        :param pulumi.Input[builtins.str] vpc_auth_mode: 开启或关闭免密访问功能。取值范围如下：open：开启免密访问；close：关闭免密访问。参数取值不区分大小写。
        :param pulumi.Input[builtins.str] vpc_id: 设置实例的私有网络ID。建议Redis实例与需要连接的ECS实例在同一私有网络，否则它们无法通过内网互通来实现最佳性能。您可以调用CreateVpc接口创建私有网络。您可以调用DescribeVpcs接口查询符合指定条件的私有网络信息，包括私有网络ID。
        :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] zone_ids: 实例所在的可用区列表。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _InstanceState.__new__(_InstanceState)

        __props__.__dict__["allow_list_ids"] = allow_list_ids
        __props__.__dict__["auto_renew"] = auto_renew
        __props__.__dict__["backup_point_name"] = backup_point_name
        __props__.__dict__["capacity"] = capacity
        __props__.__dict__["charge_type"] = charge_type
        __props__.__dict__["configure_nodes"] = configure_nodes
        __props__.__dict__["create_backup"] = create_backup
        __props__.__dict__["create_time"] = create_time
        __props__.__dict__["data_layout"] = data_layout
        __props__.__dict__["deletion_protection"] = deletion_protection
        __props__.__dict__["engine_version"] = engine_version
        __props__.__dict__["expired_time"] = expired_time
        __props__.__dict__["instance_class"] = instance_class
        __props__.__dict__["instance_id"] = instance_id
        __props__.__dict__["instance_name"] = instance_name
        __props__.__dict__["instance_shards"] = instance_shards
        __props__.__dict__["maintenance_time"] = maintenance_time
        __props__.__dict__["max_connections"] = max_connections
        __props__.__dict__["multi_az"] = multi_az
        __props__.__dict__["no_auth_mode"] = no_auth_mode
        __props__.__dict__["node_ids"] = node_ids
        __props__.__dict__["node_number"] = node_number
        __props__.__dict__["parameter_group_id"] = parameter_group_id
        __props__.__dict__["password"] = password
        __props__.__dict__["port"] = port
        __props__.__dict__["private_address"] = private_address
        __props__.__dict__["project_name"] = project_name
        __props__.__dict__["purchase_months"] = purchase_months
        __props__.__dict__["reserve_additional_bandwidth"] = reserve_additional_bandwidth
        __props__.__dict__["service_type"] = service_type
        __props__.__dict__["shard_capacity"] = shard_capacity
        __props__.__dict__["shard_number"] = shard_number
        __props__.__dict__["sharded_cluster"] = sharded_cluster
        __props__.__dict__["status"] = status
        __props__.__dict__["subnet_id"] = subnet_id
        __props__.__dict__["tags"] = tags
        __props__.__dict__["vi_pv6"] = vi_pv6
        __props__.__dict__["vip"] = vip
        __props__.__dict__["visit_addrs"] = visit_addrs
        __props__.__dict__["vpc_auth_mode"] = vpc_auth_mode
        __props__.__dict__["vpc_id"] = vpc_id
        __props__.__dict__["zone_ids"] = zone_ids
        return Instance(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="allowListIds")
    def allow_list_ids(self) -> pulumi.Output[Sequence[builtins.str]]:
        """
        白名单 ID 列表。若该参数留空，新建实例默认不加入任何白名单。您可以调用 DescribeAllowLists 接口查询当前账号下指定地域内的所有 IP 白名单信息，包括白名单 ID 信息。每个实例最多支持绑定 100 个白名单，每次可最多批量绑定 100 个白名单。每个实例最多支持绑定 1000 个 IP 地址或 CIDR 格式的 IP 地址段。
        """
        return pulumi.get(self, "allow_list_ids")

    @property
    @pulumi.getter(name="autoRenew")
    def auto_renew(self) -> pulumi.Output[builtins.bool]:
        """
        是否开启自动续费。取值范围如下：false（默认值）：不开启。true：开启。
        """
        return pulumi.get(self, "auto_renew")

    @property
    @pulumi.getter(name="backupPointName")
    def backup_point_name(self) -> pulumi.Output[builtins.str]:
        """
        为变更前创建的全量备份设置备份名称。
        """
        return pulumi.get(self, "backup_point_name")

    @property
    @pulumi.getter
    def capacity(self) -> pulumi.Output['outputs.InstanceCapacity']:
        """
        实例的容量信息。
        """
        return pulumi.get(self, "capacity")

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> pulumi.Output[builtins.str]:
        """
        实例计费类型。取值范围如下：PrePaid：包年包月（也称预付费）。PostPaid：按量计费（也称后付费）。
        """
        return pulumi.get(self, "charge_type")

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

    @property
    @pulumi.getter(name="createBackup")
    def create_backup(self) -> pulumi.Output[builtins.bool]:
        """
        是否在变更前创建备份。
        """
        return pulumi.get(self, "create_backup")

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> pulumi.Output[builtins.str]:
        """
        实例的创建时间。
        """
        return pulumi.get(self, "create_time")

    @property
    @pulumi.getter(name="dataLayout")
    def data_layout(self) -> pulumi.Output[builtins.str]:
        """
        实例的数据存储形态。该参数仅对企业版（即ServiceType为Enterprise）实例有意义；社区版（即ServiceType为Basic）实例不涉及数据存储形态，DataLayout取值固定为RAM。若该参数留空，表示不使用数据存储形态进行筛选。
        """
        return pulumi.get(self, "data_layout")

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> pulumi.Output[builtins.str]:
        """
        开启或关闭实例删除保护功能。
        """
        return pulumi.get(self, "deletion_protection")

    @property
    @pulumi.getter(name="engineVersion")
    def engine_version(self) -> pulumi.Output[builtins.str]:
        """
        数据库版本号。
        """
        return pulumi.get(self, "engine_version")

    @property
    @pulumi.getter(name="expiredTime")
    def expired_time(self) -> pulumi.Output[builtins.str]:
        """
        实例到期时间。
        """
        return pulumi.get(self, "expired_time")

    @property
    @pulumi.getter(name="instanceClass")
    def instance_class(self) -> pulumi.Output[builtins.str]:
        """
        Redis 实例的类型。取值范围如下：PrimarySecondary：主备实例；Standalone：单节点实例。若该参数留空，表示不使用实例类型条件进行筛选。关于实例类型的更多信息，请参见产品架构。
        """
        return pulumi.get(self, "instance_class")

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> pulumi.Output[builtins.str]:
        """
        实例 ID。
        """
        return pulumi.get(self, "instance_id")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> pulumi.Output[builtins.str]:
        """
        实例名称。命名规则：不能以数字、中划线（-）开头；只能包含中文、字母、数字、下划线（_）和中划线（-）；长度需要在1~128个字符内。
        """
        return pulumi.get(self, "instance_name")

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

    @property
    @pulumi.getter(name="maintenanceTime")
    def maintenance_time(self) -> pulumi.Output[builtins.str]:
        """
        实例的可维护时间段，格式为HH:mm-HH:mm（UTC+8）。
        """
        return pulumi.get(self, "maintenance_time")

    @property
    @pulumi.getter(name="maxConnections")
    def max_connections(self) -> pulumi.Output[builtins.int]:
        """
        实例当前单分片最大连接数。每分片的默认连接数为10000，您也可以根据业务需要调用ModifyDBInstanceMaxConn接口修改单分片的最大连接数。
        """
        return pulumi.get(self, "max_connections")

    @property
    @pulumi.getter(name="multiAz")
    def multi_az(self) -> pulumi.Output[builtins.str]:
        """
        设置实例的可用区部署方案。
        """
        return pulumi.get(self, "multi_az")

    @property
    @pulumi.getter(name="noAuthMode")
    def no_auth_mode(self) -> pulumi.Output[builtins.str]:
        """
        为新建实例开启或关闭免密访问功能。取值范围如下：open：开启免密访问。close（默认值）：关闭免密访问。
        """
        return pulumi.get(self, "no_auth_mode")

    @property
    @pulumi.getter(name="nodeIds")
    def node_ids(self) -> pulumi.Output[Sequence[builtins.str]]:
        """
        Proxy 和 Server 节点 ID 列表。
        """
        return pulumi.get(self, "node_ids")

    @property
    @pulumi.getter(name="nodeNumber")
    def node_number(self) -> pulumi.Output[builtins.int]:
        """
        每个分片中的节点数。取值范围为1~6。每个账号在每个地域下默认最多可创建4个256MiB规格的节点，若需要调整配额上限为10个，请参见账号配额。取值为1时表示创建单节点实例；取值大于1时表示创建主备实例。关于两种类型实例的功能特性差异详情，请参见功能特性差异。
        """
        return pulumi.get(self, "node_number")

    @property
    @pulumi.getter(name="parameterGroupId")
    def parameter_group_id(self) -> pulumi.Output[builtins.str]:
        """
        需要应用到新实例的参数模板。缓存数据库 Redis 版为每个数据库版本都创建了一份默认的系统参数模板，模板中包含了该版本支持设置的所有参数和默认参数值。若该参数留空，默认会根据您设置的数据库版本（即 EngineVersion）为新建实例选择并应用对应版本的系统参数模板。您可以调用 DescribeParameterGroups 接口查询当前账号和地域下的所有参数模板的基本信息，包括参数模板 ID。
        """
        return pulumi.get(self, "parameter_group_id")

    @property
    @pulumi.getter
    def password(self) -> pulumi.Output[builtins.str]:
        """
        设置默认数据库 default 账号的密码。
        """
        return pulumi.get(self, "password")

    @property
    @pulumi.getter
    def port(self) -> pulumi.Output[builtins.int]:
        """
        自定义私网连接地址的端口号。取值范围：1024~65535。若该参数留空，私网连接地址默认使用6379端口。实例创建成功后，还可以修改私网地址的端口号，修改方法请参见修改端口号。
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="privateAddress")
    def private_address(self) -> pulumi.Output[builtins.str]:
        """
        实例私网连接地址的域名。
        """
        return pulumi.get(self, "private_address")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> pulumi.Output[builtins.str]:
        """
        实例所属的项目。
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter(name="purchaseMonths")
    def purchase_months(self) -> pulumi.Output[builtins.int]:
        """
        购买时长，单位：月。取值范围如下：按月购买：1，2，3，4，5，6，7，8，9。按年购买：12，24，36。当ChargeType为PrePaid时，该参数必填。
        """
        return pulumi.get(self, "purchase_months")

    @property
    @pulumi.getter(name="reserveAdditionalBandwidth")
    def reserve_additional_bandwidth(self) -> pulumi.Output[builtins.bool]:
        """
        设置是否保留额外带宽
        """
        return pulumi.get(self, "reserve_additional_bandwidth")

    @property
    @pulumi.getter(name="serviceType")
    def service_type(self) -> pulumi.Output[builtins.str]:
        """
        实例的服务类型
        """
        return pulumi.get(self, "service_type")

    @property
    @pulumi.getter(name="shardCapacity")
    def shard_capacity(self) -> pulumi.Output[builtins.int]:
        """
        实例中每个分片的内存容量。单位：MiB。
        """
        return pulumi.get(self, "shard_capacity")

    @property
    @pulumi.getter(name="shardNumber")
    def shard_number(self) -> pulumi.Output[builtins.int]:
        """
        实例中的分片数量。取值范围为 2~256。仅当 ShardedCluster 取值为 1（即启用分片集群）时，需要指定该参数。
        """
        return pulumi.get(self, "shard_number")

    @property
    @pulumi.getter(name="shardedCluster")
    def sharded_cluster(self) -> pulumi.Output[builtins.int]:
        """
        是否启用分片集群。取值范围如下：0：不启用。1：启用。
        """
        return pulumi.get(self, "sharded_cluster")

    @property
    @pulumi.getter
    def status(self) -> pulumi.Output[builtins.str]:
        """
        实例的服务类型，取值范围如下：Basic（默认值）：社区版；Enterprise：企业版。
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> pulumi.Output[builtins.str]:
        """
        设置实例的子网ID。子网具有可用区属性，必须选择目标私有网络中与实例属于同一可用区下的子网。子网是私有网络内的IP地址块私有网络中的所有云资源都必须部署在子网内，子网为云资源分配私网IP地址，您可以调用CreateSubnet接口创建子网。您可以调用DescribeSubnets接口查询指定可用区内的所有子网列表信息，包括子网ID。
        """
        return pulumi.get(self, "subnet_id")

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

    @property
    @pulumi.getter(name="viPv6")
    def vi_pv6(self) -> pulumi.Output[builtins.str]:
        """
        实例私网连接地址所对应的 IPv6 地址。仅当实例使用了 IPv6 地址时才会返回该参数。
        """
        return pulumi.get(self, "vi_pv6")

    @property
    @pulumi.getter
    def vip(self) -> pulumi.Output[builtins.str]:
        """
        实例私网连接地址所对应的 IPv4 地址。
        """
        return pulumi.get(self, "vip")

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

    @property
    @pulumi.getter(name="vpcAuthMode")
    def vpc_auth_mode(self) -> pulumi.Output[builtins.str]:
        """
        开启或关闭免密访问功能。取值范围如下：open：开启免密访问；close：关闭免密访问。参数取值不区分大小写。
        """
        return pulumi.get(self, "vpc_auth_mode")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> pulumi.Output[builtins.str]:
        """
        设置实例的私有网络ID。建议Redis实例与需要连接的ECS实例在同一私有网络，否则它们无法通过内网互通来实现最佳性能。您可以调用CreateVpc接口创建私有网络。您可以调用DescribeVpcs接口查询符合指定条件的私有网络信息，包括私有网络ID。
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="zoneIds")
    def zone_ids(self) -> pulumi.Output[Sequence[builtins.str]]:
        """
        实例所在的可用区列表。
        """
        return pulumi.get(self, "zone_ids")

