feat(ec2): add support for IPAM allocation in Subnet configuration #34349
+1,178
−4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue # (if applicable)
Closes #34296
Reason for this change
The L2 construct
Subnet
does not currently support IPAM CIDR allocation, but the L1 constructCfnSubnet
already does. This feature request proposes to make the L2 constructSubnet
IPAM aware, to provide a consistent ease of use similar to L1.Description of changes
This pull request enhances the L2
Subnet
construct to support IPAM allocation. The key changes include:SubnetProps
for IPAM-based CIDR allocation:ipv4IpamAllocation
: An optional object to configure IPv4 CIDR allocation from an IPAM pool. It typically accepts anipamPoolId
(string) and an optionalnetmaskLength
(number).ipv6IpamAllocation
: An optional object to configure IPv6 CIDR allocation from an IPAM pool. It typically accepts anipamPoolId
(string) and an optionalnetmaskLength
(number).Subnet
construct to handle these new properties:ipv4IpamAllocation
is specified (withipamPoolId
and optionallynetmaskLength
), the construct uses these details to set theIpv4IpamPoolId
andIpv4NetmaskLength
properties of the underlyingCfnSubnet
.ipv6IpamAllocation
is specified (withipamPoolId
and optionallynetmaskLength
), the construct uses these details to set theIpv6IpamPoolId
andIpv6NetmaskLength
properties of the underlyingCfnSubnet
.ipv4IpamAllocation
is specified along withcidrBlock
, or ifipv6IpamAllocation
is specified along withipv6CidrBlock
.ipv4IpamAllocation
oripv6IpamAllocation
is explicitly provided for the subnet.Describe any new or updated permissions being added
No new IAM permissions are added. Only existing EC2 permissions for allocating CIDRs from an IPAM pool are used.
Description of how you validated changes
cidrBlock
), were added to theSubnet
class tests.Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license