# 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__, *,
                 db_engine_version: pulumi.Input[builtins.str],
                 node_number: pulumi.Input[builtins.int],
                 node_spec: pulumi.Input[builtins.str],
                 subnet_id: pulumi.Input[builtins.str],
                 vpc_id: pulumi.Input[builtins.str],
                 zone_ids: pulumi.Input[builtins.str],
                 charge_detail: Optional[pulumi.Input['InstanceChargeDetailArgs']] = None,
                 db_minor_version: Optional[pulumi.Input[builtins.str]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 lower_case_table_names: Optional[pulumi.Input[builtins.str]] = None,
                 maintenance_window: Optional[pulumi.Input['InstanceMaintenanceWindowArgs']] = None,
                 nodes: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceNodeArgs']]]] = None,
                 number: Optional[pulumi.Input[builtins.int]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 pre_paid_storage_in_gb: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 storage_charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_name: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_password: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTagArgs']]]] = None,
                 template_id: Optional[pulumi.Input[builtins.str]] = None,
                 time_zone: Optional[pulumi.Input[builtins.str]] = None):
        """
        The set of arguments for constructing a Instance resource.
        :param pulumi.Input[builtins.str] db_engine_version: 实例兼容版本。取值范围：MySQL*8*0：表示兼容社区 MySQL 8.0 版本。MySQL*5*7：表示兼容社区 MySQL 5.7 版本。
        :param pulumi.Input[builtins.int] node_number: 实例节点数量。取值范围为 2~16 个。
        :param pulumi.Input[builtins.str] node_spec: 实例的节点规格代码。
        :param pulumi.Input[builtins.str] subnet_id: 子网 ID。子网必须属于所选的可用区。
        :param pulumi.Input[builtins.str] vpc_id: 私有网络（VPC） ID。
        :param pulumi.Input[builtins.str] zone_ids: 可用区 ID。
        :param pulumi.Input['InstanceChargeDetailArgs'] charge_detail: 计费详细信息。
        :param pulumi.Input[builtins.str] db_minor_version: 根据兼容版本，选择 veDB MySQL 小版本。当 DBEngineVersion 取值为 MySQL*5*7 时，该参数取值默认为 2.0。当 DBEngineVersion 取值为 MySQL*8*0 时，该参数取值范围如下：3.0（默认）：veDB MySQL 稳定版，100% 兼容 MySQL 8.0。3.1：原生支持 HTAP 应用场景，加速复杂查询。3.2：原生支持 HTAP 应用场景，加速复杂查询。
        :param pulumi.Input[builtins.str] deletion_protection: 实例是否开启了删除保护功能。取值范围：enabled：开启。disabled：关闭。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头。只能包含中文、字母、数字、下划线（_）和中划线（-）。长度需在 1~128 个字符内。
        :param pulumi.Input[builtins.str] lower_case_table_names: 表名是否区分大小写。取值范围：0：表名称大小写敏感，后端根据实际表名存储。1：表名称不区分大小写，后端存储时将表名称统一为小写字母。
        :param pulumi.Input['InstanceMaintenanceWindowArgs'] maintenance_window: 实例的可维护时间窗口信息。
        :param pulumi.Input[builtins.int] number: 创建的实例数量，取值范围 1~50，默认值为 1。
        :param pulumi.Input[builtins.int] port: 为实例默认创建的连接终端指定私网端口号。默认取值为 3306，取值范围为 1000~65534。
        :param pulumi.Input[builtins.int] pre_paid_storage_in_gb: 预付费的存储总容量大小，单位 GiB。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目名称。
        :param pulumi.Input[builtins.str] storage_charge_type: 存储计费类型，不传入该参数时，存储计费类型默认与计算计费类型取值一致。取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        :param pulumi.Input[builtins.str] super_account_name: 高权限用户的账号名称。账号名称需满足以下要求：名称唯一，且长度在 2~32 个字符内。由字母、数字、中划线（-）、下划线（_）组成。以字母开头，以字母或数字结尾。名称内不能包含禁用关键词。
        :param pulumi.Input[builtins.str] super_account_password: 高权限账号的密码。账号密码需满足以下要求：只能包含大小写字母、数字和特殊字符（如 ~!@#$%^&*_-+=`|(){}[]:;'<>,.?/）。长度需在 8~32 个字符内。至少包含大写字母、小写字母、数字或特殊字符中的 3 种。
        :param pulumi.Input[builtins.str] template_id: 参数模板 ID。
        :param pulumi.Input[builtins.str] time_zone: 实例的时区。国内所有地域默认时区为 UTC +08:00。
        """
        pulumi.set(__self__, "db_engine_version", db_engine_version)
        pulumi.set(__self__, "node_number", node_number)
        pulumi.set(__self__, "node_spec", node_spec)
        pulumi.set(__self__, "subnet_id", subnet_id)
        pulumi.set(__self__, "vpc_id", vpc_id)
        pulumi.set(__self__, "zone_ids", zone_ids)
        if charge_detail is not None:
            pulumi.set(__self__, "charge_detail", charge_detail)
        if db_minor_version is not None:
            pulumi.set(__self__, "db_minor_version", db_minor_version)
        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 lower_case_table_names is not None:
            pulumi.set(__self__, "lower_case_table_names", lower_case_table_names)
        if maintenance_window is not None:
            pulumi.set(__self__, "maintenance_window", maintenance_window)
        if nodes is not None:
            pulumi.set(__self__, "nodes", nodes)
        if number is not None:
            pulumi.set(__self__, "number", number)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if pre_paid_storage_in_gb is not None:
            pulumi.set(__self__, "pre_paid_storage_in_gb", pre_paid_storage_in_gb)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if storage_charge_type is not None:
            pulumi.set(__self__, "storage_charge_type", storage_charge_type)
        if super_account_name is not None:
            pulumi.set(__self__, "super_account_name", super_account_name)
        if super_account_password is not None:
            pulumi.set(__self__, "super_account_password", super_account_password)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if template_id is not None:
            pulumi.set(__self__, "template_id", template_id)
        if time_zone is not None:
            pulumi.set(__self__, "time_zone", time_zone)

    @property
    @pulumi.getter(name="dbEngineVersion")
    def db_engine_version(self) -> pulumi.Input[builtins.str]:
        """
        实例兼容版本。取值范围：MySQL*8*0：表示兼容社区 MySQL 8.0 版本。MySQL*5*7：表示兼容社区 MySQL 5.7 版本。
        """
        return pulumi.get(self, "db_engine_version")

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

    @property
    @pulumi.getter(name="nodeNumber")
    def node_number(self) -> pulumi.Input[builtins.int]:
        """
        实例节点数量。取值范围为 2~16 个。
        """
        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="nodeSpec")
    def node_spec(self) -> pulumi.Input[builtins.str]:
        """
        实例的节点规格代码。
        """
        return pulumi.get(self, "node_spec")

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

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> pulumi.Input[builtins.str]:
        """
        子网 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]:
        """
        私有网络（VPC） 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="zoneIds")
    def zone_ids(self) -> pulumi.Input[builtins.str]:
        """
        可用区 ID。
        """
        return pulumi.get(self, "zone_ids")

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

    @property
    @pulumi.getter(name="chargeDetail")
    def charge_detail(self) -> Optional[pulumi.Input['InstanceChargeDetailArgs']]:
        """
        计费详细信息。
        """
        return pulumi.get(self, "charge_detail")

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

    @property
    @pulumi.getter(name="dbMinorVersion")
    def db_minor_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        根据兼容版本，选择 veDB MySQL 小版本。当 DBEngineVersion 取值为 MySQL*5*7 时，该参数取值默认为 2.0。当 DBEngineVersion 取值为 MySQL*8*0 时，该参数取值范围如下：3.0（默认）：veDB MySQL 稳定版，100% 兼容 MySQL 8.0。3.1：原生支持 HTAP 应用场景，加速复杂查询。3.2：原生支持 HTAP 应用场景，加速复杂查询。
        """
        return pulumi.get(self, "db_minor_version")

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

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例是否开启了删除保护功能。取值范围：enabled：开启。disabled：关闭。
        """
        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="lowerCaseTableNames")
    def lower_case_table_names(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        表名是否区分大小写。取值范围：0：表名称大小写敏感，后端根据实际表名存储。1：表名称不区分大小写，后端存储时将表名称统一为小写字母。
        """
        return pulumi.get(self, "lower_case_table_names")

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

    @property
    @pulumi.getter(name="maintenanceWindow")
    def maintenance_window(self) -> Optional[pulumi.Input['InstanceMaintenanceWindowArgs']]:
        """
        实例的可维护时间窗口信息。
        """
        return pulumi.get(self, "maintenance_window")

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

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

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

    @property
    @pulumi.getter
    def number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        创建的实例数量，取值范围 1~50，默认值为 1。
        """
        return pulumi.get(self, "number")

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

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        为实例默认创建的连接终端指定私网端口号。默认取值为 3306，取值范围为 1000~65534。
        """
        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="prePaidStorageInGb")
    def pre_paid_storage_in_gb(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        预付费的存储总容量大小，单位 GiB。
        """
        return pulumi.get(self, "pre_paid_storage_in_gb")

    @pre_paid_storage_in_gb.setter
    def pre_paid_storage_in_gb(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "pre_paid_storage_in_gb", 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="storageChargeType")
    def storage_charge_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        存储计费类型，不传入该参数时，存储计费类型默认与计算计费类型取值一致。取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        """
        return pulumi.get(self, "storage_charge_type")

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

    @property
    @pulumi.getter(name="superAccountName")
    def super_account_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        高权限用户的账号名称。账号名称需满足以下要求：名称唯一，且长度在 2~32 个字符内。由字母、数字、中划线（-）、下划线（_）组成。以字母开头，以字母或数字结尾。名称内不能包含禁用关键词。
        """
        return pulumi.get(self, "super_account_name")

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

    @property
    @pulumi.getter(name="superAccountPassword")
    def super_account_password(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        高权限账号的密码。账号密码需满足以下要求：只能包含大小写字母、数字和特殊字符（如 ~!@#$%^&*_-+=`|(){}[]:;'<>,.?/）。长度需在 8~32 个字符内。至少包含大写字母、小写字母、数字或特殊字符中的 3 种。
        """
        return pulumi.get(self, "super_account_password")

    @super_account_password.setter
    def super_account_password(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "super_account_password", 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="templateId")
    def template_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        参数模板 ID。
        """
        return pulumi.get(self, "template_id")

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

    @property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的时区。国内所有地域默认时区为 UTC +08:00。
        """
        return pulumi.get(self, "time_zone")

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


@pulumi.input_type
class _InstanceState:
    def __init__(__self__, *,
                 charge_detail: Optional[pulumi.Input['InstanceChargeDetailArgs']] = None,
                 created_time: Optional[pulumi.Input[builtins.str]] = None,
                 db_engine_version: Optional[pulumi.Input[builtins.str]] = None,
                 db_minor_version: Optional[pulumi.Input[builtins.str]] = None,
                 db_revision_version: Optional[pulumi.Input[builtins.str]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 endpoints: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceEndpointArgs']]]] = None,
                 instance_id: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 instance_status: Optional[pulumi.Input[builtins.str]] = None,
                 lower_case_table_names: Optional[pulumi.Input[builtins.str]] = None,
                 maintenance_window: Optional[pulumi.Input['InstanceMaintenanceWindowArgs']] = None,
                 node_number: Optional[pulumi.Input[builtins.int]] = None,
                 node_spec: Optional[pulumi.Input[builtins.str]] = None,
                 nodes: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceNodeArgs']]]] = None,
                 number: Optional[pulumi.Input[builtins.int]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 pre_paid_storage_in_gb: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 spec_family: Optional[pulumi.Input[builtins.str]] = None,
                 storage_charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 storage_used_gi_b: Optional[pulumi.Input[builtins.float]] = None,
                 subnet_id: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_name: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_password: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTagArgs']]]] = None,
                 template_id: Optional[pulumi.Input[builtins.str]] = None,
                 time_zone: Optional[pulumi.Input[builtins.str]] = None,
                 vpc_id: Optional[pulumi.Input[builtins.str]] = None,
                 zone_ids: Optional[pulumi.Input[builtins.str]] = None):
        """
        Input properties used for looking up and filtering Instance resources.
        :param pulumi.Input['InstanceChargeDetailArgs'] charge_detail: 计费详细信息。
        :param pulumi.Input[builtins.str] created_time: 实例的创建时间，格式：YYYY-MM-DDTHH:MM:SSZ（UTC 时间）。
        :param pulumi.Input[builtins.str] db_engine_version: 实例兼容版本。取值范围：MySQL*8*0：表示兼容社区 MySQL 8.0 版本。MySQL*5*7：表示兼容社区 MySQL 5.7 版本。
        :param pulumi.Input[builtins.str] db_minor_version: 根据兼容版本，选择 veDB MySQL 小版本。当 DBEngineVersion 取值为 MySQL*5*7 时，该参数取值默认为 2.0。当 DBEngineVersion 取值为 MySQL*8*0 时，该参数取值范围如下：3.0（默认）：veDB MySQL 稳定版，100% 兼容 MySQL 8.0。3.1：原生支持 HTAP 应用场景，加速复杂查询。3.2：原生支持 HTAP 应用场景，加速复杂查询。
        :param pulumi.Input[builtins.str] db_revision_version: 实例的内核版本。
        :param pulumi.Input[builtins.str] deletion_protection: 实例是否开启了删除保护功能。取值范围：enabled：开启。disabled：关闭。
        :param pulumi.Input[builtins.str] instance_id: 实例 ID。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头。只能包含中文、字母、数字、下划线（_）和中划线（-）。长度需在 1~128 个字符内。
        :param pulumi.Input[builtins.str] instance_status: 实例状态。
        :param pulumi.Input[builtins.str] lower_case_table_names: 表名是否区分大小写。取值范围：0：表名称大小写敏感，后端根据实际表名存储。1：表名称不区分大小写，后端存储时将表名称统一为小写字母。
        :param pulumi.Input['InstanceMaintenanceWindowArgs'] maintenance_window: 实例的可维护时间窗口信息。
        :param pulumi.Input[builtins.int] node_number: 实例节点数量。取值范围为 2~16 个。
        :param pulumi.Input[builtins.str] node_spec: 实例的节点规格代码。
        :param pulumi.Input[builtins.int] number: 创建的实例数量，取值范围 1~50，默认值为 1。
        :param pulumi.Input[builtins.int] port: 为实例默认创建的连接终端指定私网端口号。默认取值为 3306，取值范围为 1000~65534。
        :param pulumi.Input[builtins.int] pre_paid_storage_in_gb: 预付费的存储总容量大小，单位 GiB。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目名称。
        :param pulumi.Input[builtins.str] spec_family: 实例规格类型，取值：General：通用型。Exclusive：独享型。
        :param pulumi.Input[builtins.str] storage_charge_type: 存储计费类型，不传入该参数时，存储计费类型默认与计算计费类型取值一致。取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        :param pulumi.Input[builtins.float] storage_used_gi_b: 已使用存储空间大小，单位 GiB。
        :param pulumi.Input[builtins.str] subnet_id: 子网 ID。子网必须属于所选的可用区。
        :param pulumi.Input[builtins.str] super_account_name: 高权限用户的账号名称。账号名称需满足以下要求：名称唯一，且长度在 2~32 个字符内。由字母、数字、中划线（-）、下划线（_）组成。以字母开头，以字母或数字结尾。名称内不能包含禁用关键词。
        :param pulumi.Input[builtins.str] super_account_password: 高权限账号的密码。账号密码需满足以下要求：只能包含大小写字母、数字和特殊字符（如 ~!@#$%^&*_-+=`|(){}[]:;'<>,.?/）。长度需在 8~32 个字符内。至少包含大写字母、小写字母、数字或特殊字符中的 3 种。
        :param pulumi.Input[builtins.str] template_id: 参数模板 ID。
        :param pulumi.Input[builtins.str] time_zone: 实例的时区。国内所有地域默认时区为 UTC +08:00。
        :param pulumi.Input[builtins.str] vpc_id: 私有网络（VPC） ID。
        :param pulumi.Input[builtins.str] zone_ids: 可用区 ID。
        """
        if charge_detail is not None:
            pulumi.set(__self__, "charge_detail", charge_detail)
        if created_time is not None:
            pulumi.set(__self__, "created_time", created_time)
        if db_engine_version is not None:
            pulumi.set(__self__, "db_engine_version", db_engine_version)
        if db_minor_version is not None:
            pulumi.set(__self__, "db_minor_version", db_minor_version)
        if db_revision_version is not None:
            pulumi.set(__self__, "db_revision_version", db_revision_version)
        if deletion_protection is not None:
            pulumi.set(__self__, "deletion_protection", deletion_protection)
        if endpoints is not None:
            pulumi.set(__self__, "endpoints", endpoints)
        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_status is not None:
            pulumi.set(__self__, "instance_status", instance_status)
        if lower_case_table_names is not None:
            pulumi.set(__self__, "lower_case_table_names", lower_case_table_names)
        if maintenance_window is not None:
            pulumi.set(__self__, "maintenance_window", maintenance_window)
        if node_number is not None:
            pulumi.set(__self__, "node_number", node_number)
        if node_spec is not None:
            pulumi.set(__self__, "node_spec", node_spec)
        if nodes is not None:
            pulumi.set(__self__, "nodes", nodes)
        if number is not None:
            pulumi.set(__self__, "number", number)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if pre_paid_storage_in_gb is not None:
            pulumi.set(__self__, "pre_paid_storage_in_gb", pre_paid_storage_in_gb)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if spec_family is not None:
            pulumi.set(__self__, "spec_family", spec_family)
        if storage_charge_type is not None:
            pulumi.set(__self__, "storage_charge_type", storage_charge_type)
        if storage_used_gi_b is not None:
            pulumi.set(__self__, "storage_used_gi_b", storage_used_gi_b)
        if subnet_id is not None:
            pulumi.set(__self__, "subnet_id", subnet_id)
        if super_account_name is not None:
            pulumi.set(__self__, "super_account_name", super_account_name)
        if super_account_password is not None:
            pulumi.set(__self__, "super_account_password", super_account_password)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if template_id is not None:
            pulumi.set(__self__, "template_id", template_id)
        if time_zone is not None:
            pulumi.set(__self__, "time_zone", time_zone)
        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="chargeDetail")
    def charge_detail(self) -> Optional[pulumi.Input['InstanceChargeDetailArgs']]:
        """
        计费详细信息。
        """
        return pulumi.get(self, "charge_detail")

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

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的创建时间，格式：YYYY-MM-DDTHH:MM:SSZ（UTC 时间）。
        """
        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="dbEngineVersion")
    def db_engine_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例兼容版本。取值范围：MySQL*8*0：表示兼容社区 MySQL 8.0 版本。MySQL*5*7：表示兼容社区 MySQL 5.7 版本。
        """
        return pulumi.get(self, "db_engine_version")

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

    @property
    @pulumi.getter(name="dbMinorVersion")
    def db_minor_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        根据兼容版本，选择 veDB MySQL 小版本。当 DBEngineVersion 取值为 MySQL*5*7 时，该参数取值默认为 2.0。当 DBEngineVersion 取值为 MySQL*8*0 时，该参数取值范围如下：3.0（默认）：veDB MySQL 稳定版，100% 兼容 MySQL 8.0。3.1：原生支持 HTAP 应用场景，加速复杂查询。3.2：原生支持 HTAP 应用场景，加速复杂查询。
        """
        return pulumi.get(self, "db_minor_version")

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

    @property
    @pulumi.getter(name="dbRevisionVersion")
    def db_revision_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的内核版本。
        """
        return pulumi.get(self, "db_revision_version")

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

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例是否开启了删除保护功能。取值范围：enabled：开启。disabled：关闭。
        """
        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
    def endpoints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceEndpointArgs']]]]:
        return pulumi.get(self, "endpoints")

    @endpoints.setter
    def endpoints(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceEndpointArgs']]]]):
        pulumi.set(self, "endpoints", 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="instanceStatus")
    def instance_status(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例状态。
        """
        return pulumi.get(self, "instance_status")

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

    @property
    @pulumi.getter(name="lowerCaseTableNames")
    def lower_case_table_names(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        表名是否区分大小写。取值范围：0：表名称大小写敏感，后端根据实际表名存储。1：表名称不区分大小写，后端存储时将表名称统一为小写字母。
        """
        return pulumi.get(self, "lower_case_table_names")

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

    @property
    @pulumi.getter(name="maintenanceWindow")
    def maintenance_window(self) -> Optional[pulumi.Input['InstanceMaintenanceWindowArgs']]:
        """
        实例的可维护时间窗口信息。
        """
        return pulumi.get(self, "maintenance_window")

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

    @property
    @pulumi.getter(name="nodeNumber")
    def node_number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        实例节点数量。取值范围为 2~16 个。
        """
        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="nodeSpec")
    def node_spec(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的节点规格代码。
        """
        return pulumi.get(self, "node_spec")

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

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

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

    @property
    @pulumi.getter
    def number(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        创建的实例数量，取值范围 1~50，默认值为 1。
        """
        return pulumi.get(self, "number")

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

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        为实例默认创建的连接终端指定私网端口号。默认取值为 3306，取值范围为 1000~65534。
        """
        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="prePaidStorageInGb")
    def pre_paid_storage_in_gb(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        预付费的存储总容量大小，单位 GiB。
        """
        return pulumi.get(self, "pre_paid_storage_in_gb")

    @pre_paid_storage_in_gb.setter
    def pre_paid_storage_in_gb(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "pre_paid_storage_in_gb", 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="specFamily")
    def spec_family(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例规格类型，取值：General：通用型。Exclusive：独享型。
        """
        return pulumi.get(self, "spec_family")

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

    @property
    @pulumi.getter(name="storageChargeType")
    def storage_charge_type(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        存储计费类型，不传入该参数时，存储计费类型默认与计算计费类型取值一致。取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        """
        return pulumi.get(self, "storage_charge_type")

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

    @property
    @pulumi.getter(name="storageUsedGiB")
    def storage_used_gi_b(self) -> Optional[pulumi.Input[builtins.float]]:
        """
        已使用存储空间大小，单位 GiB。
        """
        return pulumi.get(self, "storage_used_gi_b")

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

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        子网 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(name="superAccountName")
    def super_account_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        高权限用户的账号名称。账号名称需满足以下要求：名称唯一，且长度在 2~32 个字符内。由字母、数字、中划线（-）、下划线（_）组成。以字母开头，以字母或数字结尾。名称内不能包含禁用关键词。
        """
        return pulumi.get(self, "super_account_name")

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

    @property
    @pulumi.getter(name="superAccountPassword")
    def super_account_password(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        高权限账号的密码。账号密码需满足以下要求：只能包含大小写字母、数字和特殊字符（如 ~!@#$%^&*_-+=`|(){}[]:;'<>,.?/）。长度需在 8~32 个字符内。至少包含大写字母、小写字母、数字或特殊字符中的 3 种。
        """
        return pulumi.get(self, "super_account_password")

    @super_account_password.setter
    def super_account_password(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "super_account_password", 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="templateId")
    def template_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        参数模板 ID。
        """
        return pulumi.get(self, "template_id")

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

    @property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        实例的时区。国内所有地域默认时区为 UTC +08:00。
        """
        return pulumi.get(self, "time_zone")

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

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        私有网络（VPC） 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[builtins.str]]:
        """
        可用区 ID。
        """
        return pulumi.get(self, "zone_ids")

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


@pulumi.type_token("bytepluscc:vedbm/instance:Instance")
class Instance(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 charge_detail: Optional[pulumi.Input[Union['InstanceChargeDetailArgs', 'InstanceChargeDetailArgsDict']]] = None,
                 db_engine_version: Optional[pulumi.Input[builtins.str]] = None,
                 db_minor_version: Optional[pulumi.Input[builtins.str]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 lower_case_table_names: Optional[pulumi.Input[builtins.str]] = None,
                 maintenance_window: Optional[pulumi.Input[Union['InstanceMaintenanceWindowArgs', 'InstanceMaintenanceWindowArgsDict']]] = None,
                 node_number: Optional[pulumi.Input[builtins.int]] = None,
                 node_spec: Optional[pulumi.Input[builtins.str]] = None,
                 nodes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceNodeArgs', 'InstanceNodeArgsDict']]]]] = None,
                 number: Optional[pulumi.Input[builtins.int]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 pre_paid_storage_in_gb: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 storage_charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 subnet_id: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_name: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_password: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceTagArgs', 'InstanceTagArgsDict']]]]] = None,
                 template_id: Optional[pulumi.Input[builtins.str]] = None,
                 time_zone: Optional[pulumi.Input[builtins.str]] = None,
                 vpc_id: Optional[pulumi.Input[builtins.str]] = None,
                 zone_ids: Optional[pulumi.Input[builtins.str]] = None,
                 __props__=None):
        """
        云数据库 veDB MySQL 版是火山引擎自研新一代云原生关系型数据库。云数据库 veDB MySQL 版 100% 兼容 MySQL，适用于企业多样化的数据库应用场景。

        ## Import

        ```sh
        $ pulumi import bytepluscc:vedbm/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[Union['InstanceChargeDetailArgs', 'InstanceChargeDetailArgsDict']] charge_detail: 计费详细信息。
        :param pulumi.Input[builtins.str] db_engine_version: 实例兼容版本。取值范围：MySQL*8*0：表示兼容社区 MySQL 8.0 版本。MySQL*5*7：表示兼容社区 MySQL 5.7 版本。
        :param pulumi.Input[builtins.str] db_minor_version: 根据兼容版本，选择 veDB MySQL 小版本。当 DBEngineVersion 取值为 MySQL*5*7 时，该参数取值默认为 2.0。当 DBEngineVersion 取值为 MySQL*8*0 时，该参数取值范围如下：3.0（默认）：veDB MySQL 稳定版，100% 兼容 MySQL 8.0。3.1：原生支持 HTAP 应用场景，加速复杂查询。3.2：原生支持 HTAP 应用场景，加速复杂查询。
        :param pulumi.Input[builtins.str] deletion_protection: 实例是否开启了删除保护功能。取值范围：enabled：开启。disabled：关闭。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头。只能包含中文、字母、数字、下划线（_）和中划线（-）。长度需在 1~128 个字符内。
        :param pulumi.Input[builtins.str] lower_case_table_names: 表名是否区分大小写。取值范围：0：表名称大小写敏感，后端根据实际表名存储。1：表名称不区分大小写，后端存储时将表名称统一为小写字母。
        :param pulumi.Input[Union['InstanceMaintenanceWindowArgs', 'InstanceMaintenanceWindowArgsDict']] maintenance_window: 实例的可维护时间窗口信息。
        :param pulumi.Input[builtins.int] node_number: 实例节点数量。取值范围为 2~16 个。
        :param pulumi.Input[builtins.str] node_spec: 实例的节点规格代码。
        :param pulumi.Input[builtins.int] number: 创建的实例数量，取值范围 1~50，默认值为 1。
        :param pulumi.Input[builtins.int] port: 为实例默认创建的连接终端指定私网端口号。默认取值为 3306，取值范围为 1000~65534。
        :param pulumi.Input[builtins.int] pre_paid_storage_in_gb: 预付费的存储总容量大小，单位 GiB。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目名称。
        :param pulumi.Input[builtins.str] storage_charge_type: 存储计费类型，不传入该参数时，存储计费类型默认与计算计费类型取值一致。取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        :param pulumi.Input[builtins.str] subnet_id: 子网 ID。子网必须属于所选的可用区。
        :param pulumi.Input[builtins.str] super_account_name: 高权限用户的账号名称。账号名称需满足以下要求：名称唯一，且长度在 2~32 个字符内。由字母、数字、中划线（-）、下划线（_）组成。以字母开头，以字母或数字结尾。名称内不能包含禁用关键词。
        :param pulumi.Input[builtins.str] super_account_password: 高权限账号的密码。账号密码需满足以下要求：只能包含大小写字母、数字和特殊字符（如 ~!@#$%^&*_-+=`|(){}[]:;'<>,.?/）。长度需在 8~32 个字符内。至少包含大写字母、小写字母、数字或特殊字符中的 3 种。
        :param pulumi.Input[builtins.str] template_id: 参数模板 ID。
        :param pulumi.Input[builtins.str] time_zone: 实例的时区。国内所有地域默认时区为 UTC +08:00。
        :param pulumi.Input[builtins.str] vpc_id: 私有网络（VPC） ID。
        :param pulumi.Input[builtins.str] zone_ids: 可用区 ID。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: InstanceArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        云数据库 veDB MySQL 版是火山引擎自研新一代云原生关系型数据库。云数据库 veDB MySQL 版 100% 兼容 MySQL，适用于企业多样化的数据库应用场景。

        ## Import

        ```sh
        $ pulumi import bytepluscc:vedbm/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,
                 charge_detail: Optional[pulumi.Input[Union['InstanceChargeDetailArgs', 'InstanceChargeDetailArgsDict']]] = None,
                 db_engine_version: Optional[pulumi.Input[builtins.str]] = None,
                 db_minor_version: Optional[pulumi.Input[builtins.str]] = None,
                 deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
                 instance_name: Optional[pulumi.Input[builtins.str]] = None,
                 lower_case_table_names: Optional[pulumi.Input[builtins.str]] = None,
                 maintenance_window: Optional[pulumi.Input[Union['InstanceMaintenanceWindowArgs', 'InstanceMaintenanceWindowArgsDict']]] = None,
                 node_number: Optional[pulumi.Input[builtins.int]] = None,
                 node_spec: Optional[pulumi.Input[builtins.str]] = None,
                 nodes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceNodeArgs', 'InstanceNodeArgsDict']]]]] = None,
                 number: Optional[pulumi.Input[builtins.int]] = None,
                 port: Optional[pulumi.Input[builtins.int]] = None,
                 pre_paid_storage_in_gb: Optional[pulumi.Input[builtins.int]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 storage_charge_type: Optional[pulumi.Input[builtins.str]] = None,
                 subnet_id: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_name: Optional[pulumi.Input[builtins.str]] = None,
                 super_account_password: Optional[pulumi.Input[builtins.str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceTagArgs', 'InstanceTagArgsDict']]]]] = None,
                 template_id: Optional[pulumi.Input[builtins.str]] = None,
                 time_zone: Optional[pulumi.Input[builtins.str]] = None,
                 vpc_id: Optional[pulumi.Input[builtins.str]] = None,
                 zone_ids: 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__["charge_detail"] = charge_detail
            if db_engine_version is None and not opts.urn:
                raise TypeError("Missing required property 'db_engine_version'")
            __props__.__dict__["db_engine_version"] = db_engine_version
            __props__.__dict__["db_minor_version"] = db_minor_version
            __props__.__dict__["deletion_protection"] = deletion_protection
            __props__.__dict__["instance_name"] = instance_name
            __props__.__dict__["lower_case_table_names"] = lower_case_table_names
            __props__.__dict__["maintenance_window"] = maintenance_window
            if node_number is None and not opts.urn:
                raise TypeError("Missing required property 'node_number'")
            __props__.__dict__["node_number"] = node_number
            if node_spec is None and not opts.urn:
                raise TypeError("Missing required property 'node_spec'")
            __props__.__dict__["node_spec"] = node_spec
            __props__.__dict__["nodes"] = nodes
            __props__.__dict__["number"] = number
            __props__.__dict__["port"] = port
            __props__.__dict__["pre_paid_storage_in_gb"] = pre_paid_storage_in_gb
            __props__.__dict__["project_name"] = project_name
            __props__.__dict__["storage_charge_type"] = storage_charge_type
            if subnet_id is None and not opts.urn:
                raise TypeError("Missing required property 'subnet_id'")
            __props__.__dict__["subnet_id"] = subnet_id
            __props__.__dict__["super_account_name"] = super_account_name
            __props__.__dict__["super_account_password"] = super_account_password
            __props__.__dict__["tags"] = tags
            __props__.__dict__["template_id"] = template_id
            __props__.__dict__["time_zone"] = time_zone
            if vpc_id is None and not opts.urn:
                raise TypeError("Missing required property 'vpc_id'")
            __props__.__dict__["vpc_id"] = vpc_id
            if zone_ids is None and not opts.urn:
                raise TypeError("Missing required property 'zone_ids'")
            __props__.__dict__["zone_ids"] = zone_ids
            __props__.__dict__["created_time"] = None
            __props__.__dict__["db_revision_version"] = None
            __props__.__dict__["endpoints"] = None
            __props__.__dict__["instance_id"] = None
            __props__.__dict__["instance_status"] = None
            __props__.__dict__["spec_family"] = None
            __props__.__dict__["storage_used_gi_b"] = None
        super(Instance, __self__).__init__(
            'bytepluscc:vedbm/instance:Instance',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            charge_detail: Optional[pulumi.Input[Union['InstanceChargeDetailArgs', 'InstanceChargeDetailArgsDict']]] = None,
            created_time: Optional[pulumi.Input[builtins.str]] = None,
            db_engine_version: Optional[pulumi.Input[builtins.str]] = None,
            db_minor_version: Optional[pulumi.Input[builtins.str]] = None,
            db_revision_version: Optional[pulumi.Input[builtins.str]] = None,
            deletion_protection: Optional[pulumi.Input[builtins.str]] = None,
            endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceEndpointArgs', 'InstanceEndpointArgsDict']]]]] = None,
            instance_id: Optional[pulumi.Input[builtins.str]] = None,
            instance_name: Optional[pulumi.Input[builtins.str]] = None,
            instance_status: Optional[pulumi.Input[builtins.str]] = None,
            lower_case_table_names: Optional[pulumi.Input[builtins.str]] = None,
            maintenance_window: Optional[pulumi.Input[Union['InstanceMaintenanceWindowArgs', 'InstanceMaintenanceWindowArgsDict']]] = None,
            node_number: Optional[pulumi.Input[builtins.int]] = None,
            node_spec: Optional[pulumi.Input[builtins.str]] = None,
            nodes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceNodeArgs', 'InstanceNodeArgsDict']]]]] = None,
            number: Optional[pulumi.Input[builtins.int]] = None,
            port: Optional[pulumi.Input[builtins.int]] = None,
            pre_paid_storage_in_gb: Optional[pulumi.Input[builtins.int]] = None,
            project_name: Optional[pulumi.Input[builtins.str]] = None,
            spec_family: Optional[pulumi.Input[builtins.str]] = None,
            storage_charge_type: Optional[pulumi.Input[builtins.str]] = None,
            storage_used_gi_b: Optional[pulumi.Input[builtins.float]] = None,
            subnet_id: Optional[pulumi.Input[builtins.str]] = None,
            super_account_name: Optional[pulumi.Input[builtins.str]] = None,
            super_account_password: Optional[pulumi.Input[builtins.str]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceTagArgs', 'InstanceTagArgsDict']]]]] = None,
            template_id: Optional[pulumi.Input[builtins.str]] = None,
            time_zone: Optional[pulumi.Input[builtins.str]] = None,
            vpc_id: Optional[pulumi.Input[builtins.str]] = None,
            zone_ids: Optional[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[Union['InstanceChargeDetailArgs', 'InstanceChargeDetailArgsDict']] charge_detail: 计费详细信息。
        :param pulumi.Input[builtins.str] created_time: 实例的创建时间，格式：YYYY-MM-DDTHH:MM:SSZ（UTC 时间）。
        :param pulumi.Input[builtins.str] db_engine_version: 实例兼容版本。取值范围：MySQL*8*0：表示兼容社区 MySQL 8.0 版本。MySQL*5*7：表示兼容社区 MySQL 5.7 版本。
        :param pulumi.Input[builtins.str] db_minor_version: 根据兼容版本，选择 veDB MySQL 小版本。当 DBEngineVersion 取值为 MySQL*5*7 时，该参数取值默认为 2.0。当 DBEngineVersion 取值为 MySQL*8*0 时，该参数取值范围如下：3.0（默认）：veDB MySQL 稳定版，100% 兼容 MySQL 8.0。3.1：原生支持 HTAP 应用场景，加速复杂查询。3.2：原生支持 HTAP 应用场景，加速复杂查询。
        :param pulumi.Input[builtins.str] db_revision_version: 实例的内核版本。
        :param pulumi.Input[builtins.str] deletion_protection: 实例是否开启了删除保护功能。取值范围：enabled：开启。disabled：关闭。
        :param pulumi.Input[builtins.str] instance_id: 实例 ID。
        :param pulumi.Input[builtins.str] instance_name: 实例名称。命名规则：不能以数字、中划线（-）开头。只能包含中文、字母、数字、下划线（_）和中划线（-）。长度需在 1~128 个字符内。
        :param pulumi.Input[builtins.str] instance_status: 实例状态。
        :param pulumi.Input[builtins.str] lower_case_table_names: 表名是否区分大小写。取值范围：0：表名称大小写敏感，后端根据实际表名存储。1：表名称不区分大小写，后端存储时将表名称统一为小写字母。
        :param pulumi.Input[Union['InstanceMaintenanceWindowArgs', 'InstanceMaintenanceWindowArgsDict']] maintenance_window: 实例的可维护时间窗口信息。
        :param pulumi.Input[builtins.int] node_number: 实例节点数量。取值范围为 2~16 个。
        :param pulumi.Input[builtins.str] node_spec: 实例的节点规格代码。
        :param pulumi.Input[builtins.int] number: 创建的实例数量，取值范围 1~50，默认值为 1。
        :param pulumi.Input[builtins.int] port: 为实例默认创建的连接终端指定私网端口号。默认取值为 3306，取值范围为 1000~65534。
        :param pulumi.Input[builtins.int] pre_paid_storage_in_gb: 预付费的存储总容量大小，单位 GiB。
        :param pulumi.Input[builtins.str] project_name: 实例所属的项目名称。
        :param pulumi.Input[builtins.str] spec_family: 实例规格类型，取值：General：通用型。Exclusive：独享型。
        :param pulumi.Input[builtins.str] storage_charge_type: 存储计费类型，不传入该参数时，存储计费类型默认与计算计费类型取值一致。取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        :param pulumi.Input[builtins.float] storage_used_gi_b: 已使用存储空间大小，单位 GiB。
        :param pulumi.Input[builtins.str] subnet_id: 子网 ID。子网必须属于所选的可用区。
        :param pulumi.Input[builtins.str] super_account_name: 高权限用户的账号名称。账号名称需满足以下要求：名称唯一，且长度在 2~32 个字符内。由字母、数字、中划线（-）、下划线（_）组成。以字母开头，以字母或数字结尾。名称内不能包含禁用关键词。
        :param pulumi.Input[builtins.str] super_account_password: 高权限账号的密码。账号密码需满足以下要求：只能包含大小写字母、数字和特殊字符（如 ~!@#$%^&*_-+=`|(){}[]:;'<>,.?/）。长度需在 8~32 个字符内。至少包含大写字母、小写字母、数字或特殊字符中的 3 种。
        :param pulumi.Input[builtins.str] template_id: 参数模板 ID。
        :param pulumi.Input[builtins.str] time_zone: 实例的时区。国内所有地域默认时区为 UTC +08:00。
        :param pulumi.Input[builtins.str] vpc_id: 私有网络（VPC） ID。
        :param pulumi.Input[builtins.str] zone_ids: 可用区 ID。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _InstanceState.__new__(_InstanceState)

        __props__.__dict__["charge_detail"] = charge_detail
        __props__.__dict__["created_time"] = created_time
        __props__.__dict__["db_engine_version"] = db_engine_version
        __props__.__dict__["db_minor_version"] = db_minor_version
        __props__.__dict__["db_revision_version"] = db_revision_version
        __props__.__dict__["deletion_protection"] = deletion_protection
        __props__.__dict__["endpoints"] = endpoints
        __props__.__dict__["instance_id"] = instance_id
        __props__.__dict__["instance_name"] = instance_name
        __props__.__dict__["instance_status"] = instance_status
        __props__.__dict__["lower_case_table_names"] = lower_case_table_names
        __props__.__dict__["maintenance_window"] = maintenance_window
        __props__.__dict__["node_number"] = node_number
        __props__.__dict__["node_spec"] = node_spec
        __props__.__dict__["nodes"] = nodes
        __props__.__dict__["number"] = number
        __props__.__dict__["port"] = port
        __props__.__dict__["pre_paid_storage_in_gb"] = pre_paid_storage_in_gb
        __props__.__dict__["project_name"] = project_name
        __props__.__dict__["spec_family"] = spec_family
        __props__.__dict__["storage_charge_type"] = storage_charge_type
        __props__.__dict__["storage_used_gi_b"] = storage_used_gi_b
        __props__.__dict__["subnet_id"] = subnet_id
        __props__.__dict__["super_account_name"] = super_account_name
        __props__.__dict__["super_account_password"] = super_account_password
        __props__.__dict__["tags"] = tags
        __props__.__dict__["template_id"] = template_id
        __props__.__dict__["time_zone"] = time_zone
        __props__.__dict__["vpc_id"] = vpc_id
        __props__.__dict__["zone_ids"] = zone_ids
        return Instance(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="chargeDetail")
    def charge_detail(self) -> pulumi.Output['outputs.InstanceChargeDetail']:
        """
        计费详细信息。
        """
        return pulumi.get(self, "charge_detail")

    @property
    @pulumi.getter(name="createdTime")
    def created_time(self) -> pulumi.Output[builtins.str]:
        """
        实例的创建时间，格式：YYYY-MM-DDTHH:MM:SSZ（UTC 时间）。
        """
        return pulumi.get(self, "created_time")

    @property
    @pulumi.getter(name="dbEngineVersion")
    def db_engine_version(self) -> pulumi.Output[builtins.str]:
        """
        实例兼容版本。取值范围：MySQL*8*0：表示兼容社区 MySQL 8.0 版本。MySQL*5*7：表示兼容社区 MySQL 5.7 版本。
        """
        return pulumi.get(self, "db_engine_version")

    @property
    @pulumi.getter(name="dbMinorVersion")
    def db_minor_version(self) -> pulumi.Output[builtins.str]:
        """
        根据兼容版本，选择 veDB MySQL 小版本。当 DBEngineVersion 取值为 MySQL*5*7 时，该参数取值默认为 2.0。当 DBEngineVersion 取值为 MySQL*8*0 时，该参数取值范围如下：3.0（默认）：veDB MySQL 稳定版，100% 兼容 MySQL 8.0。3.1：原生支持 HTAP 应用场景，加速复杂查询。3.2：原生支持 HTAP 应用场景，加速复杂查询。
        """
        return pulumi.get(self, "db_minor_version")

    @property
    @pulumi.getter(name="dbRevisionVersion")
    def db_revision_version(self) -> pulumi.Output[builtins.str]:
        """
        实例的内核版本。
        """
        return pulumi.get(self, "db_revision_version")

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> pulumi.Output[builtins.str]:
        """
        实例是否开启了删除保护功能。取值范围：enabled：开启。disabled：关闭。
        """
        return pulumi.get(self, "deletion_protection")

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

    @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="instanceStatus")
    def instance_status(self) -> pulumi.Output[builtins.str]:
        """
        实例状态。
        """
        return pulumi.get(self, "instance_status")

    @property
    @pulumi.getter(name="lowerCaseTableNames")
    def lower_case_table_names(self) -> pulumi.Output[builtins.str]:
        """
        表名是否区分大小写。取值范围：0：表名称大小写敏感，后端根据实际表名存储。1：表名称不区分大小写，后端存储时将表名称统一为小写字母。
        """
        return pulumi.get(self, "lower_case_table_names")

    @property
    @pulumi.getter(name="maintenanceWindow")
    def maintenance_window(self) -> pulumi.Output['outputs.InstanceMaintenanceWindow']:
        """
        实例的可维护时间窗口信息。
        """
        return pulumi.get(self, "maintenance_window")

    @property
    @pulumi.getter(name="nodeNumber")
    def node_number(self) -> pulumi.Output[builtins.int]:
        """
        实例节点数量。取值范围为 2~16 个。
        """
        return pulumi.get(self, "node_number")

    @property
    @pulumi.getter(name="nodeSpec")
    def node_spec(self) -> pulumi.Output[builtins.str]:
        """
        实例的节点规格代码。
        """
        return pulumi.get(self, "node_spec")

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

    @property
    @pulumi.getter
    def number(self) -> pulumi.Output[builtins.int]:
        """
        创建的实例数量，取值范围 1~50，默认值为 1。
        """
        return pulumi.get(self, "number")

    @property
    @pulumi.getter
    def port(self) -> pulumi.Output[builtins.int]:
        """
        为实例默认创建的连接终端指定私网端口号。默认取值为 3306，取值范围为 1000~65534。
        """
        return pulumi.get(self, "port")

    @property
    @pulumi.getter(name="prePaidStorageInGb")
    def pre_paid_storage_in_gb(self) -> pulumi.Output[builtins.int]:
        """
        预付费的存储总容量大小，单位 GiB。
        """
        return pulumi.get(self, "pre_paid_storage_in_gb")

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

    @property
    @pulumi.getter(name="specFamily")
    def spec_family(self) -> pulumi.Output[builtins.str]:
        """
        实例规格类型，取值：General：通用型。Exclusive：独享型。
        """
        return pulumi.get(self, "spec_family")

    @property
    @pulumi.getter(name="storageChargeType")
    def storage_charge_type(self) -> pulumi.Output[builtins.str]:
        """
        存储计费类型，不传入该参数时，存储计费类型默认与计算计费类型取值一致。取值：PostPaid：按量计费（后付费）。PrePaid：包年包月（预付费）。
        """
        return pulumi.get(self, "storage_charge_type")

    @property
    @pulumi.getter(name="storageUsedGiB")
    def storage_used_gi_b(self) -> pulumi.Output[builtins.float]:
        """
        已使用存储空间大小，单位 GiB。
        """
        return pulumi.get(self, "storage_used_gi_b")

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> pulumi.Output[builtins.str]:
        """
        子网 ID。子网必须属于所选的可用区。
        """
        return pulumi.get(self, "subnet_id")

    @property
    @pulumi.getter(name="superAccountName")
    def super_account_name(self) -> pulumi.Output[builtins.str]:
        """
        高权限用户的账号名称。账号名称需满足以下要求：名称唯一，且长度在 2~32 个字符内。由字母、数字、中划线（-）、下划线（_）组成。以字母开头，以字母或数字结尾。名称内不能包含禁用关键词。
        """
        return pulumi.get(self, "super_account_name")

    @property
    @pulumi.getter(name="superAccountPassword")
    def super_account_password(self) -> pulumi.Output[builtins.str]:
        """
        高权限账号的密码。账号密码需满足以下要求：只能包含大小写字母、数字和特殊字符（如 ~!@#$%^&*_-+=`|(){}[]:;'<>,.?/）。长度需在 8~32 个字符内。至少包含大写字母、小写字母、数字或特殊字符中的 3 种。
        """
        return pulumi.get(self, "super_account_password")

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

    @property
    @pulumi.getter(name="templateId")
    def template_id(self) -> pulumi.Output[builtins.str]:
        """
        参数模板 ID。
        """
        return pulumi.get(self, "template_id")

    @property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> pulumi.Output[builtins.str]:
        """
        实例的时区。国内所有地域默认时区为 UTC +08:00。
        """
        return pulumi.get(self, "time_zone")

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> pulumi.Output[builtins.str]:
        """
        私有网络（VPC） ID。
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="zoneIds")
    def zone_ids(self) -> pulumi.Output[builtins.str]:
        """
        可用区 ID。
        """
        return pulumi.get(self, "zone_ids")

