UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

146 lines (145 loc) 3.88 kB
import { CidrSplit } from './cidr-splits'; import { SubnetConfiguration } from './vpc'; /** * An abstract Provider of IpAddresses */ 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 * */ static cidr(cidrBlock: string): IIpAddresses; /** * Used to provide centralized Ip Address Management services for your VPC * * Uses VPC Cidr allocations from AWS IPAM * * @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 */ 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[]; } /** * Cidr Allocated Subnets */ export interface SubnetIpamOptions { /** * Cidr Allocations for Subnets */ readonly allocatedSubnets: AllocatedSubnet[]; } /** * Cidr Allocated Subnet */ export interface AllocatedSubnet { /** * Cidr Allocations for a Subnet */ readonly cidr: 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;