Skip to content

Commit 6ad01eb

Browse files
committed
removing app protocol and port name when in external launch type
1 parent 190c07e commit 6ad01eb

File tree

9 files changed

+43
-18
lines changed

9 files changed

+43
-18
lines changed

ecs_composex/common/stacks/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ def __init__(
112112
raise TypeError(
113113
"stack_template is", type(stack_template), "expected", Template
114114
)
115-
self.stack_template = stack_template
115+
self.stack_template: Template = stack_template
116116
if stack_parameters is None:
117-
self.stack_parameters = {}
117+
self.stack_parameters: dict = {}
118118
elif not isinstance(stack_parameters, dict):
119119
raise TypeError("parameters is", type(stack_parameters), "expected", dict)
120120
stack_kwargs = {x: kwargs[x] for x in self.props.keys() if x in kwargs}

ecs_composex/compose/compose_services/__init__.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
from ecs_composex.compose.compose_volumes.services_helpers import map_volumes
5151
from ecs_composex.ecs.ecs_conditions import (
5252
IPC_FROM_HOST_CON_T,
53+
USE_EXTERNAL_LT_T,
5354
USE_FARGATE_CON_T,
5455
USE_WINDOWS_OS_T,
5556
)
@@ -885,13 +886,15 @@ def handle_expose_ports(self, aws_vpc_mappings):
885886
f" Skipping {self.name}.expose.{expose_port}"
886887
)
887888

888-
def define_port_mappings(self) -> list:
889+
def define_port_mappings(self, family: ComposeFamily) -> list:
889890
"""
890891
Define the list of port mappings to use for either AWS VPC deployments or else (bridge etc).
891892
Not in use atm as AWS VPC is made mandatory
892893
"""
893894
if self.container_definition:
894-
service_port_mappings = getattr(self.container_definition, "PortMappings")
895+
service_port_mappings: list[PortMapping] = getattr(
896+
self.container_definition, "PortMappings"
897+
)
895898
else:
896899
return []
897900
for protocol, mappings in self.ingress_mappings.items():
@@ -924,6 +927,17 @@ def define_port_mappings(self) -> list:
924927
)
925928
)
926929
self.handle_expose_ports(service_port_mappings)
930+
if family and family.service_compute.launch_type == "EXTERNAL":
931+
new_port_mappings: list[PortMapping] = []
932+
for _port_mapping in service_port_mappings:
933+
new_port_mappings.append(
934+
PortMapping(
935+
ContainerPort=_port_mapping.ContainerPort,
936+
HostPort=_port_mapping.HostPort,
937+
Protocol=_port_mapping.Protocol,
938+
)
939+
)
940+
return new_port_mappings
927941
return service_port_mappings
928942

929943
def import_docker_labels(self, definition: dict):

ecs_composex/ecs/ecs_family/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ def finalize_services_networking_settings(self, settings: ComposeXSettings) -> N
422422
setattr(
423423
service.container_definition,
424424
"PortMappings",
425-
service.define_port_mappings(),
425+
service.define_port_mappings(self),
426426
)
427427

428428
def init_network_settings(

ecs_composex/ecs/ecs_family/family_helpers/network_finalizers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ def finalize_network_settings(
2121
Evaluates the ECS Connect settings to be configured by the service.
2222
If there is a configuration to be set, ensures it's set on the ECS Service definition.
2323
"""
24-
family.service_networking.set_ecs_connect(settings)
24+
if family.service_compute.launch_type != "EXTERNAL":
25+
family.service_networking.set_ecs_connect(settings)
2526
if family.service_networking.ecs_connect_config and family.ecs_service:
2627
setattr(
2728
family.ecs_service.ecs_service,

ecs_composex/ecs/ecs_stack.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def add_compose_families(
112112
family.iam_manager.task_role.name_param,
113113
family.iam_manager.exec_role.arn_param,
114114
family.iam_manager.exec_role.name_param,
115-
families_sg_stack.services_mappings[family.name].parameter,
115+
families_sg_stack.services_mappings[family].parameter,
116116
],
117117
)
118118
family.stack.Parameters.update(
@@ -126,11 +126,9 @@ def add_compose_families(
126126
family.iam_manager.exec_role.arn_param.title: family.iam_manager.exec_role.output_arn,
127127
family.iam_manager.exec_role.name_param.title: family.iam_manager.exec_role.output_name,
128128
ecs_params.SERVICE_HOSTNAME.title: family.family_hostname,
129-
families_sg_stack.services_mappings[
130-
family.name
131-
].parameter.title: GetAtt(
132-
families_sg_stack.services_mappings[family.name].stack.title,
133-
f"Outputs.{families_sg_stack.services_mappings[family.name].parameter.title}",
129+
families_sg_stack.services_mappings[family].parameter.title: GetAtt(
130+
families_sg_stack.services_mappings[family].stack.title,
131+
f"Outputs.{families_sg_stack.services_mappings[family].parameter.title}",
134132
),
135133
}
136134
)

ecs_composex/ecs/managed_sidecars/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def add_to_family(self, family: ComposeFamily, is_dependency: bool = False) -> N
5353
"awslogs-stream-prefix": self.name,
5454
},
5555
)
56-
self.define_port_mappings()
56+
self.define_port_mappings(family)
5757
self.family.service_networking.merge_services_ports()
5858

5959
def set_as_dependency_to_family_services(self, is_dependency: bool = False) -> None:

ecs_composex/ecs/service_networking/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def __init__(self, family: ComposeFamily, families_sg_stack: EcsIngressStack):
7878
self.merge_networks()
7979
self.definition = merge_family_services_networking(family)
8080
self.security_group: ServiceSecurityGroup = families_sg_stack.services_mappings[
81-
family.name
81+
family
8282
]
8383
self.extra_security_groups = [self.security_group.parameter]
8484
self._subnets = Ref(APP_SUBNETS)

ecs_composex/ecs_composex.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ def generate_full_template(settings: ComposeXSettings):
310310
set_ecs_cluster_identifier(settings.root_stack, settings)
311311
add_all_tags(settings.root_stack.stack_template, settings)
312312
set_all_mappings_to_root_stack(settings)
313-
families_sg_stack.update_vpc_settings(vpc_stack)
313+
families_sg_stack.update_vpc_settings(vpc_stack, settings.root_stack)
314314

315315
for resource in settings.x_resources:
316316
if hasattr(resource, "post_processing") and hasattr(

ecs_composex/ecs_ingress/ecs_ingress_stack.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from typing import TYPE_CHECKING
1111

1212
if TYPE_CHECKING:
13+
from ecs_composex.ecs.ecs_stack import ServiceStack
1314
from ecs_composex.common.settings import ComposeXSettings
1415
from ecs_composex.ecs.ecs_family import ComposeFamily
1516

@@ -75,16 +76,16 @@ def __init__(self, name: str, settings: ComposeXSettings, **kwargs):
7576
stack_template = build_template(
7677
"Services SG for service-to-service communication"
7778
)
78-
self.services_mappings: dict[str, ServiceSecurityGroup] = {}
79+
self.services_mappings: dict[ComposeFamily, ServiceSecurityGroup] = {}
7980
add_parameters(stack_template, [CLUSTER_NAME, VPC_ID])
8081
super().__init__(name, stack_template, **kwargs)
8182

8283
for family in settings.families.values():
8384
sg = ServiceSecurityGroup(family, self)
84-
self.services_mappings[family.name] = sg
85+
self.services_mappings[family] = sg
8586
add_outputs(stack_template, [sg.output])
8687

87-
def update_vpc_settings(self, vpc_stack: VpcStack):
88+
def update_vpc_settings(self, vpc_stack: VpcStack, root_stack: ComposeXStack):
8889
if vpc_stack.vpc_resource and (
8990
vpc_stack.vpc_resource.cfn_resource or vpc_stack.vpc_resource.mappings
9091
):
@@ -96,3 +97,14 @@ def update_vpc_settings(self, vpc_stack: VpcStack):
9697
self.Parameters.update(
9798
{VPC_ID.title: FindInMap("Network", VPC_ID.title, VPC_ID.title)}
9899
)
100+
else:
101+
for family, family_sg in self.services_mappings.items():
102+
del family.stack.stack_template.parameters[family_sg.parameter.title]
103+
root_service_stack: ServiceStack = root_stack.stack_template.resources[
104+
family.stack.title
105+
]
106+
del root_service_stack.properties["Parameters"][
107+
family_sg.parameter.title
108+
]
109+
110+
del root_stack.stack_template.resources[self.name]

0 commit comments

Comments
 (0)