- 最新
- 投票最多
- 评论最多
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.
相关内容
- AWS 官方已更新 1 年前