text: # 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 warnings
  import pulumi
  import pulumi.runtime
  from typing import Any, Mapping, Optional, Sequence, Union
  from .. import _utilities, _tables
  
  __all__ = [
      'GetRouteResult',
      'AwaitableGetRouteResult',
      'get_route',
  ]
  
  @pulumi.output_type
  class GetRouteResult:
      """
      A collection of values returned by getRoute.
      """
      def __init__(__self__, destination_cidr_block=None, destination_ipv6_cidr_block=None, egress_only_gateway_id=None, gateway_id=None, id=None, instance_id=None, local_gateway_id=None, nat_gateway_id=None, network_interface_id=None, route_table_id=None, transit_gateway_id=None, vpc_peering_connection_id=None):
          if destination_cidr_block and not isinstance(destination_cidr_block, str):
              raise TypeError("Expected argument 'destination_cidr_block' to be a str")
          pulumi.set(__self__, "destination_cidr_block", destination_cidr_block)
          if destination_ipv6_cidr_block and not isinstance(destination_ipv6_cidr_block, str):
              raise TypeError("Expected argument 'destination_ipv6_cidr_block' to be a str")
          pulumi.set(__self__, "destination_ipv6_cidr_block", destination_ipv6_cidr_block)
          if egress_only_gateway_id and not isinstance(egress_only_gateway_id, str):
              raise TypeError("Expected argument 'egress_only_gateway_id' to be a str")
          pulumi.set(__self__, "egress_only_gateway_id", egress_only_gateway_id)
          if gateway_id and not isinstance(gateway_id, str):
              raise TypeError("Expected argument 'gateway_id' to be a str")
          pulumi.set(__self__, "gateway_id", gateway_id)
          if id and not isinstance(id, str):
              raise TypeError("Expected argument 'id' to be a str")
          pulumi.set(__self__, "id", id)
          if instance_id and not isinstance(instance_id, str):
              raise TypeError("Expected argument 'instance_id' to be a str")
          pulumi.set(__self__, "instance_id", instance_id)
          if local_gateway_id and not isinstance(local_gateway_id, str):
              raise TypeError("Expected argument 'local_gateway_id' to be a str")
          pulumi.set(__self__, "local_gateway_id", local_gateway_id)
          if nat_gateway_id and not isinstance(nat_gateway_id, str):
              raise TypeError("Expected argument 'nat_gateway_id' to be a str")
          pulumi.set(__self__, "nat_gateway_id", nat_gateway_id)
          if network_interface_id and not isinstance(network_interface_id, str):
              raise TypeError("Expected argument 'network_interface_id' to be a str")
          pulumi.set(__self__, "network_interface_id", network_interface_id)
          if route_table_id and not isinstance(route_table_id, str):
              raise TypeError("Expected argument 'route_table_id' to be a str")
          pulumi.set(__self__, "route_table_id", route_table_id)
          if transit_gateway_id and not isinstance(transit_gateway_id, str):
              raise TypeError("Expected argument 'transit_gateway_id' to be a str")
          pulumi.set(__self__, "transit_gateway_id", transit_gateway_id)
          if vpc_peering_connection_id and not isinstance(vpc_peering_connection_id, str):
              raise TypeError("Expected argument 'vpc_peering_connection_id' to be a str")
          pulumi.set(__self__, "vpc_peering_connection_id", vpc_peering_connection_id)
  
      @property
      @pulumi.getter(name="destinationCidrBlock")
      def destination_cidr_block(self) -> str:
          return pulumi.get(self, "destination_cidr_block")
  
      @property
      @pulumi.getter(name="destinationIpv6CidrBlock")
      def destination_ipv6_cidr_block(self) -> str:
          return pulumi.get(self, "destination_ipv6_cidr_block")
  
      @property
      @pulumi.getter(name="egressOnlyGatewayId")
      def egress_only_gateway_id(self) -> str:
          return pulumi.get(self, "egress_only_gateway_id")
  
      @property
      @pulumi.getter(name="gatewayId")
      def gateway_id(self) -> str:
          return pulumi.get(self, "gateway_id")
  
      @property
      @pulumi.getter
      def id(self) -> str:
          """
          The provider-assigned unique ID for this managed resource.
          """
          return pulumi.get(self, "id")
  
      @property
      @pulumi.getter(name="instanceId")
      def instance_id(self) -> str:
          return pulumi.get(self, "instance_id")
  
      @property
      @pulumi.getter(name="localGatewayId")
      def local_gateway_id(self) -> str:
          return pulumi.get(self, "local_gateway_id")
  
      @property
      @pulumi.getter(name="natGatewayId")
      def nat_gateway_id(self) -> str:
          return pulumi.get(self, "nat_gateway_id")
  
      @property
      @pulumi.getter(name="networkInterfaceId")
      def network_interface_id(self) -> str:
          return pulumi.get(self, "network_interface_id")
  
      @property
      @pulumi.getter(name="routeTableId")
      def route_table_id(self) -> str:
          return pulumi.get(self, "route_table_id")
  
      @property
      @pulumi.getter(name="transitGatewayId")
      def transit_gateway_id(self) -> str:
          return pulumi.get(self, "transit_gateway_id")
  
      @property
      @pulumi.getter(name="vpcPeeringConnectionId")
      def vpc_peering_connection_id(self) -> str:
          return pulumi.get(self, "vpc_peering_connection_id")
  
  
  class AwaitableGetRouteResult(GetRouteResult):
      # pylint: disable=using-constant-test
      def __await__(self):
          if False:
              yield self
          return GetRouteResult(
              destination_cidr_block=self.destination_cidr_block,
              destination_ipv6_cidr_block=self.destination_ipv6_cidr_block,
              egress_only_gateway_id=self.egress_only_gateway_id,
              gateway_id=self.gateway_id,
              id=self.id,
              instance_id=self.instance_id,
              local_gateway_id=self.local_gateway_id,
              nat_gateway_id=self.nat_gateway_id,
              network_interface_id=self.network_interface_id,
              route_table_id=self.route_table_id,
              transit_gateway_id=self.transit_gateway_id,
              vpc_peering_connection_id=self.vpc_peering_connection_id)
  
  
  def get_route(destination_cidr_block: Optional[str] = None,
                destination_ipv6_cidr_block: Optional[str] = None,
                egress_only_gateway_id: Optional[str] = None,
                gateway_id: Optional[str] = None,
                instance_id: Optional[str] = None,
                local_gateway_id: Optional[str] = None,
                nat_gateway_id: Optional[str] = None,
                network_interface_id: Optional[str] = None,
                route_table_id: Optional[str] = None,
                transit_gateway_id: Optional[str] = None,
                vpc_peering_connection_id: Optional[str] = None,
                opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetRouteResult:
      """
      `ec2.Route` provides details about a specific Route.
  
      This resource can prove useful when finding the resource
      associated with a CIDR. For example, finding the peering
      connection associated with a CIDR value.
  
      ## Example Usage
  
      The following example shows how one might use a CIDR value to find a network interface id
      and use this to create a data source of that network interface.
  
      ```python
      import pulumi
      import pulumi_aws as aws
  
      config = pulumi.Config()
      subnet_id = config.require_object("subnetId")
      selected = aws.ec2.get_route_table(subnet_id=subnet_id)
      route = aws.ec2.get_route(route_table_id=aws_route_table["selected"]["id"],
          destination_cidr_block="10.0.1.0/24")
      interface = aws.ec2.get_network_interface(id=route.network_interface_id)
      ```
  
  
      :param str destination_cidr_block: The CIDR block of the Route belonging to the Route Table.
      :param str destination_ipv6_cidr_block: The IPv6 CIDR block of the Route belonging to the Route Table.
      :param str egress_only_gateway_id: The Egress Only Gateway ID of the Route belonging to the Route Table.
      :param str gateway_id: The Gateway ID of the Route belonging to the Route Table.
      :param str instance_id: The Instance ID of the Route belonging to the Route Table.
      :param str local_gateway_id: The Local Gateway ID of the Route belonging to the Route Table.
      :param str nat_gateway_id: The NAT Gateway ID of the Route belonging to the Route Table.
      :param str network_interface_id: The Network Interface ID of the Route belonging to the Route Table.
      :param str route_table_id: The id of the specific Route Table containing the Route entry.
      :param str transit_gateway_id: The EC2 Transit Gateway ID of the Route belonging to the Route Table.
      :param str vpc_peering_connection_id: The VPC Peering Connection ID of the Route belonging to the Route Table.
      """
      __args__ = dict()
      __args__['destinationCidrBlock'] = destination_cidr_block
      __args__['destinationIpv6CidrBlock'] = destination_ipv6_cidr_block
      __args__['egressOnlyGatewayId'] = egress_only_gateway_id
      __args__['gatewayId'] = gateway_id
      __args__['instanceId'] = instance_id
      __args__['localGatewayId'] = local_gateway_id
      __args__['natGatewayId'] = nat_gateway_id
      __args__['networkInterfaceId'] = network_interface_id
      __args__['routeTableId'] = route_table_id
      __args__['transitGatewayId'] = transit_gateway_id
      __args__['vpcPeeringConnectionId'] = vpc_peering_connection_id
      if opts is None:
          opts = pulumi.InvokeOptions()
      if opts.version is None:
          opts.version = _utilities.get_version()
      __ret__ = pulumi.runtime.invoke('aws:ec2/getRoute:getRoute', __args__, opts=opts, typ=GetRouteResult).value
  
      return AwaitableGetRouteResult(
          destination_cidr_block=__ret__.destination_cidr_block,
          destination_ipv6_cidr_block=__ret__.destination_ipv6_cidr_block,
          egress_only_gateway_id=__ret__.egress_only_gateway_id,
          gateway_id=__ret__.gateway_id,
          id=__ret__.id,
          instance_id=__ret__.instance_id,
          local_gateway_id=__ret__.local_gateway_id,
          nat_gateway_id=__ret__.nat_gateway_id,
          network_interface_id=__ret__.network_interface_id,
          route_table_id=__ret__.route_table_id,
          transit_gateway_id=__ret__.transit_gateway_id,
          vpc_peering_connection_id=__ret__.vpc_peering_connection_id)
  