# 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

__all__ = [
    'EniPrimaryIpAddress',
    'EniPrimaryIpAddressAssociatedElasticIp',
    'EniPrivateIpSet',
    'EniPrivateIpSetAssociatedElasticIp',
    'EniTag',
    'SecurityGroupEgressPermission',
    'SecurityGroupIngressPermission',
    'SecurityGroupTag',
    'SubnetRouteTable',
    'SubnetTag',
    'VpcAssociateCen',
    'VpcTag',
    'GetEniPrimaryIpAddressResult',
    'GetEniPrimaryIpAddressAssociatedElasticIpResult',
    'GetEniPrivateIpSetResult',
    'GetEniPrivateIpSetAssociatedElasticIpResult',
    'GetEniTagResult',
    'GetSecurityGroupEgressPermissionResult',
    'GetSecurityGroupIngressPermissionResult',
    'GetSecurityGroupTagResult',
    'GetSubnetRouteTableResult',
    'GetSubnetTagResult',
    'GetVpcAssociateCenResult',
    'GetVpcTagResult',
]

@pulumi.output_type
class EniPrimaryIpAddress(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "associatedElasticIp":
            suggest = "associated_elastic_ip"
        elif key == "privateIpAddress":
            suggest = "private_ip_address"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in EniPrimaryIpAddress. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        EniPrimaryIpAddress.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        EniPrimaryIpAddress.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 associated_elastic_ip: Optional['outputs.EniPrimaryIpAddressAssociatedElasticIp'] = None,
                 primary: Optional[builtins.bool] = None,
                 private_ip_address: Optional[builtins.str] = None):
        """
        :param 'EniPrimaryIpAddressAssociatedElasticIpArgs' associated_elastic_ip: 网卡主私网IPv4关联的公网IP的信息。
        :param builtins.bool primary: 是否为主私网IPv4地址。
        :param builtins.str private_ip_address: 网卡的私网IP地址。
        """
        if associated_elastic_ip is not None:
            pulumi.set(__self__, "associated_elastic_ip", associated_elastic_ip)
        if primary is not None:
            pulumi.set(__self__, "primary", primary)
        if private_ip_address is not None:
            pulumi.set(__self__, "private_ip_address", private_ip_address)

    @property
    @pulumi.getter(name="associatedElasticIp")
    def associated_elastic_ip(self) -> Optional['outputs.EniPrimaryIpAddressAssociatedElasticIp']:
        """
        网卡主私网IPv4关联的公网IP的信息。
        """
        return pulumi.get(self, "associated_elastic_ip")

    @property
    @pulumi.getter
    def primary(self) -> Optional[builtins.bool]:
        """
        是否为主私网IPv4地址。
        """
        return pulumi.get(self, "primary")

    @property
    @pulumi.getter(name="privateIpAddress")
    def private_ip_address(self) -> Optional[builtins.str]:
        """
        网卡的私网IP地址。
        """
        return pulumi.get(self, "private_ip_address")


@pulumi.output_type
class EniPrimaryIpAddressAssociatedElasticIp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allocationId":
            suggest = "allocation_id"
        elif key == "eipAddress":
            suggest = "eip_address"
        elif key == "releaseWithInstance":
            suggest = "release_with_instance"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in EniPrimaryIpAddressAssociatedElasticIp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        EniPrimaryIpAddressAssociatedElasticIp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        EniPrimaryIpAddressAssociatedElasticIp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allocation_id: Optional[builtins.str] = None,
                 eip_address: Optional[builtins.str] = None,
                 release_with_instance: Optional[builtins.bool] = None):
        """
        :param builtins.str allocation_id: 公网IP的ID。
        :param builtins.str eip_address: 公网IP的地址。
        :param builtins.bool release_with_instance: 公网IP是否随云服务器实例删除。仅主网卡的主私网IP绑定按量计费公网IP有效。开启后，当云服务器实例被系统自动回收（退订24小时后、到期回收、欠费回收）或被调用DeleteInstances接口时，公网IP随其一同释放，true：是，false：否。
        """
        if allocation_id is not None:
            pulumi.set(__self__, "allocation_id", allocation_id)
        if eip_address is not None:
            pulumi.set(__self__, "eip_address", eip_address)
        if release_with_instance is not None:
            pulumi.set(__self__, "release_with_instance", release_with_instance)

    @property
    @pulumi.getter(name="allocationId")
    def allocation_id(self) -> Optional[builtins.str]:
        """
        公网IP的ID。
        """
        return pulumi.get(self, "allocation_id")

    @property
    @pulumi.getter(name="eipAddress")
    def eip_address(self) -> Optional[builtins.str]:
        """
        公网IP的地址。
        """
        return pulumi.get(self, "eip_address")

    @property
    @pulumi.getter(name="releaseWithInstance")
    def release_with_instance(self) -> Optional[builtins.bool]:
        """
        公网IP是否随云服务器实例删除。仅主网卡的主私网IP绑定按量计费公网IP有效。开启后，当云服务器实例被系统自动回收（退订24小时后、到期回收、欠费回收）或被调用DeleteInstances接口时，公网IP随其一同释放，true：是，false：否。
        """
        return pulumi.get(self, "release_with_instance")


@pulumi.output_type
class EniPrivateIpSet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "associatedElasticIp":
            suggest = "associated_elastic_ip"
        elif key == "privateIpAddress":
            suggest = "private_ip_address"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in EniPrivateIpSet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        EniPrivateIpSet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        EniPrivateIpSet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 associated_elastic_ip: Optional['outputs.EniPrivateIpSetAssociatedElasticIp'] = None,
                 private_ip_address: Optional[builtins.str] = None):
        """
        :param 'EniPrivateIpSetAssociatedElasticIpArgs' associated_elastic_ip: 网卡主私网IPv4关联的公网IP的信息。
        :param builtins.str private_ip_address: 网卡的私网IP地址。
        """
        if associated_elastic_ip is not None:
            pulumi.set(__self__, "associated_elastic_ip", associated_elastic_ip)
        if private_ip_address is not None:
            pulumi.set(__self__, "private_ip_address", private_ip_address)

    @property
    @pulumi.getter(name="associatedElasticIp")
    def associated_elastic_ip(self) -> Optional['outputs.EniPrivateIpSetAssociatedElasticIp']:
        """
        网卡主私网IPv4关联的公网IP的信息。
        """
        return pulumi.get(self, "associated_elastic_ip")

    @property
    @pulumi.getter(name="privateIpAddress")
    def private_ip_address(self) -> Optional[builtins.str]:
        """
        网卡的私网IP地址。
        """
        return pulumi.get(self, "private_ip_address")


@pulumi.output_type
class EniPrivateIpSetAssociatedElasticIp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allocationId":
            suggest = "allocation_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in EniPrivateIpSetAssociatedElasticIp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        EniPrivateIpSetAssociatedElasticIp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        EniPrivateIpSetAssociatedElasticIp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allocation_id: Optional[builtins.str] = None):
        """
        :param builtins.str allocation_id: 公网IP的ID。
        """
        if allocation_id is not None:
            pulumi.set(__self__, "allocation_id", allocation_id)

    @property
    @pulumi.getter(name="allocationId")
    def allocation_id(self) -> Optional[builtins.str]:
        """
        公网IP的ID。
        """
        return pulumi.get(self, "allocation_id")


@pulumi.output_type
class EniTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 用户标签的标签键。
        :param builtins.str value: 用户标签的标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[builtins.str]:
        """
        用户标签的标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> Optional[builtins.str]:
        """
        用户标签的标签值。
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class SecurityGroupEgressPermission(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "cidrIp":
            suggest = "cidr_ip"
        elif key == "portEnd":
            suggest = "port_end"
        elif key == "portStart":
            suggest = "port_start"
        elif key == "prefixListId":
            suggest = "prefix_list_id"
        elif key == "sourceGroupId":
            suggest = "source_group_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecurityGroupEgressPermission. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecurityGroupEgressPermission.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecurityGroupEgressPermission.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cidr_ip: Optional[builtins.str] = None,
                 description: Optional[builtins.str] = None,
                 direction: Optional[builtins.str] = None,
                 policy: Optional[builtins.str] = None,
                 port_end: Optional[builtins.int] = None,
                 port_start: Optional[builtins.int] = None,
                 prefix_list_id: Optional[builtins.str] = None,
                 priority: Optional[builtins.int] = None,
                 protocol: Optional[builtins.str] = None,
                 source_group_id: Optional[builtins.str] = None):
        """
        :param builtins.str cidr_ip: 源地址的IPv4 CIDR或IPv6 CIDR
        :param builtins.str description: 安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        :param builtins.str direction: 安全组规则方向。ingress：入方向。egress：出方向
        :param builtins.str policy: 访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        :param builtins.int port_end: 端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param builtins.int port_start: 端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param builtins.str prefix_list_id: 前缀列表的ID
        :param builtins.int priority: 安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        :param builtins.str protocol: 协议类型。tcp、udp、icmp、icmpv6、all
        :param builtins.str source_group_id: 源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        """
        if cidr_ip is not None:
            pulumi.set(__self__, "cidr_ip", cidr_ip)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if direction is not None:
            pulumi.set(__self__, "direction", direction)
        if policy is not None:
            pulumi.set(__self__, "policy", policy)
        if port_end is not None:
            pulumi.set(__self__, "port_end", port_end)
        if port_start is not None:
            pulumi.set(__self__, "port_start", port_start)
        if prefix_list_id is not None:
            pulumi.set(__self__, "prefix_list_id", prefix_list_id)
        if priority is not None:
            pulumi.set(__self__, "priority", priority)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if source_group_id is not None:
            pulumi.set(__self__, "source_group_id", source_group_id)

    @property
    @pulumi.getter(name="cidrIp")
    def cidr_ip(self) -> Optional[builtins.str]:
        """
        源地址的IPv4 CIDR或IPv6 CIDR
        """
        return pulumi.get(self, "cidr_ip")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def direction(self) -> Optional[builtins.str]:
        """
        安全组规则方向。ingress：入方向。egress：出方向
        """
        return pulumi.get(self, "direction")

    @property
    @pulumi.getter
    def policy(self) -> Optional[builtins.str]:
        """
        访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        """
        return pulumi.get(self, "policy")

    @property
    @pulumi.getter(name="portEnd")
    def port_end(self) -> Optional[builtins.int]:
        """
        端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_end")

    @property
    @pulumi.getter(name="portStart")
    def port_start(self) -> Optional[builtins.int]:
        """
        端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_start")

    @property
    @pulumi.getter(name="prefixListId")
    def prefix_list_id(self) -> Optional[builtins.str]:
        """
        前缀列表的ID
        """
        return pulumi.get(self, "prefix_list_id")

    @property
    @pulumi.getter
    def priority(self) -> Optional[builtins.int]:
        """
        安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        """
        return pulumi.get(self, "priority")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[builtins.str]:
        """
        协议类型。tcp、udp、icmp、icmpv6、all
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter(name="sourceGroupId")
    def source_group_id(self) -> Optional[builtins.str]:
        """
        源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        """
        return pulumi.get(self, "source_group_id")


@pulumi.output_type
class SecurityGroupIngressPermission(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "cidrIp":
            suggest = "cidr_ip"
        elif key == "portEnd":
            suggest = "port_end"
        elif key == "portStart":
            suggest = "port_start"
        elif key == "prefixListId":
            suggest = "prefix_list_id"
        elif key == "sourceGroupId":
            suggest = "source_group_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecurityGroupIngressPermission. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecurityGroupIngressPermission.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecurityGroupIngressPermission.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cidr_ip: Optional[builtins.str] = None,
                 description: Optional[builtins.str] = None,
                 direction: Optional[builtins.str] = None,
                 policy: Optional[builtins.str] = None,
                 port_end: Optional[builtins.int] = None,
                 port_start: Optional[builtins.int] = None,
                 prefix_list_id: Optional[builtins.str] = None,
                 priority: Optional[builtins.int] = None,
                 protocol: Optional[builtins.str] = None,
                 source_group_id: Optional[builtins.str] = None):
        """
        :param builtins.str cidr_ip: 源地址的IPv4 CIDR或IPv6 CIDR
        :param builtins.str description: 安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        :param builtins.str direction: 安全组规则方向。ingress：入方向。egress：出方向
        :param builtins.str policy: 访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        :param builtins.int port_end: 端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param builtins.int port_start: 端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param builtins.str prefix_list_id: 前缀列表的ID
        :param builtins.int priority: 安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        :param builtins.str protocol: 协议类型。tcp、udp、icmp、icmpv6、all
        :param builtins.str source_group_id: 源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        """
        if cidr_ip is not None:
            pulumi.set(__self__, "cidr_ip", cidr_ip)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if direction is not None:
            pulumi.set(__self__, "direction", direction)
        if policy is not None:
            pulumi.set(__self__, "policy", policy)
        if port_end is not None:
            pulumi.set(__self__, "port_end", port_end)
        if port_start is not None:
            pulumi.set(__self__, "port_start", port_start)
        if prefix_list_id is not None:
            pulumi.set(__self__, "prefix_list_id", prefix_list_id)
        if priority is not None:
            pulumi.set(__self__, "priority", priority)
        if protocol is not None:
            pulumi.set(__self__, "protocol", protocol)
        if source_group_id is not None:
            pulumi.set(__self__, "source_group_id", source_group_id)

    @property
    @pulumi.getter(name="cidrIp")
    def cidr_ip(self) -> Optional[builtins.str]:
        """
        源地址的IPv4 CIDR或IPv6 CIDR
        """
        return pulumi.get(self, "cidr_ip")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def direction(self) -> Optional[builtins.str]:
        """
        安全组规则方向。ingress：入方向。egress：出方向
        """
        return pulumi.get(self, "direction")

    @property
    @pulumi.getter
    def policy(self) -> Optional[builtins.str]:
        """
        访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        """
        return pulumi.get(self, "policy")

    @property
    @pulumi.getter(name="portEnd")
    def port_end(self) -> Optional[builtins.int]:
        """
        端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_end")

    @property
    @pulumi.getter(name="portStart")
    def port_start(self) -> Optional[builtins.int]:
        """
        端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_start")

    @property
    @pulumi.getter(name="prefixListId")
    def prefix_list_id(self) -> Optional[builtins.str]:
        """
        前缀列表的ID
        """
        return pulumi.get(self, "prefix_list_id")

    @property
    @pulumi.getter
    def priority(self) -> Optional[builtins.int]:
        """
        安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        """
        return pulumi.get(self, "priority")

    @property
    @pulumi.getter
    def protocol(self) -> Optional[builtins.str]:
        """
        协议类型。tcp、udp、icmp、icmpv6、all
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter(name="sourceGroupId")
    def source_group_id(self) -> Optional[builtins.str]:
        """
        源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        """
        return pulumi.get(self, "source_group_id")


@pulumi.output_type
class SecurityGroupTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 用户标签的标签键。
        :param builtins.str value: 用户标签的标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[builtins.str]:
        """
        用户标签的标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> Optional[builtins.str]:
        """
        用户标签的标签值。
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class SubnetRouteTable(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "routeTableId":
            suggest = "route_table_id"
        elif key == "routeTableType":
            suggest = "route_table_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SubnetRouteTable. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SubnetRouteTable.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SubnetRouteTable.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 route_table_id: Optional[builtins.str] = None,
                 route_table_type: Optional[builtins.str] = None):
        """
        :param builtins.str route_table_id: 子网关联的路由表ID。
        :param builtins.str route_table_type: 子网关联的路由表的类型。1、System：表示系统路由表。2、Custom：表示自定义路由表。
        """
        if route_table_id is not None:
            pulumi.set(__self__, "route_table_id", route_table_id)
        if route_table_type is not None:
            pulumi.set(__self__, "route_table_type", route_table_type)

    @property
    @pulumi.getter(name="routeTableId")
    def route_table_id(self) -> Optional[builtins.str]:
        """
        子网关联的路由表ID。
        """
        return pulumi.get(self, "route_table_id")

    @property
    @pulumi.getter(name="routeTableType")
    def route_table_type(self) -> Optional[builtins.str]:
        """
        子网关联的路由表的类型。1、System：表示系统路由表。2、Custom：表示自定义路由表。
        """
        return pulumi.get(self, "route_table_type")


@pulumi.output_type
class SubnetTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 用户标签的标签键。
        :param builtins.str value: 用户标签的标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[builtins.str]:
        """
        用户标签的标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> Optional[builtins.str]:
        """
        用户标签的标签值。
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class VpcAssociateCen(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "cenId":
            suggest = "cen_id"
        elif key == "cenOwnerId":
            suggest = "cen_owner_id"
        elif key == "cenStatus":
            suggest = "cen_status"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in VpcAssociateCen. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        VpcAssociateCen.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        VpcAssociateCen.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cen_id: Optional[builtins.str] = None,
                 cen_owner_id: Optional[builtins.str] = None,
                 cen_status: Optional[builtins.str] = None):
        """
        :param builtins.str cen_id: CEN的ID。
        :param builtins.str cen_owner_id: CEN的用户ID。
        :param builtins.str cen_status: VPC在CEN中的状态。Attaching：加载中，Attached：已加载
        """
        if cen_id is not None:
            pulumi.set(__self__, "cen_id", cen_id)
        if cen_owner_id is not None:
            pulumi.set(__self__, "cen_owner_id", cen_owner_id)
        if cen_status is not None:
            pulumi.set(__self__, "cen_status", cen_status)

    @property
    @pulumi.getter(name="cenId")
    def cen_id(self) -> Optional[builtins.str]:
        """
        CEN的ID。
        """
        return pulumi.get(self, "cen_id")

    @property
    @pulumi.getter(name="cenOwnerId")
    def cen_owner_id(self) -> Optional[builtins.str]:
        """
        CEN的用户ID。
        """
        return pulumi.get(self, "cen_owner_id")

    @property
    @pulumi.getter(name="cenStatus")
    def cen_status(self) -> Optional[builtins.str]:
        """
        VPC在CEN中的状态。Attaching：加载中，Attached：已加载
        """
        return pulumi.get(self, "cen_status")


@pulumi.output_type
class VpcTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 标签键。
        :param builtins.str value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[builtins.str]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> Optional[builtins.str]:
        """
        标签值。
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetEniPrimaryIpAddressResult(dict):
    def __init__(__self__, *,
                 associated_elastic_ip: 'outputs.GetEniPrimaryIpAddressAssociatedElasticIpResult',
                 primary: builtins.bool,
                 private_ip_address: builtins.str):
        """
        :param 'GetEniPrimaryIpAddressAssociatedElasticIpArgs' associated_elastic_ip: 网卡主私网IPv4关联的公网IP的信息。
        :param builtins.bool primary: 是否为主私网IPv4地址。
        :param builtins.str private_ip_address: 网卡的私网IP地址。
        """
        pulumi.set(__self__, "associated_elastic_ip", associated_elastic_ip)
        pulumi.set(__self__, "primary", primary)
        pulumi.set(__self__, "private_ip_address", private_ip_address)

    @property
    @pulumi.getter(name="associatedElasticIp")
    def associated_elastic_ip(self) -> 'outputs.GetEniPrimaryIpAddressAssociatedElasticIpResult':
        """
        网卡主私网IPv4关联的公网IP的信息。
        """
        return pulumi.get(self, "associated_elastic_ip")

    @property
    @pulumi.getter
    def primary(self) -> builtins.bool:
        """
        是否为主私网IPv4地址。
        """
        return pulumi.get(self, "primary")

    @property
    @pulumi.getter(name="privateIpAddress")
    def private_ip_address(self) -> builtins.str:
        """
        网卡的私网IP地址。
        """
        return pulumi.get(self, "private_ip_address")


@pulumi.output_type
class GetEniPrimaryIpAddressAssociatedElasticIpResult(dict):
    def __init__(__self__, *,
                 allocation_id: builtins.str,
                 eip_address: builtins.str,
                 release_with_instance: builtins.bool):
        """
        :param builtins.str allocation_id: 公网IP的ID。
        :param builtins.str eip_address: 公网IP的地址。
        :param builtins.bool release_with_instance: 公网IP是否随云服务器实例删除。仅主网卡的主私网IP绑定按量计费公网IP有效。开启后，当云服务器实例被系统自动回收（退订24小时后、到期回收、欠费回收）或被调用DeleteInstances接口时，公网IP随其一同释放，true：是，false：否。
        """
        pulumi.set(__self__, "allocation_id", allocation_id)
        pulumi.set(__self__, "eip_address", eip_address)
        pulumi.set(__self__, "release_with_instance", release_with_instance)

    @property
    @pulumi.getter(name="allocationId")
    def allocation_id(self) -> builtins.str:
        """
        公网IP的ID。
        """
        return pulumi.get(self, "allocation_id")

    @property
    @pulumi.getter(name="eipAddress")
    def eip_address(self) -> builtins.str:
        """
        公网IP的地址。
        """
        return pulumi.get(self, "eip_address")

    @property
    @pulumi.getter(name="releaseWithInstance")
    def release_with_instance(self) -> builtins.bool:
        """
        公网IP是否随云服务器实例删除。仅主网卡的主私网IP绑定按量计费公网IP有效。开启后，当云服务器实例被系统自动回收（退订24小时后、到期回收、欠费回收）或被调用DeleteInstances接口时，公网IP随其一同释放，true：是，false：否。
        """
        return pulumi.get(self, "release_with_instance")


@pulumi.output_type
class GetEniPrivateIpSetResult(dict):
    def __init__(__self__, *,
                 associated_elastic_ip: 'outputs.GetEniPrivateIpSetAssociatedElasticIpResult',
                 primary: builtins.bool,
                 private_ip_address: builtins.str):
        """
        :param 'GetEniPrivateIpSetAssociatedElasticIpArgs' associated_elastic_ip: 网卡主私网IPv4关联的公网IP的信息。
        :param builtins.bool primary: 是否为主私网IPv4地址。
        :param builtins.str private_ip_address: 网卡的私网IP地址。
        """
        pulumi.set(__self__, "associated_elastic_ip", associated_elastic_ip)
        pulumi.set(__self__, "primary", primary)
        pulumi.set(__self__, "private_ip_address", private_ip_address)

    @property
    @pulumi.getter(name="associatedElasticIp")
    def associated_elastic_ip(self) -> 'outputs.GetEniPrivateIpSetAssociatedElasticIpResult':
        """
        网卡主私网IPv4关联的公网IP的信息。
        """
        return pulumi.get(self, "associated_elastic_ip")

    @property
    @pulumi.getter
    def primary(self) -> builtins.bool:
        """
        是否为主私网IPv4地址。
        """
        return pulumi.get(self, "primary")

    @property
    @pulumi.getter(name="privateIpAddress")
    def private_ip_address(self) -> builtins.str:
        """
        网卡的私网IP地址。
        """
        return pulumi.get(self, "private_ip_address")


@pulumi.output_type
class GetEniPrivateIpSetAssociatedElasticIpResult(dict):
    def __init__(__self__, *,
                 allocation_id: builtins.str,
                 eip_address: builtins.str,
                 release_with_instance: builtins.bool):
        """
        :param builtins.str allocation_id: 公网IP的ID。
        :param builtins.str eip_address: 公网IP的地址。
        :param builtins.bool release_with_instance: 公网IP是否随云服务器实例删除。仅主网卡的主私网IP绑定按量计费公网IP有效。开启后，当云服务器实例被系统自动回收（退订24小时后、到期回收、欠费回收）或被调用DeleteInstances接口时，公网IP随其一同释放，true：是，false：否。
        """
        pulumi.set(__self__, "allocation_id", allocation_id)
        pulumi.set(__self__, "eip_address", eip_address)
        pulumi.set(__self__, "release_with_instance", release_with_instance)

    @property
    @pulumi.getter(name="allocationId")
    def allocation_id(self) -> builtins.str:
        """
        公网IP的ID。
        """
        return pulumi.get(self, "allocation_id")

    @property
    @pulumi.getter(name="eipAddress")
    def eip_address(self) -> builtins.str:
        """
        公网IP的地址。
        """
        return pulumi.get(self, "eip_address")

    @property
    @pulumi.getter(name="releaseWithInstance")
    def release_with_instance(self) -> builtins.bool:
        """
        公网IP是否随云服务器实例删除。仅主网卡的主私网IP绑定按量计费公网IP有效。开启后，当云服务器实例被系统自动回收（退订24小时后、到期回收、欠费回收）或被调用DeleteInstances接口时，公网IP随其一同释放，true：是，false：否。
        """
        return pulumi.get(self, "release_with_instance")


@pulumi.output_type
class GetEniTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 用户标签的标签键。
        :param builtins.str value: 用户标签的标签值。
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> builtins.str:
        """
        用户标签的标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> builtins.str:
        """
        用户标签的标签值。
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetSecurityGroupEgressPermissionResult(dict):
    def __init__(__self__, *,
                 cidr_ip: builtins.str,
                 creation_time: builtins.str,
                 description: builtins.str,
                 direction: builtins.str,
                 policy: builtins.str,
                 port_end: builtins.int,
                 port_start: builtins.int,
                 prefix_list_cidrs: Sequence[builtins.str],
                 prefix_list_id: builtins.str,
                 priority: builtins.int,
                 protocol: builtins.str,
                 source_group_id: builtins.str,
                 update_time: builtins.str):
        """
        :param builtins.str cidr_ip: 源地址的IPv4 CIDR或IPv6 CIDR
        :param builtins.str creation_time: 安全组规则创建时间。
        :param builtins.str description: 安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        :param builtins.str direction: 安全组规则方向。ingress：入方向。egress：出方向
        :param builtins.str policy: 访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        :param builtins.int port_end: 端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param builtins.int port_start: 端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param Sequence[builtins.str] prefix_list_cidrs: 前缀列表的CIDR。
        :param builtins.str prefix_list_id: 前缀列表的ID
        :param builtins.int priority: 安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        :param builtins.str protocol: 协议类型。tcp、udp、icmp、icmpv6、all
        :param builtins.str source_group_id: 源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        :param builtins.str update_time: 安全组规则更新时间。
        """
        pulumi.set(__self__, "cidr_ip", cidr_ip)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "direction", direction)
        pulumi.set(__self__, "policy", policy)
        pulumi.set(__self__, "port_end", port_end)
        pulumi.set(__self__, "port_start", port_start)
        pulumi.set(__self__, "prefix_list_cidrs", prefix_list_cidrs)
        pulumi.set(__self__, "prefix_list_id", prefix_list_id)
        pulumi.set(__self__, "priority", priority)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "source_group_id", source_group_id)
        pulumi.set(__self__, "update_time", update_time)

    @property
    @pulumi.getter(name="cidrIp")
    def cidr_ip(self) -> builtins.str:
        """
        源地址的IPv4 CIDR或IPv6 CIDR
        """
        return pulumi.get(self, "cidr_ip")

    @property
    @pulumi.getter(name="creationTime")
    def creation_time(self) -> builtins.str:
        """
        安全组规则创建时间。
        """
        return pulumi.get(self, "creation_time")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def direction(self) -> builtins.str:
        """
        安全组规则方向。ingress：入方向。egress：出方向
        """
        return pulumi.get(self, "direction")

    @property
    @pulumi.getter
    def policy(self) -> builtins.str:
        """
        访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        """
        return pulumi.get(self, "policy")

    @property
    @pulumi.getter(name="portEnd")
    def port_end(self) -> builtins.int:
        """
        端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_end")

    @property
    @pulumi.getter(name="portStart")
    def port_start(self) -> builtins.int:
        """
        端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_start")

    @property
    @pulumi.getter(name="prefixListCidrs")
    def prefix_list_cidrs(self) -> Sequence[builtins.str]:
        """
        前缀列表的CIDR。
        """
        return pulumi.get(self, "prefix_list_cidrs")

    @property
    @pulumi.getter(name="prefixListId")
    def prefix_list_id(self) -> builtins.str:
        """
        前缀列表的ID
        """
        return pulumi.get(self, "prefix_list_id")

    @property
    @pulumi.getter
    def priority(self) -> builtins.int:
        """
        安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        """
        return pulumi.get(self, "priority")

    @property
    @pulumi.getter
    def protocol(self) -> builtins.str:
        """
        协议类型。tcp、udp、icmp、icmpv6、all
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter(name="sourceGroupId")
    def source_group_id(self) -> builtins.str:
        """
        源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        """
        return pulumi.get(self, "source_group_id")

    @property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> builtins.str:
        """
        安全组规则更新时间。
        """
        return pulumi.get(self, "update_time")


@pulumi.output_type
class GetSecurityGroupIngressPermissionResult(dict):
    def __init__(__self__, *,
                 cidr_ip: builtins.str,
                 creation_time: builtins.str,
                 description: builtins.str,
                 direction: builtins.str,
                 policy: builtins.str,
                 port_end: builtins.int,
                 port_start: builtins.int,
                 prefix_list_cidrs: Sequence[builtins.str],
                 prefix_list_id: builtins.str,
                 priority: builtins.int,
                 protocol: builtins.str,
                 source_group_id: builtins.str,
                 update_time: builtins.str):
        """
        :param builtins.str cidr_ip: 源地址的IPv4 CIDR或IPv6 CIDR
        :param builtins.str creation_time: 安全组规则创建时间。
        :param builtins.str description: 安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        :param builtins.str direction: 安全组规则方向。ingress：入方向。egress：出方向
        :param builtins.str policy: 访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        :param builtins.int port_end: 端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param builtins.int port_start: 端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        :param Sequence[builtins.str] prefix_list_cidrs: 前缀列表的CIDR。
        :param builtins.str prefix_list_id: 前缀列表的ID
        :param builtins.int priority: 安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        :param builtins.str protocol: 协议类型。tcp、udp、icmp、icmpv6、all
        :param builtins.str source_group_id: 源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        :param builtins.str update_time: 安全组规则更新时间。
        """
        pulumi.set(__self__, "cidr_ip", cidr_ip)
        pulumi.set(__self__, "creation_time", creation_time)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "direction", direction)
        pulumi.set(__self__, "policy", policy)
        pulumi.set(__self__, "port_end", port_end)
        pulumi.set(__self__, "port_start", port_start)
        pulumi.set(__self__, "prefix_list_cidrs", prefix_list_cidrs)
        pulumi.set(__self__, "prefix_list_id", prefix_list_id)
        pulumi.set(__self__, "priority", priority)
        pulumi.set(__self__, "protocol", protocol)
        pulumi.set(__self__, "source_group_id", source_group_id)
        pulumi.set(__self__, "update_time", update_time)

    @property
    @pulumi.getter(name="cidrIp")
    def cidr_ip(self) -> builtins.str:
        """
        源地址的IPv4 CIDR或IPv6 CIDR
        """
        return pulumi.get(self, "cidr_ip")

    @property
    @pulumi.getter(name="creationTime")
    def creation_time(self) -> builtins.str:
        """
        安全组规则创建时间。
        """
        return pulumi.get(self, "creation_time")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        安全组规则的描述信息。需要以字母、中文或数字开头。可包含英文逗号（,）、点号（.）、下划线（_）、空格（ ）、等号（=）、短横线（-）、中文逗号（，）、中文句号（。）。长度限制为1~ 255个字符。不填保持原有配置。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def direction(self) -> builtins.str:
        """
        安全组规则方向。ingress：入方向。egress：出方向
        """
        return pulumi.get(self, "direction")

    @property
    @pulumi.getter
    def policy(self) -> builtins.str:
        """
        访问策略。即CidrIp 、SourceGroupId 或 PrefixListId 对应的资源访问安全组内的网卡。取值如下：accept：允许；drop：拒绝。
        """
        return pulumi.get(self, "policy")

    @property
    @pulumi.getter(name="portEnd")
    def port_end(self) -> builtins.int:
        """
        端口范围结束值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_end")

    @property
    @pulumi.getter(name="portStart")
    def port_start(self) -> builtins.int:
        """
        端口范围起始值。1、当Protocol 传入tcp或udp时，取值范围为1~65535。2、当Protocol 传入icmp、icmpv6或all时，仅支持传入-1，表示不限制端口
        """
        return pulumi.get(self, "port_start")

    @property
    @pulumi.getter(name="prefixListCidrs")
    def prefix_list_cidrs(self) -> Sequence[builtins.str]:
        """
        前缀列表的CIDR。
        """
        return pulumi.get(self, "prefix_list_cidrs")

    @property
    @pulumi.getter(name="prefixListId")
    def prefix_list_id(self) -> builtins.str:
        """
        前缀列表的ID
        """
        return pulumi.get(self, "prefix_list_id")

    @property
    @pulumi.getter
    def priority(self) -> builtins.int:
        """
        安全组规则优先级，数字越小，代表优先级越高。取值范围：1～100。不填默认值：1
        """
        return pulumi.get(self, "priority")

    @property
    @pulumi.getter
    def protocol(self) -> builtins.str:
        """
        协议类型。tcp、udp、icmp、icmpv6、all
        """
        return pulumi.get(self, "protocol")

    @property
    @pulumi.getter(name="sourceGroupId")
    def source_group_id(self) -> builtins.str:
        """
        源地址安全组ID。即该安全组中的所有网卡的地址作为源地址。
        """
        return pulumi.get(self, "source_group_id")

    @property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> builtins.str:
        """
        安全组规则更新时间。
        """
        return pulumi.get(self, "update_time")


@pulumi.output_type
class GetSecurityGroupTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 用户标签的标签键。
        :param builtins.str value: 用户标签的标签值。
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> builtins.str:
        """
        用户标签的标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> builtins.str:
        """
        用户标签的标签值。
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetSubnetRouteTableResult(dict):
    def __init__(__self__, *,
                 route_table_id: builtins.str,
                 route_table_type: builtins.str):
        """
        :param builtins.str route_table_id: 子网关联的路由表ID。
        :param builtins.str route_table_type: 子网关联的路由表的类型。1、System：表示系统路由表。2、Custom：表示自定义路由表。
        """
        pulumi.set(__self__, "route_table_id", route_table_id)
        pulumi.set(__self__, "route_table_type", route_table_type)

    @property
    @pulumi.getter(name="routeTableId")
    def route_table_id(self) -> builtins.str:
        """
        子网关联的路由表ID。
        """
        return pulumi.get(self, "route_table_id")

    @property
    @pulumi.getter(name="routeTableType")
    def route_table_type(self) -> builtins.str:
        """
        子网关联的路由表的类型。1、System：表示系统路由表。2、Custom：表示自定义路由表。
        """
        return pulumi.get(self, "route_table_type")


@pulumi.output_type
class GetSubnetTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 用户标签的标签键。
        :param builtins.str value: 用户标签的标签值。
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> builtins.str:
        """
        用户标签的标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> builtins.str:
        """
        用户标签的标签值。
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetVpcAssociateCenResult(dict):
    def __init__(__self__, *,
                 cen_id: builtins.str,
                 cen_owner_id: builtins.str,
                 cen_status: builtins.str):
        """
        :param builtins.str cen_id: CEN的ID。
        :param builtins.str cen_owner_id: CEN的用户ID。
        :param builtins.str cen_status: VPC在CEN中的状态。Attaching：加载中，Attached：已加载
        """
        pulumi.set(__self__, "cen_id", cen_id)
        pulumi.set(__self__, "cen_owner_id", cen_owner_id)
        pulumi.set(__self__, "cen_status", cen_status)

    @property
    @pulumi.getter(name="cenId")
    def cen_id(self) -> builtins.str:
        """
        CEN的ID。
        """
        return pulumi.get(self, "cen_id")

    @property
    @pulumi.getter(name="cenOwnerId")
    def cen_owner_id(self) -> builtins.str:
        """
        CEN的用户ID。
        """
        return pulumi.get(self, "cen_owner_id")

    @property
    @pulumi.getter(name="cenStatus")
    def cen_status(self) -> builtins.str:
        """
        VPC在CEN中的状态。Attaching：加载中，Attached：已加载
        """
        return pulumi.get(self, "cen_status")


@pulumi.output_type
class GetVpcTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 标签键。
        :param builtins.str value: 标签值。
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> builtins.str:
        """
        标签键。
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> builtins.str:
        """
        标签值。
        """
        return pulumi.get(self, "value")


