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

Commit e6f56fe

Browse files
committed
wip added default celery worker
1 parent f5c8a73 commit e6f56fe

File tree

3 files changed

+250
-9
lines changed

3 files changed

+250
-9
lines changed

awscdk/awscdk/cdk_app_root.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
from backend import Backend
1919
from backend_tasks import BackendTasks
20+
from celery_workers import CeleryDefaultWorkerService
2021

2122

2223
class ApplicationStack(core.Stack):
@@ -122,6 +123,10 @@ def __init__(
122123
security_group=self.vpc.vpc_default_security_group,
123124
)
124125

126+
self.celery_worker_service = CeleryDefaultWorkerService(
127+
self, "CeleryWorkerService",
128+
)
129+
125130
# migrate, collectstatic, createsuperuser
126131
self.backend_tasks = BackendTasks(
127132
self,

awscdk/awscdk/celery_workers.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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(stream_prefix="Backend"),
24+
environment=scope.variables.regular_variables,
25+
secrets=scope.variables.secret_variables,
26+
command=[
27+
'celery',
28+
'worker',
29+
'-A',
30+
'backend.celery_app:app',
31+
'-l',
32+
'info',
33+
],
34+
)
35+
36+
self.celery_default_worker_service = ecs.FargateService(
37+
self,
38+
"DefaultCeleryWorkerService",
39+
task_definition=self.celery_default_worker_task,
40+
assign_public_ip=True,
41+
cluster=scope.ecs.cluster,
42+
security_group=ec2.SecurityGroup.from_security_group_id(
43+
self,
44+
"CeleryDefaultWorkerSG",
45+
security_group_id=scope.vpc.vpc_default_security_group,
46+
),
47+
)

awscdk/stack.yml

Lines changed: 198 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,8 @@ Resources:
283283
Ref: VpcC3027511
284284
Metadata:
285285
aws:cdk:path: dev-mysite-com-stack/ApplicationLoadBalancer/ALB/SecurityGroup/Resource
286-
ApplicationLoadBalancerALBSecurityGrouptodevmysitecomstackBackendBackendSecurityGroup987E976C8000947E9AB3:
287-
Type: AWS::EC2::SecurityGroupEgress
286+
? ApplicationLoadBalancerALBSecurityGrouptodevmysitecomstackBackendBackendSecurityGroup987E976C8000947E9AB3
287+
: Type: AWS::EC2::SecurityGroupEgress
288288
Properties:
289289
GroupId:
290290
Fn::GetAtt:
@@ -833,6 +833,8 @@ Resources:
833833
Value: backend.settings.production
834834
- Name: DEBUG
835835
Value: ""
836+
- Name: FULL_DOMAIN_NAME
837+
Value: dev.mysite.com
836838
- Name: AWS_STORAGE_BUCKET_NAME
837839
Value:
838840
Ref: BackendAssetsAssetsBucket62473847
@@ -862,7 +864,7 @@ Resources:
862864
- - Ref: AWS::AccountId
863865
- .dkr.ecr.us-east-1.
864866
- Ref: AWS::URLSuffix
865-
- /aws-cdk/assets:cecf15b2b6427c94fe8347ab93564105a951a8de4a7f7c927ada0374f2a9c97c
867+
- /aws-cdk/assets:ff76cf98cc8769bd64cf6cadd69b7edf1f23745c2680ef7894d7531a8ecb58fb
866868
LogConfiguration:
867869
LogDriver: awslogs
868870
Options:
@@ -957,8 +959,8 @@ Resources:
957959
- Ref: BackendBackendTaskExecutionRole3B22D4E5
958960
Metadata:
959961
aws:cdk:path: dev-mysite-com-stack/Backend/BackendTask/ExecutionRole/DefaultPolicy/Resource
960-
BackendBackendSecurityGroupfromdevmysitecomstackApplicationLoadBalancerALBSecurityGroup41CD7D0380003CD57722:
961-
Type: AWS::EC2::SecurityGroupIngress
962+
? BackendBackendSecurityGroupfromdevmysitecomstackApplicationLoadBalancerALBSecurityGroup41CD7D0380003CD57722
963+
: Type: AWS::EC2::SecurityGroupIngress
962964
Properties:
963965
IpProtocol: tcp
964966
Description: Load balancer to target
@@ -1010,6 +1012,188 @@ Resources:
10101012
- ApplicationLoadBalancerALBHTTPSListenerBackendTargetRule6CC8AE94
10111013
Metadata:
10121014
aws:cdk:path: dev-mysite-com-stack/Backend/BackendService/Service
1015+
CeleryWorkerServiceDefaultCeleryWorkerTaskTaskRole6B1D91A7:
1016+
Type: AWS::IAM::Role
1017+
Properties:
1018+
AssumeRolePolicyDocument:
1019+
Statement:
1020+
- Action: sts:AssumeRole
1021+
Effect: Allow
1022+
Principal:
1023+
Service: ecs-tasks.amazonaws.com
1024+
Version: "2012-10-17"
1025+
Tags:
1026+
- Key: StackName
1027+
Value: dev-mysite-com
1028+
Metadata:
1029+
aws:cdk:path: dev-mysite-com-stack/CeleryWorkerService/DefaultCeleryWorkerTask/TaskRole/Resource
1030+
CeleryWorkerServiceDefaultCeleryWorkerTask14365B86:
1031+
Type: AWS::ECS::TaskDefinition
1032+
Properties:
1033+
ContainerDefinitions:
1034+
- Command:
1035+
- celery
1036+
- worker
1037+
- -A
1038+
- backend.celery_app:app
1039+
- -l
1040+
- info
1041+
Environment:
1042+
- Name: DJANGO_SETTINGS_MODULE
1043+
Value: backend.settings.production
1044+
- Name: DEBUG
1045+
Value: ""
1046+
- Name: FULL_DOMAIN_NAME
1047+
Value: dev.mysite.com
1048+
- Name: AWS_STORAGE_BUCKET_NAME
1049+
Value:
1050+
Ref: BackendAssetsAssetsBucket62473847
1051+
- Name: POSTGRES_SERVICE_HOST
1052+
Value:
1053+
Fn::GetAtt:
1054+
- RdsDBCluster25564148
1055+
- Endpoint.Address
1056+
- Name: POSTGRES_PASSWORD
1057+
Value:
1058+
Fn::Join:
1059+
- ""
1060+
- - "{{resolve:secretsmanager:"
1061+
- Ref: RdsDBClusterDBSecret28397CCA
1062+
- :SecretString:password::}}
1063+
- Name: SECRET_KEY
1064+
Value: mysecretkey123
1065+
- Name: REDIS_SERVICE_HOST
1066+
Value:
1067+
Fn::GetAtt:
1068+
- ElastiCacheRedisElastiCacheClusterRedis25390D9F
1069+
- RedisEndpoint.Address
1070+
Essential: true
1071+
Image:
1072+
Fn::Join:
1073+
- ""
1074+
- - Ref: AWS::AccountId
1075+
- .dkr.ecr.us-east-1.
1076+
- Ref: AWS::URLSuffix
1077+
- /aws-cdk/assets:ff76cf98cc8769bd64cf6cadd69b7edf1f23745c2680ef7894d7531a8ecb58fb
1078+
LogConfiguration:
1079+
LogDriver: awslogs
1080+
Options:
1081+
awslogs-group:
1082+
Ref: CeleryWorkerServiceDefaultCeleryWorkerTaskDefaultCeleryWorkerContaienrLogGroup31C824ED
1083+
awslogs-stream-prefix: Backend
1084+
awslogs-region: us-east-1
1085+
Name: DefaultCeleryWorkerContaienr
1086+
Secrets:
1087+
- Name: DJANGO_SECRET_KEY
1088+
ValueFrom:
1089+
Ref: VariablesDjangoSecretKeyE4FA41EE
1090+
Cpu: "256"
1091+
ExecutionRoleArn:
1092+
Fn::GetAtt:
1093+
- CeleryWorkerServiceDefaultCeleryWorkerTaskExecutionRole67DC8A03
1094+
- Arn
1095+
Family: devmysitecomstackCeleryWorkerServiceDefaultCeleryWorkerTask00846BD8
1096+
Memory: "512"
1097+
NetworkMode: awsvpc
1098+
RequiresCompatibilities:
1099+
- FARGATE
1100+
Tags:
1101+
- Key: StackName
1102+
Value: dev-mysite-com
1103+
TaskRoleArn:
1104+
Fn::GetAtt:
1105+
- CeleryWorkerServiceDefaultCeleryWorkerTaskTaskRole6B1D91A7
1106+
- Arn
1107+
Metadata:
1108+
aws:cdk:path: dev-mysite-com-stack/CeleryWorkerService/DefaultCeleryWorkerTask/Resource
1109+
? CeleryWorkerServiceDefaultCeleryWorkerTaskDefaultCeleryWorkerContaienrLogGroup31C824ED
1110+
: Type: AWS::Logs::LogGroup
1111+
UpdateReplacePolicy: Retain
1112+
DeletionPolicy: Retain
1113+
Metadata:
1114+
aws:cdk:path: dev-mysite-com-stack/CeleryWorkerService/DefaultCeleryWorkerTask/DefaultCeleryWorkerContaienr/LogGroup/Resource
1115+
CeleryWorkerServiceDefaultCeleryWorkerTaskExecutionRole67DC8A03:
1116+
Type: AWS::IAM::Role
1117+
Properties:
1118+
AssumeRolePolicyDocument:
1119+
Statement:
1120+
- Action: sts:AssumeRole
1121+
Effect: Allow
1122+
Principal:
1123+
Service: ecs-tasks.amazonaws.com
1124+
Version: "2012-10-17"
1125+
Tags:
1126+
- Key: StackName
1127+
Value: dev-mysite-com
1128+
Metadata:
1129+
aws:cdk:path: dev-mysite-com-stack/CeleryWorkerService/DefaultCeleryWorkerTask/ExecutionRole/Resource
1130+
CeleryWorkerServiceDefaultCeleryWorkerTaskExecutionRoleDefaultPolicy301669C2:
1131+
Type: AWS::IAM::Policy
1132+
Properties:
1133+
PolicyDocument:
1134+
Statement:
1135+
- Action:
1136+
- ecr:BatchCheckLayerAvailability
1137+
- ecr:GetDownloadUrlForLayer
1138+
- ecr:BatchGetImage
1139+
Effect: Allow
1140+
Resource:
1141+
Fn::Join:
1142+
- ""
1143+
- - "arn:"
1144+
- Ref: AWS::Partition
1145+
- ":ecr:us-east-1:"
1146+
- Ref: AWS::AccountId
1147+
- :repository/aws-cdk/assets
1148+
- Action: ecr:GetAuthorizationToken
1149+
Effect: Allow
1150+
Resource: "*"
1151+
- Action:
1152+
- logs:CreateLogStream
1153+
- logs:PutLogEvents
1154+
Effect: Allow
1155+
Resource:
1156+
Fn::GetAtt:
1157+
- CeleryWorkerServiceDefaultCeleryWorkerTaskDefaultCeleryWorkerContaienrLogGroup31C824ED
1158+
- Arn
1159+
- Action: secretsmanager:GetSecretValue
1160+
Effect: Allow
1161+
Resource:
1162+
Ref: VariablesDjangoSecretKeyE4FA41EE
1163+
Version: "2012-10-17"
1164+
PolicyName: CeleryWorkerServiceDefaultCeleryWorkerTaskExecutionRoleDefaultPolicy301669C2
1165+
Roles:
1166+
- Ref: CeleryWorkerServiceDefaultCeleryWorkerTaskExecutionRole67DC8A03
1167+
Metadata:
1168+
aws:cdk:path: dev-mysite-com-stack/CeleryWorkerService/DefaultCeleryWorkerTask/ExecutionRole/DefaultPolicy/Resource
1169+
CeleryWorkerServiceDefaultCeleryWorkerServiceE0C9E2AA:
1170+
Type: AWS::ECS::Service
1171+
Properties:
1172+
Cluster:
1173+
Ref: EcsEcsCluster51C39CA0
1174+
DeploymentConfiguration:
1175+
MaximumPercent: 200
1176+
MinimumHealthyPercent: 50
1177+
DesiredCount: 1
1178+
EnableECSManagedTags: false
1179+
LaunchType: FARGATE
1180+
NetworkConfiguration:
1181+
AwsvpcConfiguration:
1182+
AssignPublicIp: ENABLED
1183+
SecurityGroups:
1184+
- Fn::GetAtt:
1185+
- VpcC3027511
1186+
- DefaultSecurityGroup
1187+
Subnets:
1188+
- Ref: VpcPublicSubnet1Subnet8E8DEDC0
1189+
- Ref: VpcPublicSubnet2SubnetA811849C
1190+
Tags:
1191+
- Key: StackName
1192+
Value: dev-mysite-com
1193+
TaskDefinition:
1194+
Ref: CeleryWorkerServiceDefaultCeleryWorkerTask14365B86
1195+
Metadata:
1196+
aws:cdk:path: dev-mysite-com-stack/CeleryWorkerService/DefaultCeleryWorkerService/Service
10131197
BackendTasksMigrateTaskTaskRoleAE7059C2:
10141198
Type: AWS::IAM::Role
10151199
Properties:
@@ -1039,6 +1223,8 @@ Resources:
10391223
Value: backend.settings.production
10401224
- Name: DEBUG
10411225
Value: ""
1226+
- Name: FULL_DOMAIN_NAME
1227+
Value: dev.mysite.com
10421228
- Name: AWS_STORAGE_BUCKET_NAME
10431229
Value:
10441230
Ref: BackendAssetsAssetsBucket62473847
@@ -1068,7 +1254,7 @@ Resources:
10681254
- - Ref: AWS::AccountId
10691255
- .dkr.ecr.us-east-1.
10701256
- Ref: AWS::URLSuffix
1071-
- /aws-cdk/assets:cecf15b2b6427c94fe8347ab93564105a951a8de4a7f7c927ada0374f2a9c97c
1257+
- /aws-cdk/assets:ff76cf98cc8769bd64cf6cadd69b7edf1f23745c2680ef7894d7531a8ecb58fb
10721258
LogConfiguration:
10731259
LogDriver: awslogs
10741260
Options:
@@ -1226,6 +1412,8 @@ Resources:
12261412
Value: backend.settings.production
12271413
- Name: DEBUG
12281414
Value: ""
1415+
- Name: FULL_DOMAIN_NAME
1416+
Value: dev.mysite.com
12291417
- Name: AWS_STORAGE_BUCKET_NAME
12301418
Value:
12311419
Ref: BackendAssetsAssetsBucket62473847
@@ -1255,7 +1443,7 @@ Resources:
12551443
- - Ref: AWS::AccountId
12561444
- .dkr.ecr.us-east-1.
12571445
- Ref: AWS::URLSuffix
1258-
- /aws-cdk/assets:cecf15b2b6427c94fe8347ab93564105a951a8de4a7f7c927ada0374f2a9c97c
1446+
- /aws-cdk/assets:ff76cf98cc8769bd64cf6cadd69b7edf1f23745c2680ef7894d7531a8ecb58fb
12591447
LogConfiguration:
12601448
LogDriver: awslogs
12611449
Options:
@@ -1412,6 +1600,8 @@ Resources:
14121600
Value: backend.settings.production
14131601
- Name: DEBUG
14141602
Value: ""
1603+
- Name: FULL_DOMAIN_NAME
1604+
Value: dev.mysite.com
14151605
- Name: AWS_STORAGE_BUCKET_NAME
14161606
Value:
14171607
Ref: BackendAssetsAssetsBucket62473847
@@ -1441,7 +1631,7 @@ Resources:
14411631
- - Ref: AWS::AccountId
14421632
- .dkr.ecr.us-east-1.
14431633
- Ref: AWS::URLSuffix
1444-
- /aws-cdk/assets:cecf15b2b6427c94fe8347ab93564105a951a8de4a7f7c927ada0374f2a9c97c
1634+
- /aws-cdk/assets:ff76cf98cc8769bd64cf6cadd69b7edf1f23745c2680ef7894d7531a8ecb58fb
14451635
LogConfiguration:
14461636
LogDriver: awslogs
14471637
Options:
@@ -1529,4 +1719,3 @@ Resources:
15291719
Type: AWS::CDK::Metadata
15301720
Properties:
15311721
Modules: aws-cdk=1.38.0,@aws-cdk/assets=1.38.0,@aws-cdk/aws-apigateway=1.38.0,@aws-cdk/aws-applicationautoscaling=1.38.0,@aws-cdk/aws-autoscaling=1.38.0,@aws-cdk/aws-autoscaling-common=1.38.0,@aws-cdk/aws-autoscaling-hooktargets=1.38.0,@aws-cdk/aws-batch=1.38.0,@aws-cdk/aws-certificatemanager=1.38.0,@aws-cdk/aws-cloudformation=1.38.0,@aws-cdk/aws-cloudfront=1.38.0,@aws-cdk/aws-cloudwatch=1.38.0,@aws-cdk/aws-codebuild=1.38.0,@aws-cdk/aws-codecommit=1.38.0,@aws-cdk/aws-codepipeline=1.38.0,@aws-cdk/aws-cognito=1.38.0,@aws-cdk/aws-ec2=1.38.0,@aws-cdk/aws-ecr=1.38.0,@aws-cdk/aws-ecr-assets=1.38.0,@aws-cdk/aws-ecs=1.38.0,@aws-cdk/aws-ecs-patterns=1.38.0,@aws-cdk/aws-elasticache=1.38.0,@aws-cdk/aws-elasticloadbalancing=1.38.0,@aws-cdk/aws-elasticloadbalancingv2=1.38.0,@aws-cdk/aws-events=1.38.0,@aws-cdk/aws-events-targets=1.38.0,@aws-cdk/aws-iam=1.38.0,@aws-cdk/aws-kms=1.38.0,@aws-cdk/aws-lambda=1.38.0,@aws-cdk/aws-logs=1.38.0,@aws-cdk/aws-rds=1.38.0,@aws-cdk/aws-route53=1.38.0,@aws-cdk/aws-route53-targets=1.38.0,@aws-cdk/aws-s3=1.38.0,@aws-cdk/aws-s3-assets=1.38.0,@aws-cdk/aws-s3-deployment=1.38.0,@aws-cdk/aws-sam=1.38.0,@aws-cdk/aws-secretsmanager=1.38.0,@aws-cdk/aws-servicediscovery=1.38.0,@aws-cdk/aws-sns=1.38.0,@aws-cdk/aws-sns-subscriptions=1.38.0,@aws-cdk/aws-sqs=1.38.0,@aws-cdk/aws-ssm=1.38.0,@aws-cdk/aws-stepfunctions=1.38.0,@aws-cdk/cloud-assembly-schema=1.38.0,@aws-cdk/core=1.38.0,@aws-cdk/custom-resources=1.38.0,@aws-cdk/cx-api=1.38.0,@aws-cdk/region-info=1.38.0,jsii-runtime=Python/3.6.8
1532-

0 commit comments

Comments
 (0)