cdk-nextjs
Version:
Deploy Next.js apps on AWS with CDK
225 lines (224 loc) • 8.33 kB
TypeScript
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>;
}