public async Task disassociateAndDeleteRouteTableAsync(RouteTable table) { bool isMain = false; foreach (var association in table.Associations) { if (!association.Main) { await _ec2Client.DisassociateRouteTableAsync(new DisassociateRouteTableRequest { AssociationId = association.RouteTableAssociationId }); } else { isMain = true; } } foreach (var route in table.Routes) { if (route.GatewayId != "local") { await _ec2Client.DeleteRouteAsync(new DeleteRouteRequest { RouteTableId = table.RouteTableId, DestinationCidrBlock = route.DestinationCidrBlock }); } } if (!isMain) { await _ec2Client.DeleteRouteTableAsync(new DeleteRouteTableRequest { RouteTableId = table.RouteTableId }); } }