Skip to content

Commit

Permalink
ci(fix): Replace alb with multi target fargate service
Browse files Browse the repository at this point in the history
  • Loading branch information
topher-lo committed Mar 18, 2024
1 parent 639c8a2 commit 2cfa893
Showing 1 changed file with 26 additions and 57 deletions.
83 changes: 26 additions & 57 deletions aws/stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,69 +146,38 @@ def __init__(self, scope: Construct, id: str, **kwargs) -> None:
runner_container.add_port_mappings(ecs.PortMapping(container_port=8001))

# Create Fargate service
ecs_service = ecs_patterns.ApplicationLoadBalancedFargateService(
ecs_service = ecs_patterns.ApplicationMultipleTargetGroupsFargateService(
self,
"TracecatEngineALBFargateService",
certificate=cert,
cluster=cluster,
desired_count=1,
domain_zone=hosted_zone,
health_check_grace_period=Duration.seconds(150),
public_load_balancer=True,
redirect_http=True,
service_name="tracecat-fargate-fastapi",
task_definition=task_definition,
)

# Add routing based on hostname or path with the single listern
listener = ecs_service.load_balancer.listeners[0]
listener.default_action = elbv2.ListenerAction.fixed_response(status_code=404)

# API target
listener.add_targets(
"TracecatApiTarget",
priority=10,
port=8000,
protocol=elbv2.ApplicationProtocol.HTTP,
health_check=elbv2.HealthCheck(
path="/api",
enabled=True,
interval=Duration.seconds(120),
unhealthy_threshold_count=3,
healthy_threshold_count=5,
timeout=Duration.seconds(10),
),
conditions=[
elbv2.ListenerCondition.path_patterns(["/api", "/api/*"]),
],
targets=[
ecs_service.service.load_balancer_target(
container_name="TracecatApiContainer", container_port=8000
load_balancers=[
elbv2.ApplicationLoadBalancerProps(
name="loadbalancer",
idle_timeout=Duration.seconds(400),
domain_name=AWS_ROUTE53__HOSTED_ZONE_NAME,
domain_zone=hosted_zone,
listeners=[
ecs_patterns.ApplicationListenerProps(
name="listener",
certificate=cert,
)
],
)
],
)

# Runner target
listener.add_targets(
"TracecatRunnerTarget",
priority=20,
port=8001,
protocol=elbv2.ApplicationProtocol.HTTP,
health_check=elbv2.HealthCheck(
path="/runner",
enabled=True,
interval=Duration.seconds(120),
unhealthy_threshold_count=3,
healthy_threshold_count=5,
timeout=Duration.seconds(10),
),
conditions=[
elbv2.ListenerCondition.path_patterns(["/runner", "/runner/*"]),
],
targets=[
ecs_service.service.load_balancer_target(
container_name="TracecatRunnerContainer", container_port=8001
)
target_groups=[
ecs_patterns.ApplicationTargetProps(
container_port="8000",
path_pattern="/api",
priority=10,
listener="listener",
),
ecs_patterns.ApplicationTargetProps(
container_port="8001",
path_pattern="/runner",
priority=20,
listener="listener",
),
],
)

Expand Down

0 comments on commit 2cfa893

Please sign in to comment.