{{- if .DeploymentConfiguration.Rollback.CPUUtilization}} CPURollbackAlarm: Metadata: 'aws:copilot:description': "A CloudWatch alarm associated with CPU utilization for deployment rollbacks" Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: "Roll back ECS service if CPU utilization is greater than or equal to {{.DeploymentConfiguration.Rollback.CPUUtilization}}% twice in 3 minutes." AlarmName: {{.DeploymentConfiguration.Rollback.TruncateAlarmName .AppName .EnvName .WorkloadName "CopilotRollbackCPUAlarm"}} Namespace: 'AWS/ECS' Dimensions: - Name: ClusterName Value: Fn::ImportValue: !Sub '${AppName}-${EnvName}-ClusterId' - Name: ServiceName Value: !Select [2, !Split ["/", !Ref Service]] MetricName: 'CPUUtilization' ComparisonOperator: 'GreaterThanOrEqualToThreshold' DatapointsToAlarm: 2 EvaluationPeriods: 3 Period: 60 Statistic: 'Average' Threshold: {{.DeploymentConfiguration.Rollback.CPUUtilization}} Unit: 'Percent' {{- end}} {{- if .DeploymentConfiguration.Rollback.MemoryUtilization}} MemoryRollbackAlarm: Metadata: 'aws:copilot:description': "A CloudWatch alarm associated with memory utilization for deployment rollbacks" Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: "Roll back ECS service if memory utilization is greater than or equal to {{.DeploymentConfiguration.Rollback.MemoryUtilization}}% twice in 3 minutes." AlarmName: {{.DeploymentConfiguration.Rollback.TruncateAlarmName .AppName .EnvName .WorkloadName "CopilotRollbackMemAlarm"}} Namespace: 'AWS/ECS' Dimensions: - Name: ClusterName Value: Fn::ImportValue: !Sub '${AppName}-${EnvName}-ClusterId' - Name: ServiceName Value: !Select [2, !Split ["/", !Ref Service]] MetricName: 'MemoryUtilization' ComparisonOperator: 'GreaterThanOrEqualToThreshold' DatapointsToAlarm: 2 EvaluationPeriods: 3 Period: 60 Statistic: 'Average' Threshold: {{.DeploymentConfiguration.Rollback.MemoryUtilization}} Unit: 'Percent' {{- end}} {{- if .DeploymentConfiguration.Rollback.MessagesDelayed}} MessagesDelayedRollbackAlarm: Metadata: 'aws:copilot:description': "A CloudWatch alarm associated with number of messages delayed for deployment rollbacks" Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: "Roll back worker service if number of messages delayed is greater than or equal to {{.DeploymentConfiguration.Rollback.MessagesDelayed}} twice in 3 minutes." AlarmName: {{.DeploymentConfiguration.Rollback.TruncateAlarmName .AppName .EnvName .WorkloadName "CopilotRollbackMsgsDelayedAlarm"}} Namespace: 'AWS/SQS' Dimensions: - Name: QueueName Value: !GetAtt EventsQueue.QueueName MetricName: 'ApproximateNumberOfMessagesDelayed' ComparisonOperator: 'GreaterThanOrEqualToThreshold' DatapointsToAlarm: 2 EvaluationPeriods: 3 Period: 60 Statistic: 'Average' Threshold: {{.DeploymentConfiguration.Rollback.MessagesDelayed}} Unit: 'Count' {{- end}}