:doc:`EC2 <../../ec2>` / Client / create_route_table

******************
create_route_table
******************



.. py:method:: EC2.Client.create_route_table(**kwargs)

  

  Creates a route table for the specified VPC. After you create a route table, you can add routes and associate the table with a subnet.

   

  For more information, see `Route tables <https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html>`__ in the *Amazon VPC User Guide*.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateRouteTable>`_  


  **Request Syntax**
  ::

    response = client.create_route_table(
        TagSpecifications=[
            {
                'ResourceType': 'capacity-reservation'|'client-vpn-endpoint'|'customer-gateway'|'carrier-gateway'|'coip-pool'|'declarative-policies-report'|'dedicated-host'|'dhcp-options'|'egress-only-internet-gateway'|'elastic-ip'|'elastic-gpu'|'export-image-task'|'export-instance-task'|'fleet'|'fpga-image'|'host-reservation'|'image'|'image-usage-report'|'import-image-task'|'import-snapshot-task'|'instance'|'instance-event-window'|'internet-gateway'|'ipam'|'ipam-pool'|'ipam-scope'|'ipv4pool-ec2'|'ipv6pool-ec2'|'key-pair'|'launch-template'|'local-gateway'|'local-gateway-route-table'|'local-gateway-virtual-interface'|'local-gateway-virtual-interface-group'|'local-gateway-route-table-vpc-association'|'local-gateway-route-table-virtual-interface-group-association'|'natgateway'|'network-acl'|'network-interface'|'network-insights-analysis'|'network-insights-path'|'network-insights-access-scope'|'network-insights-access-scope-analysis'|'outpost-lag'|'placement-group'|'prefix-list'|'replace-root-volume-task'|'reserved-instances'|'route-table'|'security-group'|'security-group-rule'|'service-link-virtual-interface'|'snapshot'|'spot-fleet-request'|'spot-instances-request'|'subnet'|'subnet-cidr-reservation'|'traffic-mirror-filter'|'traffic-mirror-session'|'traffic-mirror-target'|'transit-gateway'|'transit-gateway-attachment'|'transit-gateway-connect-peer'|'transit-gateway-multicast-domain'|'transit-gateway-policy-table'|'transit-gateway-metering-policy'|'transit-gateway-route-table'|'transit-gateway-route-table-announcement'|'volume'|'vpc'|'vpc-endpoint'|'vpc-endpoint-connection'|'vpc-endpoint-service'|'vpc-endpoint-service-permission'|'vpc-peering-connection'|'vpn-connection'|'vpn-gateway'|'vpc-flow-log'|'capacity-reservation-fleet'|'traffic-mirror-filter-rule'|'vpc-endpoint-connection-device-type'|'verified-access-instance'|'verified-access-group'|'verified-access-endpoint'|'verified-access-policy'|'verified-access-trust-provider'|'vpn-connection-device-type'|'vpc-block-public-access-exclusion'|'vpc-encryption-control'|'route-server'|'route-server-endpoint'|'route-server-peer'|'ipam-resource-discovery'|'ipam-resource-discovery-association'|'instance-connect-endpoint'|'verified-access-endpoint-target'|'ipam-external-resource-verification-token'|'capacity-block'|'mac-modification-task'|'ipam-prefix-list-resolver'|'ipam-policy'|'ipam-prefix-list-resolver-target'|'secondary-interface'|'secondary-network'|'secondary-subnet'|'capacity-manager-data-export'|'vpn-concentrator',
                'Tags': [
                    {
                        'Key': 'string',
                        'Value': 'string'
                    },
                ]
            },
        ],
        ClientToken='string',
        DryRun=True|False,
        VpcId='string'
    )
    
  :type TagSpecifications: list
  :param TagSpecifications: 

    The tags to assign to the route table.

    

  
    - *(dict) --* 

      The tags to apply to a resource when the resource is being created. When you specify a tag, you must specify the resource type to tag, otherwise the request will fail.

       

      .. note::

        

        The ``Valid Values`` lists all the resource types that can be tagged. However, the action you're using might not support tagging all of these resource types. If you try to tag a resource type that is unsupported for the action you're using, you'll get an error.

        

      

    
      - **ResourceType** *(string) --* 

        The type of resource to tag on creation.

        

      
      - **Tags** *(list) --* 

        The tags to apply to the resource.

        

      
        - *(dict) --* 

          Describes a tag.

          

        
          - **Key** *(string) --* 

            The key of the tag.

             

            Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with ``aws:``.

            

          
          - **Value** *(string) --* 

            The value of the tag.

             

            Constraints: Tag values are case-sensitive and accept a maximum of 256 Unicode characters.

            

          
        
    
    

  :type ClientToken: string
  :param ClientToken: 

    Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see `Ensuring idempotency <https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html>`__.

    This field is autopopulated if not provided.

  
  :type DryRun: boolean
  :param DryRun: 

    Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is ``DryRunOperation``. Otherwise, it is ``UnauthorizedOperation``.

    

  
  :type VpcId: string
  :param VpcId: **[REQUIRED]** 

    The ID of the VPC.

    

  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'RouteTable': {
              'Associations': [
                  {
                      'Main': True|False,
                      'RouteTableAssociationId': 'string',
                      'RouteTableId': 'string',
                      'SubnetId': 'string',
                      'GatewayId': 'string',
                      'PublicIpv4Pool': 'string',
                      'AssociationState': {
                          'State': 'associating'|'associated'|'disassociating'|'disassociated'|'failed',
                          'StatusMessage': 'string'
                      }
                  },
              ],
              'PropagatingVgws': [
                  {
                      'GatewayId': 'string'
                  },
              ],
              'RouteTableId': 'string',
              'Routes': [
                  {
                      'DestinationCidrBlock': 'string',
                      'DestinationIpv6CidrBlock': 'string',
                      'DestinationPrefixListId': 'string',
                      'EgressOnlyInternetGatewayId': 'string',
                      'GatewayId': 'string',
                      'InstanceId': 'string',
                      'InstanceOwnerId': 'string',
                      'NatGatewayId': 'string',
                      'TransitGatewayId': 'string',
                      'LocalGatewayId': 'string',
                      'CarrierGatewayId': 'string',
                      'NetworkInterfaceId': 'string',
                      'Origin': 'CreateRouteTable'|'CreateRoute'|'EnableVgwRoutePropagation'|'Advertisement',
                      'State': 'active'|'blackhole'|'filtered',
                      'VpcPeeringConnectionId': 'string',
                      'CoreNetworkArn': 'string',
                      'OdbNetworkArn': 'string',
                      'IpAddress': 'string'
                  },
              ],
              'Tags': [
                  {
                      'Key': 'string',
                      'Value': 'string'
                  },
              ],
              'VpcId': 'string',
              'OwnerId': 'string'
          },
          'ClientToken': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **RouteTable** *(dict) --* 

        Information about the route table.

        
        

        - **Associations** *(list) --* 

          The associations between the route table and your subnets or gateways.

          
          

          - *(dict) --* 

            Describes an association between a route table and a subnet or gateway.

            
            

            - **Main** *(boolean) --* 

              Indicates whether this is the main route table.

              
            

            - **RouteTableAssociationId** *(string) --* 

              The ID of the association.

              
            

            - **RouteTableId** *(string) --* 

              The ID of the route table.

              
            

            - **SubnetId** *(string) --* 

              The ID of the subnet. A subnet ID is not returned for an implicit association.

              
            

            - **GatewayId** *(string) --* 

              The ID of the internet gateway or virtual private gateway.

              
            

            - **PublicIpv4Pool** *(string) --* 

              The ID of a public IPv4 pool. A public IPv4 pool is a pool of IPv4 addresses that you've brought to Amazon Web Services with BYOIP.

              
            

            - **AssociationState** *(dict) --* 

              The state of the association.

              
              

              - **State** *(string) --* 

                The state of the association.

                
              

              - **StatusMessage** *(string) --* 

                The status message, if applicable.

                
          
        
      
        

        - **PropagatingVgws** *(list) --* 

          Any virtual private gateway (VGW) propagating routes.

          
          

          - *(dict) --* 

            Describes a virtual private gateway propagating route.

            
            

            - **GatewayId** *(string) --* 

              The ID of the virtual private gateway.

              
        
      
        

        - **RouteTableId** *(string) --* 

          The ID of the route table.

          
        

        - **Routes** *(list) --* 

          The routes in the route table.

          
          

          - *(dict) --* 

            Describes a route in a route table.

            
            

            - **DestinationCidrBlock** *(string) --* 

              The IPv4 CIDR block used for the destination match.

              
            

            - **DestinationIpv6CidrBlock** *(string) --* 

              The IPv6 CIDR block used for the destination match.

              
            

            - **DestinationPrefixListId** *(string) --* 

              The prefix of the Amazon Web Services service.

              
            

            - **EgressOnlyInternetGatewayId** *(string) --* 

              The ID of the egress-only internet gateway.

              
            

            - **GatewayId** *(string) --* 

              The ID of a gateway attached to your VPC.

              
            

            - **InstanceId** *(string) --* 

              The ID of a NAT instance in your VPC.

              
            

            - **InstanceOwnerId** *(string) --* 

              The ID of Amazon Web Services account that owns the instance.

              
            

            - **NatGatewayId** *(string) --* 

              The ID of a NAT gateway.

              
            

            - **TransitGatewayId** *(string) --* 

              The ID of a transit gateway.

              
            

            - **LocalGatewayId** *(string) --* 

              The ID of the local gateway.

              
            

            - **CarrierGatewayId** *(string) --* 

              The ID of the carrier gateway.

              
            

            - **NetworkInterfaceId** *(string) --* 

              The ID of the network interface.

              
            

            - **Origin** *(string) --* 

              Describes how the route was created.

               

              
              * ``CreateRouteTable`` - The route was automatically created when the route table was created.
               
              * ``CreateRoute`` - The route was manually added to the route table.
               
              * ``EnableVgwRoutePropagation`` - The route was propagated by route propagation.
               
              * ``Advertisement`` - The route was created dynamically by Amazon VPC Route Server.
              

              
            

            - **State** *(string) --* 

              The state of the route. The ``blackhole`` state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, or the specified NAT instance has been terminated).

              
            

            - **VpcPeeringConnectionId** *(string) --* 

              The ID of a VPC peering connection.

              
            

            - **CoreNetworkArn** *(string) --* 

              The Amazon Resource Name (ARN) of the core network.

              
            

            - **OdbNetworkArn** *(string) --* 

              The Amazon Resource Name (ARN) of the ODB network.

              
            

            - **IpAddress** *(string) --* 

              The next hop IP address for routes propagated by VPC Route Server into VPC route tables.

              
        
      
        

        - **Tags** *(list) --* 

          Any tags assigned to the route table.

          
          

          - *(dict) --* 

            Describes a tag.

            
            

            - **Key** *(string) --* 

              The key of the tag.

               

              Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode characters. May not begin with ``aws:``.

              
            

            - **Value** *(string) --* 

              The value of the tag.

               

              Constraints: Tag values are case-sensitive and accept a maximum of 256 Unicode characters.

              
        
      
        

        - **VpcId** *(string) --* 

          The ID of the VPC.

          
        

        - **OwnerId** *(string) --* 

          The ID of the Amazon Web Services account that owns the route table.

          
    
      

      - **ClientToken** *(string) --* 

        Unique, case-sensitive identifier to ensure the idempotency of the request. Only returned if a client token was provided in the request.

        
  

  **Examples**

  This example creates a route table for the specified VPC.
  ::

    response = client.create_route_table(
        VpcId='vpc-a01106c2',
    )
    
    print(response)

  
  Expected Output:
  ::

    {
        'RouteTable': {
            'Associations': [
            ],
            'PropagatingVgws': [
            ],
            'RouteTableId': 'rtb-22574640',
            'Routes': [
                {
                    'DestinationCidrBlock': '10.0.0.0/16',
                    'GatewayId': 'local',
                    'State': 'active',
                },
            ],
            'Tags': [
            ],
            'VpcId': 'vpc-a01106c2',
        },
        'ResponseMetadata': {
            '...': '...',
        },
    }

  