-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(autoscaling): require public subnets for associatePublicIpAddress #2077
Conversation
The AutoScalingGroup construct allows setting associatePublicIpAddress, but that is pointless when you're not in a Public subnet because your shiny public IP address will still not be routable. Adding the check get rids of another sharp edge around EC2 networking that people need to be aware of. Also change the 'isPublicSubnet()' method on VPC to work with subnet IDs instead of objects, to align better with the 'subnetIds()' function. BREAKING CHANGE: `VpcNetwork.isPublicSubnet()` has been renamed to `VpcNetwork.isPublicSubnetIds()`.
*/ | ||
isPublicSubnet(subnet: IVpcSubnet): boolean; | ||
isPublicSubnets(subnetIds: string[]): boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not sure if idiomatic, but arePublicSubnets
would be grammatically correct.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I know. But isXxx()
is such a standard, didn't want to deviate from it.
How strongly do you feel about this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not strongly at all.
@@ -456,7 +456,7 @@ export class VpcNetwork extends VpcNetworkBase { | |||
if (placement) { | |||
const subnets = this.subnets(placement); | |||
for (const sub of subnets) { | |||
if (!this.isPublicSubnet(sub)) { | |||
if (this.publicSubnets.indexOf(sub) === -1) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not use the function you created?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because it feels silly to convert all subnet objects to IDs just to match on IDs.
I just realized it's a miracle this works at all, btw, because the subnet IDs are Tokens of course :).
The AutoScalingGroup construct allows setting associatePublicIpAddress,
but that is pointless when you're not in a Public subnet because your
shiny public IP address will still not be routable.
Adding the check get rids of another sharp edge around EC2 networking
that people need to be aware of.
Also change the 'isPublicSubnet()' method on VPC to work with subnet IDs
instead of objects, to align better with the 'subnetIds()' function.
BREAKING CHANGE:
VpcNetwork.isPublicSubnet()
has been renamed toVpcNetwork.isPublicSubnetIds()
.Pull Request Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license.