Skip to content
This repository was archived by the owner on Mar 27, 2023. It is now read-only.

Commit abdac76

Browse files
committed
Merge branch '37-add-celery-worker' into 'develop'
Resolve "Add celery worker(s)" Closes #37 See merge request verbose-equals-true/django-postgres-vue-gitlab-ecs!80
2 parents aa3b585 + b418b5f commit abdac76

File tree

8 files changed

+307
-24
lines changed

8 files changed

+307
-24
lines changed

awscdk/awscdk/cdk_app_root.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from cert import SiteCertificate
66
from hosted_zone import HostedZone
77
from cloudfront import CloudFront
8-
from ecr import ElasticContainerRepo
98
from vpc import Vpc
109
from assets import Assets
1110
from rds import Rds
@@ -17,6 +16,7 @@
1716

1817
from backend import Backend
1918
from backend_tasks import BackendTasks
19+
from celery_workers import CeleryDefaultWorkerService
2020

2121

2222
class ApplicationStack(core.Stack):
@@ -105,6 +105,7 @@ def __init__(
105105
"Variables",
106106
bucket_name=self.assets.assets_bucket.bucket_name,
107107
db_secret=self.rds.db_secret,
108+
full_domain_name=full_domain_name,
108109
postgres_host=self.rds.rds_cluster.get_att(
109110
"Endpoint.Address"
110111
).to_string(),
@@ -121,6 +122,10 @@ def __init__(
121122
security_group=self.vpc.vpc_default_security_group,
122123
)
123124

125+
self.celery_worker_service = CeleryDefaultWorkerService(
126+
self, "CeleryWorkerService",
127+
)
128+
124129
# migrate, collectstatic, createsuperuser
125130
self.backend_tasks = BackendTasks(
126131
self,
@@ -137,6 +142,7 @@ def __init__(
137142
self.backend.backend_task.task_role,
138143
self.backend_tasks.collectstatic_task.task_role,
139144
self.backend_tasks.create_superuser_task.task_role,
145+
self.celery_worker_service.celery_default_worker_task.task_role,
140146
]
141147

142148
for task_role in task_roles:

awscdk/awscdk/celery_workers.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from aws_cdk import (
2+
core,
3+
aws_ec2 as ec2,
4+
aws_ecs as ecs,
5+
aws_ecs_patterns as ecs_patterns,
6+
aws_elasticloadbalancingv2 as elbv2,
7+
)
8+
9+
10+
class CeleryDefaultWorkerService(core.Construct):
11+
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
12+
super().__init__(
13+
scope, id, **kwargs,
14+
)
15+
16+
self.celery_default_worker_task = ecs.FargateTaskDefinition(
17+
self, "DefaultCeleryWorkerTask"
18+
)
19+
20+
self.celery_default_worker_task.add_container(
21+
"DefaultCeleryWorkerContaienr",
22+
image=scope.image,
23+
logging=ecs.LogDrivers.aws_logs(
24+
stream_prefix="CeleryDefaultWorker"
25+
),
26+
environment=scope.variables.regular_variables,
27+
secrets=scope.variables.secret_variables,
28+
command=[
29+
'celery',
30+
'worker',
31+
'-A',
32+
'backend.celery_app:app',
33+
'-l',
34+
'info',
35+
],
36+
)
37+
38+
self.celery_default_worker_service = ecs.FargateService(
39+
self,
40+
"DefaultCeleryWorkerService",
41+
task_definition=self.celery_default_worker_task,
42+
assign_public_ip=True,
43+
cluster=scope.ecs.cluster,
44+
security_group=ec2.SecurityGroup.from_security_group_id(
45+
self,
46+
"CeleryDefaultWorkerSG",
47+
security_group_id=scope.vpc.vpc_default_security_group,
48+
),
49+
)

awscdk/awscdk/cloudfront.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,7 @@ def __init__(
7272
cloudfront.Behavior(
7373
allowed_methods=cloudfront.CloudFrontAllowedMethods.ALL,
7474
path_pattern=path_pattern,
75-
forwarded_values={
76-
"headers": ["*"],
77-
"cookies": {"forward": "all"},
78-
"query_string": True,
79-
},
75+
forwarded_values={"query_string": True},
8076
)
8177
for path_pattern in ["/static/*", "/media/*"]
8278
],

awscdk/awscdk/env_vars.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def __init__(
1212
postgres_host: str,
1313
redis_host: str,
1414
db_secret: secrets.ISecret,
15+
full_domain_name: str,
1516
**kwargs,
1617
) -> None:
1718
super().__init__(
@@ -29,6 +30,7 @@ def __init__(
2930
self.regular_variables = {
3031
"DJANGO_SETTINGS_MODULE": "backend.settings.production",
3132
"DEBUG": "",
33+
"FULL_DOMAIN_NAME": full_domain_name,
3234
"AWS_STORAGE_BUCKET_NAME": bucket_name,
3335
"POSTGRES_SERVICE_HOST": postgres_host,
3436
"POSTGRES_PASSWORD": db_secret.secret_value_from_json(

0 commit comments

Comments
 (0)