255 lines
6.6 KiB
TypeScript
255 lines
6.6 KiB
TypeScript
import type { Construct } from 'constructs';
|
|
import type { CidrSplit } from './cidr-splits';
|
|
import { CfnVPCCidrBlock } from './ec2.generated';
|
|
import type { SubnetConfiguration } from './vpc';
|
|
/**
|
|
* An abstract Provider of IpAddresses
|
|
*
|
|
* Note this is specific to the IPv4 CIDR.
|
|
*/
|
|
export declare class IpAddresses {
|
|
/**
|
|
* Used to provide local Ip Address Management services for your VPC
|
|
*
|
|
* VPC CIDR is supplied at creation and subnets are calculated locally
|
|
*
|
|
* Note this is specific to the IPv4 CIDR.
|
|
*
|
|
*/
|
|
static cidr(cidrBlock: string): IIpAddresses;
|
|
/**
|
|
* Used to provide centralized Ip Address Management services for your VPC
|
|
*
|
|
* Uses VPC CIDR allocations from AWS IPAM
|
|
*
|
|
* Note this is specific to the IPv4 CIDR.
|
|
*
|
|
* @see https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html
|
|
*/
|
|
static awsIpamAllocation(props: AwsIpamProps): IIpAddresses;
|
|
private constructor();
|
|
}
|
|
/**
|
|
* Implementations for ip address management.
|
|
*
|
|
* Note this is specific to the IPv4 CIDR.
|
|
*/
|
|
export interface IIpAddresses {
|
|
/**
|
|
* Called by the VPC to retrieve VPC options from the Ipam
|
|
*
|
|
* Don't call this directly, the VPC will call it automatically.
|
|
*/
|
|
allocateVpcCidr(): VpcIpamOptions;
|
|
/**
|
|
* Called by the VPC to retrieve Subnet options from the Ipam
|
|
*
|
|
* Don't call this directly, the VPC will call it automatically.
|
|
*/
|
|
allocateSubnetsCidr(input: AllocateCidrRequest): SubnetIpamOptions;
|
|
}
|
|
/**
|
|
* CIDR Allocated Vpc
|
|
*/
|
|
export interface VpcIpamOptions {
|
|
/**
|
|
* CIDR Block for Vpc
|
|
*
|
|
* @default - Only required when Ipam has concrete allocation available for static Vpc
|
|
*/
|
|
readonly cidrBlock?: string;
|
|
/**
|
|
* CIDR Mask for Vpc
|
|
*
|
|
* @default - Only required when using AWS Ipam
|
|
*/
|
|
readonly ipv4NetmaskLength?: number;
|
|
/**
|
|
* ipv4 IPAM Pool Id
|
|
*
|
|
* @default - Only required when using AWS Ipam
|
|
*/
|
|
readonly ipv4IpamPoolId?: string;
|
|
}
|
|
/**
|
|
* Subnet requested for allocation
|
|
*/
|
|
export interface RequestedSubnet {
|
|
/**
|
|
* The availability zone for the subnet
|
|
*/
|
|
readonly availabilityZone: string;
|
|
/**
|
|
* Specify configuration parameters for a single subnet group in a VPC
|
|
*/
|
|
readonly configuration: SubnetConfiguration;
|
|
/**
|
|
* Id for the Subnet construct
|
|
*/
|
|
readonly subnetConstructId: string;
|
|
}
|
|
/**
|
|
* Request for subnets CIDR to be allocated for a Vpc
|
|
*/
|
|
export interface AllocateCidrRequest {
|
|
/**
|
|
* The IPv4 CIDR block for this Vpc
|
|
*/
|
|
readonly vpcCidr: string;
|
|
/**
|
|
* The Subnets to be allocated
|
|
*/
|
|
readonly requestedSubnets: RequestedSubnet[];
|
|
}
|
|
/**
|
|
* Request for allocation of the VPC IPv6 CIDR.
|
|
*/
|
|
export interface AllocateVpcIpv6CidrRequest {
|
|
/**
|
|
* The VPC construct to attach to.
|
|
*/
|
|
readonly scope: Construct;
|
|
/**
|
|
* The id of the VPC.
|
|
*/
|
|
readonly vpcId: string;
|
|
}
|
|
/**
|
|
* Request for IPv6 CIDR block to be split up.
|
|
*/
|
|
export interface CreateIpv6CidrBlocksRequest {
|
|
/**
|
|
* The IPv6 CIDR block string representation.
|
|
*/
|
|
readonly ipv6SelectedCidr: string;
|
|
/**
|
|
* The number of subnets to assign CIDRs to.
|
|
*/
|
|
readonly subnetCount: number;
|
|
/**
|
|
* Size of the covered bits in the CIDR.
|
|
* @default - 128 - 64 = /64 CIDR.
|
|
*/
|
|
readonly sizeMask?: string;
|
|
}
|
|
/**
|
|
* Request for subnet IPv6 CIDRs to be allocated for a VPC.
|
|
*/
|
|
export interface AllocateIpv6CidrRequest {
|
|
/**
|
|
* List of subnets allocated with IPv4 CIDRs
|
|
*/
|
|
readonly allocatedSubnets: AllocatedSubnet[];
|
|
/**
|
|
* The IPv6 CIDRs to be allocated to the subnets
|
|
*/
|
|
readonly ipv6Cidrs: string[];
|
|
}
|
|
/**
|
|
* CIDR Allocated Subnets
|
|
*/
|
|
export interface SubnetIpamOptions {
|
|
/**
|
|
* CIDR Allocations for Subnets
|
|
*/
|
|
readonly allocatedSubnets: AllocatedSubnet[];
|
|
}
|
|
/**
|
|
* CIDR Allocated Subnet
|
|
*/
|
|
export interface AllocatedSubnet {
|
|
/**
|
|
* IPv4 CIDR Allocations for a Subnet.
|
|
*
|
|
* Note this is specific to the IPv4 CIDR.
|
|
*/
|
|
readonly cidr: string;
|
|
/**
|
|
* IPv6 CIDR Allocations for a Subnet.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*
|
|
* @default - no IPV6 CIDR
|
|
*/
|
|
readonly ipv6Cidr?: string;
|
|
}
|
|
/**
|
|
* Configuration for AwsIpam
|
|
*/
|
|
export interface AwsIpamProps {
|
|
/**
|
|
* Netmask length for Vpc
|
|
*/
|
|
readonly ipv4NetmaskLength: number;
|
|
/**
|
|
* Ipam Pool Id for ipv4 allocation
|
|
*/
|
|
readonly ipv4IpamPoolId: string;
|
|
/**
|
|
* Default length for Subnet ipv4 Network mask
|
|
*
|
|
* Specify this option only if you do not specify all Subnets using SubnetConfiguration with a cidrMask
|
|
*
|
|
* @default - Default ipv4 Subnet Mask for subnets in Vpc
|
|
*
|
|
*/
|
|
readonly defaultSubnetIpv4NetmaskLength?: number;
|
|
}
|
|
/**
|
|
* Convert a CIDR split command to a CFN expression that calculates the same CIDR
|
|
*
|
|
* Can recursively produce multiple `{ Fn::Cidr }` expressions.
|
|
*
|
|
* This is necessary because CFN's `{ Fn::Cidr }` reifies the split to an actual list of
|
|
* strings, and to limit resource consumption `count` may never be higher than 256. So
|
|
* if we need to split deeper, we need to do more than one split.
|
|
*
|
|
* (Function public for testing)
|
|
*/
|
|
export declare function cidrSplitToCfnExpression(parentCidr: string, split: CidrSplit): string;
|
|
/**
|
|
* An abstract Provider of Ipv6Addresses.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*/
|
|
export declare class Ipv6Addresses {
|
|
/**
|
|
* Used for IPv6 address management with Amazon provided CIDRs.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*/
|
|
static amazonProvided(): IIpv6Addresses;
|
|
private constructor();
|
|
}
|
|
/**
|
|
* Implementations for IPv6 address management.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*/
|
|
export interface IIpv6Addresses {
|
|
/**
|
|
* Whether the IPv6 CIDR is Amazon provided or not.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*/
|
|
amazonProvided: boolean;
|
|
/**
|
|
* Called by VPC to allocate IPv6 CIDR.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*/
|
|
allocateVpcIpv6Cidr(input: AllocateVpcIpv6CidrRequest): CfnVPCCidrBlock;
|
|
/**
|
|
* Split IPv6 CIDR block up for subnets.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*/
|
|
createIpv6CidrBlocks(input: CreateIpv6CidrBlocksRequest): string[];
|
|
/**
|
|
* Allocates Subnets IPv6 CIDRs. Called by VPC when creating subnets with IPv6 enabled.
|
|
*
|
|
* Note this is specific to the IPv6 CIDR.
|
|
*/
|
|
allocateSubnetsIpv6Cidr(input: AllocateIpv6CidrRequest): SubnetIpamOptions;
|
|
}
|