(CDK) How to change subnets' routetables

0

I'm trying to define custom CfnRouteTable for subnets in the VPC to use, because it's redundant and inefficient for each subnet to have its own RouteTable.

However, it appears the RouteTable property for ISubnet is read-only. How is it supposed to be done?

Edited by: icelava on Jul 27, 2021 12:29 AM

icelava
gefragt vor 3 Jahren2204 Aufrufe
1 Antwort
0

Don't know if this is the proper way or not, but had to go through quite a convoluted way to re-associate the subnets to another routetable.

Sample procedure.

// Custom route table and routes.
var customRtName = "CustomRouteTable";
var elbRouteTable = new CfnRouteTable(vpc, customRtName,
new CfnRouteTableProps
{
VpcId = vpc.VpcId,
});
elbRouteTable.Node.AddDependency(vpc.PublicSubnets);
elbRouteTable.Node.AddDependency(vpc.IsolatedSubnets);

// Looks like the ultimate name given to the custom RouteTable won't have "CustomRouteTable" in the output template;  
// only goes as far as its parent scope "Ec2SetupStack/cdk_ec2_vpc"; it has to be manually revised.  
var revisedName = vpc.Stack.StackName _ "/" _ vpc.Node.Id _ "/" _ customRtName;  
Amazon.CDK.Tags.Of(elbRouteTable).Add("Name", revisedName);  

var internetRoute = new CfnRoute(elbRouteTable, "InternetRoute",  
new CfnRouteProps  
{  
    RouteTableId = elbRouteTable.Ref,  
    DestinationCidrBlock = internetCidr,  
    GatewayId = vpc.InternetGatewayId  
});  
internetRoute.Node.AddDependency(elbRouteTable);  

this.ReAssociateRouteTable(vpc, vpc.PublicSubnets, elbRouteTable);  
this.ReAssociateRouteTable(vpc, vpc.IsolatedSubnets, elbRouteTable);  

}

private void ReAssociateRouteTable(Construct scope, ISubnet[] subnets, CfnRouteTable routeTable)
{
foreach (var subnet in subnets)
{
var routeTableAssoc = new CfnSubnetRouteTableAssociation(scope, subnet.Node.Id _ "_" _ routeTable.Node.Id,
new CfnSubnetRouteTableAssociationProps
{
SubnetId = subnet.SubnetId,
RouteTableId = routeTable.Ref
});
}
}

Edited by: icelava on Jul 27, 2021 2:29 AM - add routetable dependency on subnets to avoid association conflict on deploying brand new stack.

icelava
beantwortet vor 3 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen