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 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 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.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 = '{{ region }}' 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 = '{{ region }}';
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 }}'
RETURNING
ErrorCode,
EventTime,
Identifier,
Operation,
OperationStatus,
RequestToken,
ResourceModel,
RetryAfter,
StatusMessage,
TypeName
;
/*+ 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 }}'
RETURNING
ErrorCode,
EventTime,
Identifier,
Operation,
OperationStatus,
RequestToken,
ResourceModel,
RetryAfter,
StatusMessage,
TypeName
;
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 }}'
RETURNING
ErrorCode,
EventTime,
Identifier,
Operation,
OperationStatus,
RequestToken,
ResourceModel,
RetryAfter,
StatusMessage,
TypeName
;
DELETE example
/*+ delete */
DELETE FROM awscc.ec2.routes
WHERE
Identifier = '{{ route_table_id }}|{{ cidr_block }}' AND
region = '{{ region }}'
RETURNING
ErrorCode,
EventTime,
Identifier,
Operation,
OperationStatus,
RequestToken,
ResourceModel,
RetryAfter,
StatusMessage,
TypeName
;
Additional Parameters
Mutable resources in the Cloud Control provider support additional optional parameters which can be supplied with INSERT, UPDATE, or DELETE operations. These include:
| Parameter | Description |
|---|---|
ClientToken | A unique identifier to ensure the idempotency of the resource request.This allows the provider to accurately distinguish between retries and new requests.A client token is valid for 36 hours once used. After that, a resource request with the same client token is treated as a new request. If you do not specify a client token, one is generated for inclusion in the request. |
RoleArn | The ARN of the IAM role used to perform this resource operation.The role specified must have the permissions required for this operation.If you do not specify a role, a temporary session is created using your AWS user credentials. |
TypeVersionId | For private resource types, the type version to use in this resource operation.If you do not specify a resource version, the default version is used. |
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