routes
Creates, updates, deletes or gets a route resource or lists routes in a region
Overview
| Name | routes |
| Type | Resource |
| Description | Specifies a route in a route table. For more information, see [Routes](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#route-table-routes) in the *Amazon VPC User Guide*. You must specify either a destination CIDR block or prefix list ID. You must also specify exactly one of the resources as the target. If you create a route that references a transit gateway in the same template where you create the transit gateway, you must declare a dependency on the transit gateway attachment. The route table cannot use the transit gateway until it has successfully attached to the VPC. Add a [DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) in the ``AWS::EC2::Route`` resource to explicitly declare a dependency on the ``AWS::EC2::TransitGatewayAttachment`` resource. |
| Id | awscc.ec2.routes |
Fields
- get (all properties)
- list (identifiers only)
| Name | Datatype | Description |
|---|---|---|
carrier_gateway_id | string | The ID of the carrier gateway.<br />You can only use this option when the VPC contains a subnet which is associated with a Wavelength Zone. |
cidr_block | string | |
core_network_arn | string | The Amazon Resource Name (ARN) of the core network. |
destination_cidr_block | string | The IPv4 CIDR address block used for the destination match. Routing decisions are based on the most specific match. We modify the specified CIDR block to its canonical form; for example, if you specify ``100.68.0.18/18``, we modify it to ``100.68.0.0/18``. |
destination_ipv6_cidr_block | string | The IPv6 CIDR block used for the destination match. Routing decisions are based on the most specific match. |
destination_prefix_list_id | string | The ID of a prefix list used for the destination match. |
egress_only_internet_gateway_id | string | [IPv6 traffic only] The ID of an egress-only internet gateway. |
gateway_id | string | The ID of an internet gateway or virtual private gateway attached to your VPC. |
instance_id | string | The ID of a NAT instance in your VPC. The operation fails if you specify an instance ID unless exactly one network interface is attached. |
local_gateway_id | string | The ID of the local gateway. |
nat_gateway_id | string | [IPv4 traffic only] The ID of a NAT gateway. |
network_interface_id | string | The ID of a network interface. |
route_table_id | string | The ID of the route table for the route. |
transit_gateway_id | string | The ID of a transit gateway. |
vpc_endpoint_id | string | The ID of a VPC endpoint. Supported for Gateway Load Balancer endpoints only. |
vpc_peering_connection_id | string | The ID of a VPC peering connection. |
region | string | AWS region. |
| Name | Datatype | Description |
|---|---|---|
cidr_block | string | |
route_table_id | string | The ID of the route table for the route. |
region | string | AWS region. |
For more information, see AWS::EC2::Route.
Methods
| Name | Resource | Accessible by | Required Params |
|---|---|---|---|
create_resource | routes | INSERT | RouteTableId, region |
delete_resource | routes | DELETE | Identifier, region |
update_resource | routes | UPDATE | Identifier, PatchDocument, region |
list_resources | routes_list_only | SELECT | region |
get_resource | routes | SELECT | Identifier, region |
SELECT examples
- get (all properties)
- list (identifiers only)
Gets all properties from an individual route.
SELECT
region,
carrier_gateway_id,
cidr_block,
core_network_arn,
destination_cidr_block,
destination_ipv6_cidr_block,
destination_prefix_list_id,
egress_only_internet_gateway_id,
gateway_id,
instance_id,
local_gateway_id,
nat_gateway_id,
network_interface_id,
route_table_id,
transit_gateway_id,
vpc_endpoint_id,
vpc_peering_connection_id
FROM awscc.ec2.routes
WHERE
region = 'us-east-1' AND
Identifier = '{{ route_table_id }}|{{ cidr_block }}';
Lists all routes in a region.
SELECT
region,
route_table_id,
cidr_block
FROM awscc.ec2.routes_list_only
WHERE
region = 'us-east-1';
INSERT example
Use the following StackQL query and manifest file to create a new route resource, using stack-deploy.
- Required Properties
- All Properties
- Manifest
/*+ create */
INSERT INTO awscc.ec2.routes (
RouteTableId,
region
)
SELECT
'{{ route_table_id }}',
'{{ region }}';
/*+ create */
INSERT INTO awscc.ec2.routes (
CarrierGatewayId,
CoreNetworkArn,
DestinationCidrBlock,
DestinationIpv6CidrBlock,
DestinationPrefixListId,
EgressOnlyInternetGatewayId,
GatewayId,
InstanceId,
LocalGatewayId,
NatGatewayId,
NetworkInterfaceId,
RouteTableId,
TransitGatewayId,
VpcEndpointId,
VpcPeeringConnectionId,
region
)
SELECT
'{{ carrier_gateway_id }}',
'{{ core_network_arn }}',
'{{ destination_cidr_block }}',
'{{ destination_ipv6_cidr_block }}',
'{{ destination_prefix_list_id }}',
'{{ egress_only_internet_gateway_id }}',
'{{ gateway_id }}',
'{{ instance_id }}',
'{{ local_gateway_id }}',
'{{ nat_gateway_id }}',
'{{ network_interface_id }}',
'{{ route_table_id }}',
'{{ transit_gateway_id }}',
'{{ vpc_endpoint_id }}',
'{{ vpc_peering_connection_id }}',
'{{ region }}';
version: 1
name: stack name
description: stack description
providers:
- aws
globals:
- name: region
value: '{{ vars.AWS_REGION }}'
resources:
- name: route
props:
- name: carrier_gateway_id
value: '{{ carrier_gateway_id }}'
- name: core_network_arn
value: '{{ core_network_arn }}'
- name: destination_cidr_block
value: '{{ destination_cidr_block }}'
- name: destination_ipv6_cidr_block
value: '{{ destination_ipv6_cidr_block }}'
- name: destination_prefix_list_id
value: '{{ destination_prefix_list_id }}'
- name: egress_only_internet_gateway_id
value: '{{ egress_only_internet_gateway_id }}'
- name: gateway_id
value: '{{ gateway_id }}'
- name: instance_id
value: '{{ instance_id }}'
- name: local_gateway_id
value: '{{ local_gateway_id }}'
- name: nat_gateway_id
value: '{{ nat_gateway_id }}'
- name: network_interface_id
value: '{{ network_interface_id }}'
- name: route_table_id
value: '{{ route_table_id }}'
- name: transit_gateway_id
value: '{{ transit_gateway_id }}'
- name: vpc_endpoint_id
value: '{{ vpc_endpoint_id }}'
- name: vpc_peering_connection_id
value: '{{ vpc_peering_connection_id }}'
UPDATE example
Use the following StackQL query and manifest file to update a route resource, using stack-deploy.
/*+ update */
UPDATE awscc.ec2.routes
SET PatchDocument = string('{{ {
"CarrierGatewayId": carrier_gateway_id,
"CoreNetworkArn": core_network_arn,
"EgressOnlyInternetGatewayId": egress_only_internet_gateway_id,
"GatewayId": gateway_id,
"InstanceId": instance_id,
"LocalGatewayId": local_gateway_id,
"NatGatewayId": nat_gateway_id,
"NetworkInterfaceId": network_interface_id,
"TransitGatewayId": transit_gateway_id,
"VpcEndpointId": vpc_endpoint_id,
"VpcPeeringConnectionId": vpc_peering_connection_id
} | generate_patch_document }}')
WHERE
region = '{{ region }}' AND
Identifier = '{{ route_table_id }}|{{ cidr_block }}';
DELETE example
/*+ delete */
DELETE FROM awscc.ec2.routes
WHERE
Identifier = '{{ route_table_id }}|{{ cidr_block }}' AND
region = 'us-east-1';
Permissions
To operate on the routes resource, the following permissions are required:
- Create
- Read
- Update
- Delete
- List
ec2:CreateRoute,
ec2:DescribeRouteTables,
ec2:DescribeNetworkInterfaces
ec2:DescribeRouteTables
ec2:ReplaceRoute,
ec2:DescribeRouteTables,
ec2:DescribeNetworkInterfaces
ec2:DeleteRoute,
ec2:DescribeRouteTables
ec2:DescribeRouteTables