// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshot test: fargate with ALB, all alarms 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, "ServiceServiceURL250C0FB6": Object { "Value": Object { "Fn::Join": Array [ "", Array [ "http://", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, ], ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ApplicationELB\\",\\"ActiveConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"NewConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Minimum number of processed bytes is too low.", "AlarmName": "Test-DummyFargateService-Processed-Bytes-Min-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Processed Bytes (min)", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, }, ], "MetricName": "ProcessedBytes", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 1024, "TreatMissingData": "notBreaching", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "application", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "HTTP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 80, "Protocol": "HTTP", "TargetGroupAttributes": Array [ Object { "Key": "stickiness.enabled", "Value": "false", }, ], "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceLBSecurityGroupF7435A5C": Object { "Properties": Object { "GroupDescription": "Automatically created Security Group for ELB ServiceLB00F3680F", "SecurityGroupIngress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow from anyone on port 80", "FromPort": 80, "IpProtocol": "tcp", "ToPort": 80, }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceLBSecurityGrouptoServiceSecurityGroup2657DDCE8080F76E9B4C": Object { "Properties": Object { "Description": "Load balancer to target", "DestinationSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "IpProtocol": "tcp", "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupEgress", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceSecurityGroupfromServiceLBSecurityGroup2201BD838080ED59CEF4": Object { "Properties": Object { "Description": "Load balancer to target", "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "IpProtocol": "tcp", "SourceSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupIngress", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with ALB, all alarms 2`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, "ServiceServiceURL250C0FB6": Object { "Value": Object { "Fn::Join": Array [ "", Array [ "http://", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, ], ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ApplicationELB\\",\\"ActiveConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"NewConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Minimum number of processed bytes is too low.", "AlarmName": "Test-DummyFargateService-Processed-Bytes-Min-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Processed Bytes (min)", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, }, ], "MetricName": "ProcessedBytes", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 1024, "TreatMissingData": "notBreaching", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "application", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "HTTP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 80, "Protocol": "HTTP", "TargetGroupAttributes": Array [ Object { "Key": "stickiness.enabled", "Value": "false", }, ], "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceLBSecurityGroupF7435A5C": Object { "Properties": Object { "GroupDescription": "Automatically created Security Group for ELB ServiceLB00F3680F", "SecurityGroupIngress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow from anyone on port 80", "FromPort": 80, "IpProtocol": "tcp", "ToPort": 80, }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceLBSecurityGrouptoServiceSecurityGroup2657DDCE8080F76E9B4C": Object { "Properties": Object { "Description": "Load balancer to target", "DestinationSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "IpProtocol": "tcp", "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupEgress", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceSecurityGroupfromServiceLBSecurityGroup2201BD838080ED59CEF4": Object { "Properties": Object { "Description": "Load balancer to target", "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "IpProtocol": "tcp", "SourceSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupIngress", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with ALB, all alarms 3`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, "ServiceServiceURL250C0FB6": Object { "Value": Object { "Fn::Join": Array [ "", Array [ "http://", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, ], ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ApplicationELB\\",\\"ActiveConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"NewConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Minimum number of processed bytes is too low.", "AlarmName": "Test-DummyFargateService-Processed-Bytes-Min-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Processed Bytes (min)", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, }, ], "MetricName": "ProcessedBytes", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 1024, "TreatMissingData": "notBreaching", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/ApplicationELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "application", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "HTTP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 80, "Protocol": "HTTP", "TargetGroupAttributes": Array [ Object { "Key": "stickiness.enabled", "Value": "false", }, ], "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceLBSecurityGroupF7435A5C": Object { "Properties": Object { "GroupDescription": "Automatically created Security Group for ELB ServiceLB00F3680F", "SecurityGroupIngress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow from anyone on port 80", "FromPort": 80, "IpProtocol": "tcp", "ToPort": 80, }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceLBSecurityGrouptoServiceSecurityGroup2657DDCE8080F76E9B4C": Object { "Properties": Object { "Description": "Load balancer to target", "DestinationSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "IpProtocol": "tcp", "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupEgress", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceSecurityGroupfromServiceLBSecurityGroup2201BD838080ED59CEF4": Object { "Properties": Object { "Description": "Load balancer to target", "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "IpProtocol": "tcp", "SourceSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupIngress", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with ALB, no alarms 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, "ServiceServiceURL250C0FB6": Object { "Value": Object { "Fn::Join": Array [ "", Array [ "http://", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, ], ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ApplicationELB\\",\\"ActiveConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"NewConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "application", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "HTTP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 80, "Protocol": "HTTP", "TargetGroupAttributes": Array [ Object { "Key": "stickiness.enabled", "Value": "false", }, ], "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceLBSecurityGroupF7435A5C": Object { "Properties": Object { "GroupDescription": "Automatically created Security Group for ELB ServiceLB00F3680F", "SecurityGroupIngress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow from anyone on port 80", "FromPort": 80, "IpProtocol": "tcp", "ToPort": 80, }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceLBSecurityGrouptoServiceSecurityGroup2657DDCE8080F76E9B4C": Object { "Properties": Object { "Description": "Load balancer to target", "DestinationSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "IpProtocol": "tcp", "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupEgress", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceSecurityGroupfromServiceLBSecurityGroup2201BD838080ED59CEF4": Object { "Properties": Object { "Description": "Load balancer to target", "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "IpProtocol": "tcp", "SourceSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupIngress", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with ALB, no alarms 2`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, "ServiceServiceURL250C0FB6": Object { "Value": Object { "Fn::Join": Array [ "", Array [ "http://", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, ], ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ApplicationELB\\",\\"ActiveConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"NewConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "application", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "HTTP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 80, "Protocol": "HTTP", "TargetGroupAttributes": Array [ Object { "Key": "stickiness.enabled", "Value": "false", }, ], "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceLBSecurityGroupF7435A5C": Object { "Properties": Object { "GroupDescription": "Automatically created Security Group for ELB ServiceLB00F3680F", "SecurityGroupIngress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow from anyone on port 80", "FromPort": 80, "IpProtocol": "tcp", "ToPort": 80, }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceLBSecurityGrouptoServiceSecurityGroup2657DDCE8080F76E9B4C": Object { "Properties": Object { "Description": "Load balancer to target", "DestinationSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "IpProtocol": "tcp", "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupEgress", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceSecurityGroupfromServiceLBSecurityGroup2201BD838080ED59CEF4": Object { "Properties": Object { "Description": "Load balancer to target", "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "IpProtocol": "tcp", "SourceSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupIngress", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with ALB, no alarms 3`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, "ServiceServiceURL250C0FB6": Object { "Value": Object { "Fn::Join": Array [ "", Array [ "http://", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, ], ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ApplicationELB\\",\\"ActiveConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"NewConnectionCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/ApplicationELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "application", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "HTTP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 80, "Protocol": "HTTP", "TargetGroupAttributes": Array [ Object { "Key": "stickiness.enabled", "Value": "false", }, ], "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceLBSecurityGroupF7435A5C": Object { "Properties": Object { "GroupDescription": "Automatically created Security Group for ELB ServiceLB00F3680F", "SecurityGroupIngress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow from anyone on port 80", "FromPort": 80, "IpProtocol": "tcp", "ToPort": 80, }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceLBSecurityGrouptoServiceSecurityGroup2657DDCE8080F76E9B4C": Object { "Properties": Object { "Description": "Load balancer to target", "DestinationSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "IpProtocol": "tcp", "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupEgress", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceSecurityGroupfromServiceLBSecurityGroup2201BD838080ED59CEF4": Object { "Properties": Object { "Description": "Load balancer to target", "FromPort": 8080, "GroupId": Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, "IpProtocol": "tcp", "SourceSecurityGroupId": Object { "Fn::GetAtt": Array [ "ServiceLBSecurityGroupF7435A5C", "GroupId", ], }, "ToPort": 8080, }, "Type": "AWS::EC2::SecurityGroupIngress", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/ApplicationELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/ApplicationELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with NLB, all alarms with invertLoadBalancerTaskCountMetricsStatistics=false 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Minimum number of processed bytes is too low.", "AlarmName": "Test-DummyFargateService-Processed-Bytes-Min-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Processed Bytes (min)", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, }, ], "MetricName": "ProcessedBytes", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 1024, "TreatMissingData": "notBreaching", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 8080, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with NLB, all alarms with invertLoadBalancerTaskCountMetricsStatistics=true 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Minimum number of processed bytes is too low.", "AlarmName": "Test-DummyFargateService-Processed-Bytes-Min-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Processed Bytes (min)", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, }, ], "MetricName": "ProcessedBytes", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 1024, "TreatMissingData": "notBreaching", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 8080, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with NLB, all alarms with invertLoadBalancerTaskCountMetricsStatistics=undefined 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceProcessedBytesMinWarningD48DD08A": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Minimum number of processed bytes is too low.", "AlarmName": "Test-DummyFargateService-Processed-Bytes-Min-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Processed Bytes (min)", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, }, ], "MetricName": "ProcessedBytes", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 1024, "TreatMissingData": "notBreaching", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 8080, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with NLB, no alarms with invertLoadBalancerTaskCountMetricsStatistics=false 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 8080, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with NLB, no alarms with invertLoadBalancerTaskCountMetricsStatistics=true 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 8080, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate with NLB, no alarms with invertLoadBalancerTaskCountMetricsStatistics=undefined 1`] = ` Object { "Outputs": Object { "ServiceLoadBalancerDNSEC5B149E": Object { "Value": Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "DNSName", ], }, }, }, "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBE9A1ADBC", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "Service9571FDD8": Object { "DependsOn": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "ServiceLBPublicListener46709EAA", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "web", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupEEA09B68", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "ServiceTaskDef1922A00F", }, }, "Type": "AWS::ECS::Service", }, "ServiceLBE9A1ADBC": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "ServiceLBPublicListener46709EAA": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "ServiceLBPublicListenerECSGroup0CC8688C", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "ServiceLBE9A1ADBC", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "ServiceLBPublicListenerECSGroup0CC8688C": Object { "Properties": Object { "Port": 8080, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "ServiceSecurityGroupEEA09B68": Object { "Properties": Object { "GroupDescription": "Default/Service/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "ServiceTaskDef1922A00F": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "LogConfiguration": Object { "LogDriver": "awslogs", "Options": Object { "awslogs-group": Object { "Ref": "ServiceTaskDefwebLogGroup2A898F61", }, "awslogs-region": Object { "Ref": "AWS::Region", }, "awslogs-stream-prefix": "Service", }, }, "Name": "web", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefExecutionRole919F7BE3", "Arn", ], }, "Family": "ServiceTaskDef79D79521", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "ServiceTaskDefTaskRole0CFE2F57", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "ServiceTaskDefExecutionRole919F7BE3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefExecutionRoleDefaultPolicy3073559D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ServiceTaskDefwebLogGroup2A898F61", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ServiceTaskDefExecutionRoleDefaultPolicy3073559D", "Roles": Array [ Object { "Ref": "ServiceTaskDefExecutionRole919F7BE3", }, ], }, "Type": "AWS::IAM::Policy", }, "ServiceTaskDefTaskRole0CFE2F57": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "ServiceTaskDefwebLogGroup2A898F61": Object { "DeletionPolicy": "Retain", "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "Service9571FDD8", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "ServiceLBPublicListener46709EAA", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceLBPublicListenerECSGroup0CC8688C", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, NLB, all alarms with invertLoadBalancerTaskCountMetricsStatistics=false 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "NLB55158F82": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "NLBListener96C8170F": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "NLB55158F82", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "NLBListenerTargetGroupA6463B24": Object { "Properties": Object { "Port": 80, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ServiceD69D759B": Object { "DependsOn": Array [ "NLBListener96C8170F", "NLBListenerTargetGroupA6463B24", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "Container", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDef54694570", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDef54694570": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "Container", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefExecutionRoleB4775C97", "Arn", ], }, "Family": "TaskDef", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefTaskRole1EDB4A67", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefExecutionRoleB4775C97": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefExecutionRoleDefaultPolicy0DBB737A": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefExecutionRoleDefaultPolicy0DBB737A", "Roles": Array [ Object { "Ref": "TaskDefExecutionRoleB4775C97", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefTaskRole1EDB4A67": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, NLB, all alarms with invertLoadBalancerTaskCountMetricsStatistics=true 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "NLB55158F82": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "NLBListener96C8170F": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "NLB55158F82", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "NLBListenerTargetGroupA6463B24": Object { "Properties": Object { "Port": 80, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ServiceD69D759B": Object { "DependsOn": Array [ "NLBListener96C8170F", "NLBListenerTargetGroupA6463B24", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "Container", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDef54694570", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDef54694570": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "Container", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefExecutionRoleB4775C97", "Arn", ], }, "Family": "TaskDef", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefTaskRole1EDB4A67", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefExecutionRoleB4775C97": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefExecutionRoleDefaultPolicy0DBB737A": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefExecutionRoleDefaultPolicy0DBB737A", "Roles": Array [ Object { "Ref": "TaskDefExecutionRoleB4775C97", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefTaskRole1EDB4A67": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, NLB, all alarms with invertLoadBalancerTaskCountMetricsStatistics=undefined 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":4,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "NLB55158F82": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "NLBListener96C8170F": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "NLB55158F82", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "NLBListenerTargetGroupA6463B24": Object { "Properties": Object { "Port": 80, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTaskPercentWarningAC596FDA": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Percentage of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Task-Percent-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Expression": "(healthyTaskCount / (healthyTaskCount + unhealthyTaskCount)) * 100", "Id": "expr_1", "Label": "Healthy Task Percent", }, Object { "Id": "healthyTaskCount", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": false, }, Object { "Id": "unhealthyTaskCount", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": false, }, ], "Threshold": 75, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceHealthyTasksWarningFC7624FC": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of healthy tasks is too low.", "AlarmName": "Test-DummyFargateService-Healthy-Tasks-Warning", "ComparisonOperator": "LessThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Healthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "HealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Minimum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceUnhealthyTasksWarningE896F88E": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of unhealthy tasks is too high.", "AlarmName": "Test-DummyFargateService-Unhealthy-Tasks-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Unhealthy Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "LoadBalancer", "Value": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, ], ], }, }, Object { "Name": "TargetGroup", "Value": Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, }, ], "MetricName": "UnHealthyHostCount", "Namespace": "AWS/NetworkELB", }, "Period": 300, "Stat": "Maximum", }, "ReturnData": true, }, ], "Threshold": 3, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ServiceD69D759B": Object { "DependsOn": Array [ "NLBListener96C8170F", "NLBListenerTargetGroupA6463B24", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "Container", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDef54694570", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Healthy Tasks < 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Unhealthy Tasks > 3 for 3 datapoints within 15 minutes\\",\\"value\\":3,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDef54694570": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "Container", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefExecutionRoleB4775C97", "Arn", ], }, "Family": "TaskDef", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefTaskRole1EDB4A67", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefExecutionRoleB4775C97": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefExecutionRoleDefaultPolicy0DBB737A": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefExecutionRoleDefaultPolicy0DBB737A", "Roles": Array [ Object { "Ref": "TaskDefExecutionRoleB4775C97", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefTaskRole1EDB4A67": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, NLB, no alarms with invertLoadBalancerTaskCountMetricsStatistics=false 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "NLB55158F82": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "NLBListener96C8170F": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "NLB55158F82", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "NLBListenerTargetGroupA6463B24": Object { "Properties": Object { "Port": 80, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ServiceD69D759B": Object { "DependsOn": Array [ "NLBListener96C8170F", "NLBListenerTargetGroupA6463B24", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "Container", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDef54694570", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDef54694570": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "Container", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefExecutionRoleB4775C97", "Arn", ], }, "Family": "TaskDef", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefTaskRole1EDB4A67", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefExecutionRoleB4775C97": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefExecutionRoleDefaultPolicy0DBB737A": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefExecutionRoleDefaultPolicy0DBB737A", "Roles": Array [ Object { "Ref": "TaskDefExecutionRoleB4775C97", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefTaskRole1EDB4A67": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, NLB, no alarms with invertLoadBalancerTaskCountMetricsStatistics=true 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "NLB55158F82": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "NLBListener96C8170F": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "NLB55158F82", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "NLBListenerTargetGroupA6463B24": Object { "Properties": Object { "Port": 80, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ServiceD69D759B": Object { "DependsOn": Array [ "NLBListener96C8170F", "NLBListenerTargetGroupA6463B24", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "Container", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDef54694570", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDef54694570": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "Container", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefExecutionRoleB4775C97", "Arn", ], }, "Family": "TaskDef", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefTaskRole1EDB4A67", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefExecutionRoleB4775C97": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefExecutionRoleDefaultPolicy0DBB737A": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefExecutionRoleDefaultPolicy0DBB737A", "Roles": Array [ Object { "Ref": "TaskDefExecutionRoleB4775C97", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefTaskRole1EDB4A67": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, NLB, no alarms with invertLoadBalancerTaskCountMetricsStatistics=undefined 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "NLB55158F82": Object { "Properties": Object { "LoadBalancerAttributes": Array [ Object { "Key": "deletion_protection.enabled", "Value": "false", }, ], "Scheme": "internal", "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], "Type": "network", }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", }, "NLBListener96C8170F": Object { "Properties": Object { "DefaultActions": Array [ Object { "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, "Type": "forward", }, ], "LoadBalancerArn": Object { "Ref": "NLB55158F82", }, "Port": 80, "Protocol": "TCP", }, "Type": "AWS::ElasticLoadBalancingV2::Listener", }, "NLBListenerTargetGroupA6463B24": Object { "Properties": Object { "Port": 80, "Protocol": "TCP", "TargetType": "ip", "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"TCP Flows\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/NetworkELB\\",\\"ActiveFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Active\\"}],[\\"AWS/NetworkELB\\",\\"NewFlowCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"New\\",\\"stat\\":\\"Sum\\"}],[\\"AWS/NetworkELB\\",\\"ProcessedBytes\\",\\"LoadBalancer\\",\\"", Object { "Fn::GetAtt": Array [ "NLB55158F82", "LoadBalancerFullName", ], }, "\\",{\\"label\\":\\"Processed Bytes (min)\\",\\"stat\\":\\"Minimum\\",\\"yAxis\\":\\"right\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false},\\"right\\":{\\"min\\":0,\\"label\\":\\"bytes\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ServiceD69D759B": Object { "DependsOn": Array [ "NLBListener96C8170F", "NLBListenerTargetGroupA6463B24", ], "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "HealthCheckGracePeriodSeconds": 60, "LaunchType": "FARGATE", "LoadBalancers": Array [ Object { "ContainerName": "Container", "ContainerPort": 8080, "TargetGroupArn": Object { "Ref": "NLBListenerTargetGroupA6463B24", }, }, ], "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDef54694570", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Health\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}],[\\"AWS/NetworkELB\\",\\"HealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#2ca02c\\",\\"label\\":\\"Healthy Tasks\\",\\"stat\\":\\"Minimum\\"}],[\\"AWS/NetworkELB\\",\\"UnHealthyHostCount\\",\\"LoadBalancer\\",\\"", Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 2, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "/", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ "/", Object { "Ref": "NLBListener96C8170F", }, ], }, ], }, "\\",\\"TargetGroup\\",\\"", Object { "Fn::GetAtt": Array [ "NLBListenerTargetGroupA6463B24", "TargetGroupFullName", ], }, "\\",{\\"color\\":\\"#d62728\\",\\"label\\":\\"Unhealthy Tasks\\",\\"stat\\":\\"Maximum\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDef54694570": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "Container", "PortMappings": Array [ Object { "ContainerPort": 8080, "Protocol": "tcp", }, ], }, ], "Cpu": "256", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefExecutionRoleB4775C97", "Arn", ], }, "Family": "TaskDef", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefTaskRole1EDB4A67", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefExecutionRoleB4775C97": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefExecutionRoleDefaultPolicy0DBB737A": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefExecutionRoleDefaultPolicy0DBB737A", "Roles": Array [ Object { "Ref": "TaskDefExecutionRoleB4775C97", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefTaskRole1EDB4A67": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, all alarms 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ServiceD69D759B": Object { "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "LaunchType": "FARGATE", "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDefinnition3C53779D", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDefinnition3C53779D": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "DummyContainer", }, ], "Cpu": "512", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionExecutionRole13D3E6BE", "Arn", ], }, "Family": "TaskDefinnition", "Memory": "1024", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionTaskRole60F99C59", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefinnitionExecutionRole13D3E6BE": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA", "Roles": Array [ Object { "Ref": "TaskDefinnitionExecutionRole13D3E6BE", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefinnitionTaskRole60F99C59": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, all alarms 2`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ServiceD69D759B": Object { "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "LaunchType": "FARGATE", "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDefinnition3C53779D", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDefinnition3C53779D": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "DummyContainer", }, ], "Cpu": "512", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionExecutionRole13D3E6BE", "Arn", ], }, "Family": "TaskDefinnition", "Memory": "1024", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionTaskRole60F99C59", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefinnitionExecutionRole13D3E6BE": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA", "Roles": Array [ Object { "Ref": "TaskDefinnitionExecutionRole13D3E6BE", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefinnitionTaskRole60F99C59": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, all alarms 3`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceCPUUsageWarning2A347919", "Arn", ], }, "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"annotations\\":{\\"alarms\\":[\\"", Object { "Fn::GetAtt": Array [ "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34", "Arn", ], }, "\\"]},\\"yAxis\\":{}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ScopeTestDummyFargateServiceCPUUsageWarning2A347919": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The CPU usage is too high.", "AlarmName": "Test-DummyFargateService-CPU-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster CPU Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "CPUUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceMemoryUsageWarningD6B91C34": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "The memory usage is too high.", "AlarmName": "Test-DummyFargateService-Memory-Usage-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Cluster Memory Utilization", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "MemoryUtilization", "Namespace": "AWS/ECS", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 80, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ScopeTestDummyFargateServiceRunningTasksHighWarning41BB7FB8": Object { "Properties": Object { "ActionsEnabled": true, "AlarmDescription": "Number of running tasks are too high.", "AlarmName": "Test-DummyFargateService-Running-Tasks-High-Warning", "ComparisonOperator": "GreaterThanThreshold", "DatapointsToAlarm": 3, "EvaluationPeriods": 3, "Metrics": Array [ Object { "Id": "m1", "Label": "Running Tasks", "MetricStat": Object { "Metric": Object { "Dimensions": Array [ Object { "Name": "ClusterName", "Value": Object { "Ref": "ClusterEB0386A7", }, }, Object { "Name": "ServiceName", "Value": Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, }, ], "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", }, "Period": 300, "Stat": "Average", }, "ReturnData": true, }, ], "Threshold": 5, "TreatMissingData": "missing", }, "Type": "AWS::CloudWatch::Alarm", }, "ServiceD69D759B": Object { "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "LaunchType": "FARGATE", "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDefinnition3C53779D", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster CPU Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Cluster Memory Utilization > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Running Tasks > 5 for 3 datapoints within 15 minutes\\",\\"value\\":5,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDefinnition3C53779D": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "DummyContainer", }, ], "Cpu": "512", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionExecutionRole13D3E6BE", "Arn", ], }, "Family": "TaskDefinnition", "Memory": "1024", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionTaskRole60F99C59", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefinnitionExecutionRole13D3E6BE": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA", "Roles": Array [ Object { "Ref": "TaskDefinnitionExecutionRole13D3E6BE", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefinnitionTaskRole60F99C59": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, no alarms 1`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ServiceD69D759B": Object { "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "LaunchType": "FARGATE", "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDefinnition3C53779D", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDefinnition3C53779D": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "DummyContainer", }, ], "Cpu": "512", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionExecutionRole13D3E6BE", "Arn", ], }, "Family": "TaskDefinnition", "Memory": "1024", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionTaskRole60F99C59", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefinnitionExecutionRole13D3E6BE": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA", "Roles": Array [ Object { "Ref": "TaskDefinnitionExecutionRole13D3E6BE", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefinnitionTaskRole60F99C59": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, no alarms 2`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ServiceD69D759B": Object { "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "LaunchType": "FARGATE", "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDefinnition3C53779D", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDefinnition3C53779D": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "DummyContainer", }, ], "Cpu": "512", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionExecutionRole13D3E6BE", "Arn", ], }, "Family": "TaskDefinnition", "Memory": "1024", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionTaskRole60F99C59", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefinnitionExecutionRole13D3E6BE": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA", "Roles": Array [ Object { "Ref": "TaskDefinnitionExecutionRole13D3E6BE", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefinnitionTaskRole60F99C59": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `; exports[`snapshot test: fargate, no alarms 3`] = ` Object { "Parameters": Object { "BootstrapVersion": Object { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, "Resources": Object { "Alarm7103F465": Object { "Properties": Object { "DashboardBody": "{\\"widgets\\":[]}", }, "Type": "AWS::CloudWatch::Dashboard", }, "ClusterEB0386A7": Object { "Type": "AWS::ECS::Cluster", }, "ClusterVpcFAA3CEDF": Object { "Properties": Object { "CidrBlock": "10.0.0.0/16", "EnableDnsHostnames": true, "EnableDnsSupport": true, "InstanceTenancy": "default", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::VPC", }, "ClusterVpcIGW1E358A6E": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc", }, ], }, "Type": "AWS::EC2::InternetGateway", }, "ClusterVpcPrivateSubnet1DefaultRoute3B4D40DD": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet1NATGateway0693C346", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet1RouteTableAssociation9B8A88D9": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet1RouteTable5AAEDA3F", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet1SubnetA4EB481A": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.128.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPrivateSubnet2DefaultRoute011666AF": Object { "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "NatGatewayId": Object { "Ref": "ClusterVpcPublicSubnet2NATGateway00B24686", }, "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPrivateSubnet2RouteTable73064A66": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPrivateSubnet2RouteTableAssociationFB21349E": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPrivateSubnet2RouteTable73064A66", }, "SubnetId": Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPrivateSubnet2SubnetBD1ECB6E": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.192.0/18", "MapPublicIpOnLaunch": false, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Private", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Private", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PrivateSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet1EIP433C56EE": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet1NATGateway0693C346": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet1DefaultRoute62DA4B4B", "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet1EIP433C56EE", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet1RouteTable5594A636": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet1RouteTableAssociation0FBEF1F4": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet1RouteTable5594A636", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet1SubnetA9F7E0A5", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet1SubnetA9F7E0A5": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 0, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.0.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcPublicSubnet2DefaultRoute97446C8A": Object { "DependsOn": Array [ "ClusterVpcVPCGW47AC17E9", ], "Properties": Object { "DestinationCidrBlock": "0.0.0.0/0", "GatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, }, "Type": "AWS::EC2::Route", }, "ClusterVpcPublicSubnet2EIP203DF3E5": Object { "Properties": Object { "Domain": "vpc", "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::EIP", }, "ClusterVpcPublicSubnet2NATGateway00B24686": Object { "DependsOn": Array [ "ClusterVpcPublicSubnet2DefaultRoute97446C8A", "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D", ], "Properties": Object { "AllocationId": Object { "Fn::GetAtt": Array [ "ClusterVpcPublicSubnet2EIP203DF3E5", "AllocationId", ], }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], }, "Type": "AWS::EC2::NatGateway", }, "ClusterVpcPublicSubnet2RouteTable7B43F18C": Object { "Properties": Object { "Tags": Array [ Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::RouteTable", }, "ClusterVpcPublicSubnet2RouteTableAssociation8446B27D": Object { "Properties": Object { "RouteTableId": Object { "Ref": "ClusterVpcPublicSubnet2RouteTable7B43F18C", }, "SubnetId": Object { "Ref": "ClusterVpcPublicSubnet2Subnet059113C4", }, }, "Type": "AWS::EC2::SubnetRouteTableAssociation", }, "ClusterVpcPublicSubnet2Subnet059113C4": Object { "Properties": Object { "AvailabilityZone": Object { "Fn::Select": Array [ 1, Object { "Fn::GetAZs": "", }, ], }, "CidrBlock": "10.0.64.0/18", "MapPublicIpOnLaunch": true, "Tags": Array [ Object { "Key": "aws-cdk:subnet-name", "Value": "Public", }, Object { "Key": "aws-cdk:subnet-type", "Value": "Public", }, Object { "Key": "Name", "Value": "Default/Cluster/Vpc/PublicSubnet2", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::Subnet", }, "ClusterVpcVPCGW47AC17E9": Object { "Properties": Object { "InternetGatewayId": Object { "Ref": "ClusterVpcIGW1E358A6E", }, "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::VPCGatewayAttachment", }, "Repository22E53BBD": Object { "DeletionPolicy": "Retain", "Type": "AWS::ECR::Repository", "UpdateReplacePolicy": "Retain", }, "Resource": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":5,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "ServiceD69D759B": Object { "Properties": Object { "Cluster": Object { "Ref": "ClusterEB0386A7", }, "DeploymentConfiguration": Object { "MaximumPercent": 200, "MinimumHealthyPercent": 50, }, "EnableECSManagedTags": false, "LaunchType": "FARGATE", "NetworkConfiguration": Object { "AwsvpcConfiguration": Object { "AssignPublicIp": "DISABLED", "SecurityGroups": Array [ Object { "Fn::GetAtt": Array [ "ServiceSecurityGroupC96ED6A7", "GroupId", ], }, ], "Subnets": Array [ Object { "Ref": "ClusterVpcPrivateSubnet1SubnetA4EB481A", }, Object { "Ref": "ClusterVpcPrivateSubnet2SubnetBD1ECB6E", }, ], }, }, "TaskDefinition": Object { "Ref": "TaskDefinnition3C53779D", }, }, "Type": "AWS::ECS::Service", }, "ServiceSecurityGroupC96ED6A7": Object { "Properties": Object { "GroupDescription": "Default/Service/SecurityGroup", "SecurityGroupEgress": Array [ Object { "CidrIp": "0.0.0.0/0", "Description": "Allow all outbound traffic by default", "IpProtocol": "-1", }, ], "VpcId": Object { "Ref": "ClusterVpcFAA3CEDF", }, }, "Type": "AWS::EC2::SecurityGroup", }, "Summary68521F81": Object { "Properties": Object { "DashboardBody": Object { "Fn::Join": Array [ "", Array [ "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Fargate Service **Service**\\"}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"CPUUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster CPU Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":8,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Memory Utilization\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"AWS/ECS\\",\\"MemoryUtilization\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Cluster Memory Utilization\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Task Count\\",\\"region\\":\\"", Object { "Ref": "AWS::Region", }, "\\",\\"metrics\\":[[\\"ECS/ContainerInsights\\",\\"RunningTaskCount\\",\\"ClusterName\\",\\"", Object { "Ref": "ClusterEB0386A7", }, "\\",\\"ServiceName\\",\\"", Object { "Fn::GetAtt": Array [ "ServiceD69D759B", "Name", ], }, "\\",{\\"label\\":\\"Running Tasks\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}", ], ], }, }, "Type": "AWS::CloudWatch::Dashboard", }, "TaskDefinnition3C53779D": Object { "Properties": Object { "ContainerDefinitions": Array [ Object { "Essential": true, "Image": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 4, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".dkr.ecr.", Object { "Fn::Select": Array [ 3, Object { "Fn::Split": Array [ ":", Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, ], }, ], }, ".", Object { "Ref": "AWS::URLSuffix", }, "/", Object { "Ref": "Repository22E53BBD", }, ":DummyImage", ], ], }, "Name": "DummyContainer", }, ], "Cpu": "512", "ExecutionRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionExecutionRole13D3E6BE", "Arn", ], }, "Family": "TaskDefinnition", "Memory": "1024", "NetworkMode": "awsvpc", "RequiresCompatibilities": Array [ "FARGATE", ], "TaskRoleArn": Object { "Fn::GetAtt": Array [ "TaskDefinnitionTaskRole60F99C59", "Arn", ], }, }, "Type": "AWS::ECS::TaskDefinition", }, "TaskDefinnitionExecutionRole13D3E6BE": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "Repository22E53BBD", "Arn", ], }, }, Object { "Action": "ecr:GetAuthorizationToken", "Effect": "Allow", "Resource": "*", }, ], "Version": "2012-10-17", }, "PolicyName": "TaskDefinnitionExecutionRoleDefaultPolicyA45BFDAA", "Roles": Array [ Object { "Ref": "TaskDefinnitionExecutionRole13D3E6BE", }, ], }, "Type": "AWS::IAM::Policy", }, "TaskDefinnitionTaskRole60F99C59": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "ecs-tasks.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, }, "Rules": Object { "CheckBootstrapVersion": Object { "Assertions": Array [ Object { "Assert": Object { "Fn::Not": Array [ Object { "Fn::Contains": Array [ Array [ "1", "2", "3", "4", "5", ], Object { "Ref": "BootstrapVersion", }, ], }, ], }, "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", }, ], }, }, } `;