feat(ec2-alpha): improve VPC peering API with type-safe role handling and fromAttributes method #35606
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 #35591, #35602.
Reason for this change
The current VPC peering API in aws-ec2-alpha has two significant usability issues:
Magic string anti-pattern: Users must specify
peerRoleArn
as a string when creating cross-account peering connections, requiring manual ARN construction or knowledge of the exact ARN format. This creates a disconnect between thecreateAcceptorVpcRole()
method that creates the role and thecreatePeeringConnection()
method that requires the ARN as a string.Missing standard CDK pattern: The
VPCPeeringConnection
class lacks afromAttributes
static method, forcing users to create verbose workarounds when referencing existing peering connections for routing.These issues reduce type safety, create potential for errors, and don't follow established CDK patterns used throughout the framework.
Description of changes
This PR eliminates the magic string anti-pattern and adds the standard CDK import pattern:
API Changes:
VPCPeeringConnectionOptions.peerRoleArn?: string
→peerRole?: IRole
VpcV2Base.createRequestorPeerRole(acceptorAccountId: string): Role
- Creates requestor-side peering roleVPCPeeringConnection.fromAttributes(scope, id, attrs): VPCPeeringConnection
- Standard CDK import patternVpcPeeringConnectionAttributes
withvpcPeeringConnectionId: string
Implementation Details:
VPCPeeringConnection
constructor to acceptIRole
objects instead of string ARNsIRole
objectspeerRole
propertyMigration Example:
Describe any new or updated permissions being added
N/A - No new IAM permissions required. The implementation uses existing IAM role patterns and maintains the same underlying CloudFormation resource generation.
Description of how you validated changes
createRequestorPeerRole
method andfromAttributes
static method.Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license