subnets
Creates, updates, deletes or gets a subnet
resource or lists subnets
in a region
Overview
Name | subnets |
Type | Resource |
Description | Specifies a subnet for the specified VPC. For an IPv4 only subnet, specify an IPv4 CIDR block. If the VPC has an IPv6 CIDR block, you can create an IPv6 only subnet or a dual stack subnet instead. For an IPv6 only subnet, specify an IPv6 CIDR block. For a dual stack subnet, specify both an IPv4 CIDR block and an IPv6 CIDR block. For more information, see [Subnets for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html) in the *Amazon VPC User Guide*. |
Id | aws.ec2.subnets |
Fields
Name | Datatype | Description |
---|---|---|
assign_ipv6_address_on_creation | boolean | Indicates whether a network interface created in this subnet receives an IPv6 address. The default value is false .If you specify AssignIpv6AddressOnCreation , you must also specify an IPv6 CIDR block. |
vpc_id | string | The ID of the VPC the subnet is in. If you update this property, you must also update the CidrBlock property. |
map_public_ip_on_launch | boolean | Indicates whether instances launched in this subnet receive a public IPv4 address. The default value is false .AWS charges for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the *Public IPv4 Address* tab on the [VPC pricing page](https://docs.aws.amazon.com/vpc/pricing/). |
enable_lni_at_device_index | integer | Indicates the device position for local network interfaces in this subnet. For example, 1 indicates local network interfaces in this subnet are the secondary network interface (eth1). |
network_acl_association_id | string | |
availability_zone | string | The Availability Zone of the subnet. If you update this property, you must also update the CidrBlock property. |
availability_zone_id | string | The AZ ID of the subnet. |
cidr_block | string | The IPv4 CIDR block assigned to the subnet. If you update this property, we create a new subnet, and then delete the existing one. |
subnet_id | string | |
ipv6_cidr_blocks | array | The IPv6 network ranges for the subnet, in CIDR notation. |
ipv6_cidr_block | string | The IPv6 CIDR block. If you specify AssignIpv6AddressOnCreation , you must also specify an IPv6 CIDR block. |
outpost_arn | string | The Amazon Resource Name (ARN) of the Outpost. |
ipv6_native | boolean | Indicates whether this is an IPv6 only subnet. For more information, see [Subnet basics](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#subnet-basics) in the *User Guide*. |
enable_dns64 | boolean | Indicates whether DNS queries made to the Amazon-provided DNS Resolver in this subnet should return synthetic IPv6 addresses for IPv4-only destinations. For more information, see [DNS64 and NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-nat64-dns64) in the *User Guide*. |
private_dns_name_options_on_launch | object | The hostname type for EC2 instances launched into this subnet and how DNS A and AAAA record queries to the instances should be handled. For more information, see [Amazon EC2 instance hostname types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html) in the *User Guide*. Available options: + EnableResourceNameDnsAAAARecord (true | false) + EnableResourceNameDnsARecord (true | false) + HostnameType (ip-name | resource-name) |
tags | array | Any tags assigned to the subnet. |
ipv4_ipam_pool_id | string | An IPv4 IPAM pool ID for the subnet. |
ipv4_netmask_length | integer | An IPv4 netmask length for the subnet. |
ipv6_ipam_pool_id | string | An IPv6 IPAM pool ID for the subnet. |
ipv6_netmask_length | integer | An IPv6 netmask length for the subnet. |
region | string | AWS region. |
Methods
Name | Accessible by | Required Params |
---|---|---|
create_resource | INSERT | VpcId, region |
delete_resource | DELETE | data__Identifier, region |
update_resource | UPDATE | data__Identifier, data__PatchDocument, region |
list_resources | SELECT | region |
get_resource | SELECT | data__Identifier, region |
SELECT
examples
Gets all subnets
in a region.
SELECT
region,
assign_ipv6_address_on_creation,
vpc_id,
map_public_ip_on_launch,
enable_lni_at_device_index,
network_acl_association_id,
availability_zone,
availability_zone_id,
cidr_block,
subnet_id,
ipv6_cidr_blocks,
ipv6_cidr_block,
outpost_arn,
ipv6_native,
enable_dns64,
private_dns_name_options_on_launch,
tags,
ipv4_ipam_pool_id,
ipv4_netmask_length,
ipv6_ipam_pool_id,
ipv6_netmask_length
FROM aws.ec2.subnets
WHERE region = 'us-east-1';
Gets all properties from an individual subnet
.
SELECT
region,
assign_ipv6_address_on_creation,
vpc_id,
map_public_ip_on_launch,
enable_lni_at_device_index,
network_acl_association_id,
availability_zone,
availability_zone_id,
cidr_block,
subnet_id,
ipv6_cidr_blocks,
ipv6_cidr_block,
outpost_arn,
ipv6_native,
enable_dns64,
private_dns_name_options_on_launch,
tags,
ipv4_ipam_pool_id,
ipv4_netmask_length,
ipv6_ipam_pool_id,
ipv6_netmask_length
FROM aws.ec2.subnets
WHERE region = 'us-east-1' AND data__Identifier = '<SubnetId>';
INSERT
example
Use the following StackQL query and manifest file to create a new subnet
resource, using stack-deploy
.
- Required Properties
- All Properties
- Manifest
/*+ create */
INSERT INTO aws.ec2.subnets (
VpcId,
region
)
SELECT
'{{ VpcId }}',
'{{ region }}';
/*+ create */
INSERT INTO aws.ec2.subnets (
AssignIpv6AddressOnCreation,
VpcId,
MapPublicIpOnLaunch,
EnableLniAtDeviceIndex,
AvailabilityZone,
AvailabilityZoneId,
CidrBlock,
Ipv6CidrBlocks,
Ipv6CidrBlock,
OutpostArn,
Ipv6Native,
EnableDns64,
PrivateDnsNameOptionsOnLaunch,
Tags,
Ipv4IpamPoolId,
Ipv4NetmaskLength,
Ipv6IpamPoolId,
Ipv6NetmaskLength,
region
)
SELECT
'{{ AssignIpv6AddressOnCreation }}',
'{{ VpcId }}',
'{{ MapPublicIpOnLaunch }}',
'{{ EnableLniAtDeviceIndex }}',
'{{ AvailabilityZone }}',
'{{ AvailabilityZoneId }}',
'{{ CidrBlock }}',
'{{ Ipv6CidrBlocks }}',
'{{ Ipv6CidrBlock }}',
'{{ OutpostArn }}',
'{{ Ipv6Native }}',
'{{ EnableDns64 }}',
'{{ PrivateDnsNameOptionsOnLaunch }}',
'{{ Tags }}',
'{{ Ipv4IpamPoolId }}',
'{{ Ipv4NetmaskLength }}',
'{{ Ipv6IpamPoolId }}',
'{{ Ipv6NetmaskLength }}',
'{{ region }}';
version: 1
name: stack name
description: stack description
providers:
- aws
globals:
- name: region
value: '{{ vars.AWS_REGION }}'
resources:
- name: subnet
props:
- name: AssignIpv6AddressOnCreation
value: '{{ AssignIpv6AddressOnCreation }}'
- name: VpcId
value: '{{ VpcId }}'
- name: MapPublicIpOnLaunch
value: '{{ MapPublicIpOnLaunch }}'
- name: EnableLniAtDeviceIndex
value: '{{ EnableLniAtDeviceIndex }}'
- name: AvailabilityZone
value: '{{ AvailabilityZone }}'
- name: AvailabilityZoneId
value: '{{ AvailabilityZoneId }}'
- name: CidrBlock
value: '{{ CidrBlock }}'
- name: Ipv6CidrBlocks
value:
- '{{ Ipv6CidrBlocks[0] }}'
- name: Ipv6CidrBlock
value: '{{ Ipv6CidrBlock }}'
- name: OutpostArn
value: '{{ OutpostArn }}'
- name: Ipv6Native
value: '{{ Ipv6Native }}'
- name: EnableDns64
value: '{{ EnableDns64 }}'
- name: PrivateDnsNameOptionsOnLaunch
value:
HostnameType: '{{ HostnameType }}'
EnableResourceNameDnsARecord: '{{ EnableResourceNameDnsARecord }}'
EnableResourceNameDnsAAAARecord: '{{ EnableResourceNameDnsAAAARecord }}'
- name: Tags
value:
- Key: '{{ Key }}'
Value: '{{ Value }}'
- name: Ipv4IpamPoolId
value: '{{ Ipv4IpamPoolId }}'
- name: Ipv4NetmaskLength
value: '{{ Ipv4NetmaskLength }}'
- name: Ipv6IpamPoolId
value: '{{ Ipv6IpamPoolId }}'
- name: Ipv6NetmaskLength
value: '{{ Ipv6NetmaskLength }}'
DELETE
example
/*+ delete */
DELETE FROM aws.ec2.subnets
WHERE data__Identifier = '<SubnetId>'
AND region = 'us-east-1';
Permissions
To operate on the subnets
resource, the following permissions are required:
Create
ec2:DescribeSubnets,
ec2:CreateSubnet,
ec2:CreateTags,
ec2:ModifySubnetAttribute
Read
ec2:DescribeSubnets,
ec2:DescribeNetworkAcls
Update
ec2:DescribeSubnets,
ec2:ModifySubnetAttribute,
ec2:CreateTags,
ec2:DeleteTags,
ec2:AssociateSubnetCidrBlock,
ec2:DisassociateSubnetCidrBlock
Delete
ec2:DescribeSubnets,
ec2:DeleteSubnet
List
ec2:DescribeSubnets,
ec2:DescribeNetworkAcls