feat: add support to Subnet and VPC L2 constructs for deploying to an Outpost#33545
feat: add support to Subnet and VPC L2 constructs for deploying to an Outpost#33545RyanFrench wants to merge 7 commits intoaws:mainfrom
Conversation
…s subnets onto an AWS Outpost
There was a problem hiding this comment.
The pull request linter fails with the following errors:
❌ Features must contain a change to an integration test file and the resulting snapshot.
❌ CLI code has changed. A maintainer must run the code through the testing pipeline (git fetch origin pull/33545/head && git push -f origin FETCH_HEAD:test-main-pipeline), then add the 'pr-linter/cli-integ-tested' label when the pipeline succeeds.
If you believe this pull request should receive an exemption, please comment and provide a justification. A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed, add Clarification Request to a comment.
✅ A exemption request has been requested. Please wait for a maintainer's review.
|
Exemption Request - I have some Integ tests that I can add, however, they will always fail unless the account has an Outpost attached to it, and the test is able to dynamically find the correct values for OutpostARN, Local Gateway ID, Local Gateway Route Table ID, and the CIDR range associated with the ServiceLink. Some of these values cannot be programatically determined. |
| publicOutpostSubnet.addRoute('DefaultRoute', { | ||
| routerType: routerType, | ||
| routerId: routerId, | ||
| destinationCidrBlock: '0.0.0.0/0', |
There was a problem hiding this comment.
will this always be an internet IP range or can be restricted ?
There was a problem hiding this comment.
This applied to the public subnets that are deployed on the Outpost, where internet traffic can be routed either through an Internet Gateway deployed in region or the Local Gateway deployed on the Outpost network. The aim was to create functionality similar to the addDefaultInternetRoute() function that applies to public subnets deployed in region where 0.0.0.0/0 is always used.
| publicOutpostSubnet.addRoute('DefaultRoute6', { | ||
| routerType: routerType, | ||
| routerId: routerId, | ||
| destinationIpv6CidrBlock: '::/0', |
There was a problem hiding this comment.
@RyanFrench , Thank you for your contribution, before starting to review this, some high level questions:
- Can this be just a single field under existing subnet type where users can provide outpost Arn.
- instead of these default route, we can expose a helper method to to define this association for selected subnets, also addRoute method is for defining a new Route of type
AWS::EC2::Routebut i see some other resources that are specific to localgateway routinghttps://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetable.html
Hi @shikha372. Thank you for picking this up. We originally did look to just add the outpost Arn to the existing subnet types, which does work for allowing the subnet to be deployed on to an Outpost, however, the complexity is in the various routing options for Outposts. Traffic can either be routed over the service link into the region, or it can be routed via the Local Gateway direct to the internet. Without these changes then users deploying to Outpost would be unable to define the Outpost subnets inside the VPC construct, or would need to define them and then have a way of deleting the automatically added default routes to replace with local gateway routes. In terms of the local gateway default routes, I believe you're referring to the |
|
Thanks @RyanFrench ,
Let me know what you think. |
|
This PR has been in the CHANGES REQUESTED state for 3 weeks, and looks abandoned. Note that PRs with failing linting check or builds are not reviewed, please ensure your build is passing To prevent automatic closure:
This PR will automatically close in 14 days if no action is taken. |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
|
This PR has been deemed to be abandoned, and will be automatically closed. Please create a new PR for these changes if you think this decision has been made in error. |
|
Comments on closed issues and PRs are hard for our team to see. |
Issue # (if applicable)
Closes #33542.
Reason for this change
This PR extends the L2 VPC Construct to allow developers to provision a VPC that extends the Subnets onto an Outpost, and provides simplified configuration of the routing via the Local Gateway (on-premise router) or NAT/Internet Gateway (in-region routers)
Description of changes
This PR changes the VPC and Subnet L2 constructs with new subnet types, adds additional configuration options to the SubnetConfig in the VPC construct, and changes the default route setup based on the SubnetConfig.
Describe any new or updated permissions being added
None
Description of how you validated changes
We have written tests covering the new configuration options for subnets, as well as validated that this worked by deploying a VPC to an account with an Outpost attached, using the example code in the original Issue.
Example usage for deploying a VPC with on-premise networking routing traffic via the Local Gateway
Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license