@@ -76,18 +76,51 @@ def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
76
76
min_capacity = 0 , max_capacity = 2
77
77
)
78
78
79
- # self.celery_default_queue_asg.scale_on_metric(
80
- # "CeleryDefaultQueueAutoscaling",
81
- # metric=self.default_celery_queue_cloudwatch_metric,
82
- # scaling_steps=[
83
- # app_autoscaling.ScalingInterval(change=1, lower=0),
84
- # app_autoscaling.ScalingInterval(change=-1, lower=1),
85
- # ],
86
- # adjustment_type=app_autoscaling.AdjustmentType.CHANGE_IN_CAPACITY,
87
- # )
88
- # self.celery_default_cloudwatch_monitoring_task = ecs.FargateTaskDefinition(
89
- # self, "CeleryDefaultCloudWatchMonitoringTask"
90
- # )
79
+ self .celery_default_queue_asg .scale_on_metric (
80
+ "CeleryDefaultQueueAutoscaling" ,
81
+ metric = self .default_celery_queue_cloudwatch_metric ,
82
+ scaling_steps = [
83
+ aas .ScalingInterval (change = 1 , lower = 0 ),
84
+ aas .ScalingInterval (change = - 1 , lower = 1 ),
85
+ ],
86
+ adjustment_type = aas .AdjustmentType .CHANGE_IN_CAPACITY ,
87
+ )
88
+
89
+ self .celery_default_cloudwatch_monitor_task = ecs .FargateTaskDefinition (
90
+ self , "CeleryDefaultCloudWatchMonitoringTask"
91
+ )
92
+
93
+ self .celery_default_cloudwatch_monitor_task .add_container (
94
+ "CeleryDefaultCWMonitoringTaskContainer" ,
95
+ image = scope .image ,
96
+ logging = ecs .LogDrivers .aws_logs (
97
+ stream_prefix = "CeleryDefaultCWMonitoringContainerLogs" ,
98
+ log_retention = logs .RetentionDays .ONE_DAY ,
99
+ ),
100
+ environment = scope .variables .regular_variables ,
101
+ secrets = scope .variables .secret_variables ,
102
+ command = ["python3" , "manage.py" , "put_celery_cloudwatch_metrics" ],
103
+ )
104
+
105
+ self .celery_default_cw_metric_schedule = events .Rule (
106
+ self ,
107
+ "CeleryDefaultCWMetricSchedule" ,
108
+ schedule = events .Schedule .rate (core .Duration .minutes (5 )),
109
+ targets = [
110
+ events_targets .EcsTask (
111
+ cluster = scope .cluster ,
112
+ task_definition = self .celery_default_cloudwatch_monitor_task ,
113
+ subnet_selection = ec2 .SubnetSelection (
114
+ subnet_type = ec2 .SubnetType .PUBLIC
115
+ ),
116
+ security_group = ec2 .SecurityGroup .from_security_group_id (
117
+ self ,
118
+ "CeleryDefaultCWMetricScheduleSG" ,
119
+ security_group_id = scope .vpc .vpc_default_security_group ,
120
+ ),
121
+ )
122
+ ],
123
+ )
91
124
92
125
# self.celery_default_cloudwatch_monitoring_task.add_container(
93
126
# "CeleryDefaultCloudWatchMonitoringContainer",
0 commit comments