UNPKG

cdk-nextjs

Version:

Deploy Next.js apps on AWS with CDK

225 lines (224 loc) 8.33 kB
import type { aws_ec2 } from 'aws-cdk-lib'; /** * OptionalVpcProps */ export interface OptionalVpcProps { /** * Where to propagate VPN routes. * @default - On the route tables associated with private subnets. If no private subnets exists, isolated subnets are used. If no isolated subnets exists, public subnets are used. * @stability stable */ readonly vpnRoutePropagation?: Array<aws_ec2.SubnetSelection>; /** * The private Autonomous System Number (ASN) for the VPN gateway. * @default - Amazon default ASN. * @stability stable */ readonly vpnGatewayAsn?: number; /** * Indicates whether a VPN gateway should be created and attached to this VPC. * @default - true when vpnGatewayAsn or vpnConnections is specified * @stability stable */ readonly vpnGateway?: boolean; /** * VPN connections to this VPC. * @default - No connections. * @stability stable */ readonly vpnConnections?: Record<string, aws_ec2.VpnConnectionOptions>; /** * The VPC name. * Since the VPC resource doesn't support providing a physical name, the value provided here will be recorded in the `Name` tag * @default this.node.path * @stability stable */ readonly vpcName?: string; /** * Configure the subnets to build for each AZ. * Each entry in this list configures a Subnet Group; each group will contain a * subnet for each Availability Zone. * * For example, if you want 1 public subnet, 1 private subnet, and 1 isolated * subnet in each AZ provide the following: * * ```ts * new ec2.Vpc(this, 'VPC', { * subnetConfiguration: [ * { * cidrMask: 24, * name: 'ingress', * subnetType: ec2.SubnetType.PUBLIC, * }, * { * cidrMask: 24, * name: 'application', * subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS, * }, * { * cidrMask: 28, * name: 'rds', * subnetType: ec2.SubnetType.PRIVATE_ISOLATED, * } * ] * }); * ``` * @default - The VPC CIDR will be evenly divided between 1 public and 1 private subnet per AZ. * @stability stable */ readonly subnetConfiguration?: Array<aws_ec2.SubnetConfiguration>; /** * If set to true then the default inbound & outbound rules will be removed from the default security group. * @default true if '@aws-cdk/aws-ec2:restrictDefaultSecurityGroup' is enabled, false otherwise * @stability stable */ readonly restrictDefaultSecurityGroup?: boolean; /** * Define the number of AZs to reserve. * When specified, the IP space is reserved for the azs but no actual * resources are provisioned. * @default 0 * @stability stable */ readonly reservedAzs?: number; /** * Configures the subnets which will have NAT Gateways/Instances. * You can pick a specific group of subnets by specifying the group name; * the picked subnets must be public subnets. * * Only necessary if you have more than one public subnet group. * @default - All public subnets. * @stability stable */ readonly natGatewaySubnets?: aws_ec2.SubnetSelection; /** * The number of NAT Gateways/Instances to create. * The type of NAT gateway or instance will be determined by the * `natGatewayProvider` parameter. * * You can set this number lower than the number of Availability Zones in your * VPC in order to save on NAT cost. Be aware you may be charged for * cross-AZ data traffic instead. * @default - One NAT gateway/instance per Availability Zone * @stability stable */ readonly natGateways?: number; /** * What type of NAT provider to use. * Select between NAT gateways or NAT instances. NAT gateways * may not be available in all AWS regions. * @default NatProvider.gateway() * @stability stable */ readonly natGatewayProvider?: aws_ec2.NatProvider; /** * Define the maximum number of AZs to use in this region. * If the region has more AZs than you want to use (for example, because of * EIP limits), pick a lower number here. The AZs will be sorted and picked * from the start of the list. * * If you pick a higher number than the number of AZs in the region, all AZs * in the region will be selected. To use "all AZs" available to your * account, use a high number (such as 99). * * Be aware that environment-agnostic stacks will be created with access to * only 2 AZs, so to use more than 2 AZs, be sure to specify the account and * region on your stack. * * Specify this option only if you do not specify `availabilityZones`. * @default 3 * @stability stable */ readonly maxAzs?: number; /** * The Provider to use to allocate IPv6 Space to your VPC. * Options include amazon provided CIDR block. * * Note this is specific to IPv6 addresses. * @default Ipv6Addresses.amazonProvided * @stability stable */ readonly ipv6Addresses?: aws_ec2.IIpv6Addresses; /** * The protocol of the vpc. * Options are IPv4 only or dual stack. * @default IpProtocol.IPV4_ONLY * @stability stable */ readonly ipProtocol?: aws_ec2.IpProtocol; /** * The Provider to use to allocate IPv4 Space to your VPC. * Options include static allocation or from a pool. * * Note this is specific to IPv4 addresses. * @default ec2.IpAddresses.cidr * @stability stable */ readonly ipAddresses?: aws_ec2.IIpAddresses; /** * Gateway endpoints to add to this VPC. * @default - None. * @stability stable */ readonly gatewayEndpoints?: Record<string, aws_ec2.GatewayVpcEndpointOptions>; /** * Flow logs to add to this VPC. * @default - No flow logs. * @stability stable */ readonly flowLogs?: Record<string, aws_ec2.FlowLogOptions>; /** * Indicates whether the DNS resolution is supported for the VPC. * If this attribute is false, the Amazon-provided DNS server in the VPC that * resolves public DNS hostnames to IP addresses is not enabled. If this * attribute is true, queries to the Amazon provided DNS server at the * 169.254.169.253 IP address, or the reserved IP address at the base of the * VPC IPv4 network range plus two will succeed. * @default true * @stability stable */ readonly enableDnsSupport?: boolean; /** * Indicates whether the instances launched in the VPC get public DNS hostnames. * If this attribute is true, instances in the VPC get public DNS hostnames, * but only if the enableDnsSupport attribute is also set to true. * @default true * @stability stable */ readonly enableDnsHostnames?: boolean; /** * The default tenancy of instances launched into the VPC. * By setting this to dedicated tenancy, instances will be launched on * hardware dedicated to a single AWS customer, unless specifically specified * at instance launch time. Please note, not all instance types are usable * with Dedicated tenancy. * @default DefaultInstanceTenancy.Default (shared) tenancy * @stability stable */ readonly defaultInstanceTenancy?: aws_ec2.DefaultInstanceTenancy; /** * If set to false then disable the creation of the default internet gateway. * @default true * @stability stable */ readonly createInternetGateway?: boolean; /** * The CIDR range to use for the VPC, e.g. '10.0.0.0/16'. * Should be a minimum of /28 and maximum size of /16. The range will be * split across all subnets per Availability Zone. * @default Vpc.DEFAULT_CIDR_RANGE * @deprecated Use ipAddresses instead * @stability deprecated */ readonly cidr?: string; /** * Availability zones this VPC spans. * Specify this option only if you do not specify `maxAzs`. * @default - a subset of AZs of the stack * @stability stable */ readonly availabilityZones?: Array<string>; }