Skip to content

Commit 2752ff3

Browse files
committed
feat: add sg to ingress & egress
1 parent 1db052e commit 2752ff3

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

easyecs/cloudformation/template/__init__.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,20 @@ def create_load_balancer(stack, ecs_manifest: EcsFileModel, vpc):
128128
),
129129
description=egress_rule.name,
130130
)
131+
elif egress_rule.security_group_id:
132+
lb_security_group.add_egress_rule(
133+
peer=SecurityGroup.from_security_group_id(
134+
stack,
135+
"egress_rule_sg",
136+
security_group_id=egress_rule.security_group_id,
137+
),
138+
connection=(
139+
Port.tcp(egress_rule.port)
140+
if egress_rule.port != -1
141+
else Port.all_traffic()
142+
),
143+
description=egress_rule.name,
144+
)
131145
if ecs_manifest.load_balancer.security_group_rules.ingress:
132146
for (
133147
ingress_rule
@@ -156,6 +170,20 @@ def create_load_balancer(stack, ecs_manifest: EcsFileModel, vpc):
156170
),
157171
description=ingress_rule.name,
158172
)
173+
elif ingress_rule.security_group_id:
174+
lb_security_group.add_ingress_rule(
175+
peer=SecurityGroup.from_security_group_id(
176+
stack,
177+
"ingress_rule_sg",
178+
security_group_id=ingress_rule.security_group_id,
179+
),
180+
connection=(
181+
Port.tcp(ingress_rule.port)
182+
if ingress_rule.port != -1
183+
else Port.all_traffic()
184+
),
185+
description=ingress_rule.name,
186+
)
159187
listener = lb.add_listener(
160188
"NlbListener", port=ecs_manifest.load_balancer.listener_port
161189
)

easyecs/model/ecs.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,15 @@ class SecurityGroupRule(BaseModel):
155155
port: int
156156
cidr: Optional[str] = None
157157
prefix_list: Optional[str] = None
158+
security_group_id: Optional[str] = None
158159

159160
@model_validator(mode="after")
160161
def validate_cidr(self):
161-
if self.prefix_list is not None and self.cidr is not None:
162-
raise ValueError("A rule is either a CIDR or a prefix list, not both!")
163-
if self.prefix_list is None and self.cidr is None:
164-
raise ValueError("A rule is either a CIDR or a prefix list, not none!")
162+
has_at_least_two_true = lambda lst: sum(lst) >= 2
163+
if has_at_least_two_true([self.prefix_list is not None, self.cidr is not None, self.security_group_id is not None]):
164+
raise ValueError("A rule is either a CIDR, a security group id or a prefix list!")
165+
if self.prefix_list is None and self.cidr is None and self.security_group_id is None:
166+
raise ValueError("A rule is either a CIDR, a security group id or a prefix list, not none!")
165167
return self
166168

167169

0 commit comments

Comments
 (0)