{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "CloudMap": { "Properties": { "Description": "Service Map for Docker Compose project TestSimpleConvert", "Name": "TestSimpleConvert.local", "Vpc": "vpc-123" }, "Type": "AWS::ServiceDiscovery::PrivateDnsNamespace" }, "Cluster": { "Properties": { "ClusterName": "TestSimpleConvert", "Tags": [ { "Key": "com.docker.compose.project", "Value": "TestSimpleConvert" } ] }, "Type": "AWS::ECS::Cluster" }, "Default80Ingress": { "Properties": { "CidrIp": "0.0.0.0/0", "Description": "simple:80/tcp on default nextwork", "FromPort": 80, "GroupId": { "Ref": "DefaultNetwork" }, "IpProtocol": "TCP", "ToPort": 80 }, "Type": "AWS::EC2::SecurityGroupIngress" }, "DefaultNetwork": { "Properties": { "GroupDescription": "TestSimpleConvert Security Group for default network", "Tags": [ { "Key": "com.docker.compose.project", "Value": "TestSimpleConvert" }, { "Key": "com.docker.compose.network", "Value": "default" } ], "VpcId": "vpc-123" }, "Type": "AWS::EC2::SecurityGroup" }, "DefaultNetworkIngress": { "Properties": { "Description": "Allow communication within network default", "GroupId": { "Ref": "DefaultNetwork" }, "IpProtocol": "-1", "SourceSecurityGroupId": { "Ref": "DefaultNetwork" } }, "Type": "AWS::EC2::SecurityGroupIngress" }, "LoadBalancer": { "Properties": { "Scheme": "internet-facing", "SecurityGroups": [ { "Ref": "DefaultNetwork" } ], "Subnets": [ "subnet1", "subnet2" ], "Tags": [ { "Key": "com.docker.compose.project", "Value": "TestSimpleConvert" } ], "Type": "application" }, "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer" }, "LogGroup": { "Properties": { "LogGroupName": "/docker-compose/TestSimpleConvert" }, "Type": "AWS::Logs::LogGroup" }, "SimpleService": { "DependsOn": [ "SimpleTCP80Listener" ], "Properties": { "Cluster": { "Fn::GetAtt": [ "Cluster", "Arn" ] }, "DeploymentConfiguration": { "MaximumPercent": 200, "MinimumHealthyPercent": 100 }, "DeploymentController": { "Type": "ECS" }, "DesiredCount": 1, "LaunchType": "FARGATE", "LoadBalancers": [ { "ContainerName": "simple", "ContainerPort": 80, "TargetGroupArn": { "Ref": "SimpleTCP80TargetGroup" } } ], "NetworkConfiguration": { "AwsvpcConfiguration": { "AssignPublicIp": "ENABLED", "SecurityGroups": [ { "Ref": "DefaultNetwork" } ], "Subnets": [ "subnet1", "subnet2" ] } }, "PlatformVersion": "1.4.0", "PropagateTags": "SERVICE", "SchedulingStrategy": "REPLICA", "ServiceRegistries": [ { "RegistryArn": { "Fn::GetAtt": [ "SimpleServiceDiscoveryEntry", "Arn" ] } } ], "Tags": [ { "Key": "com.docker.compose.project", "Value": "TestSimpleConvert" }, { "Key": "com.docker.compose.service", "Value": "simple" } ], "TaskDefinition": { "Ref": "SimpleTaskDefinition" } }, "Type": "AWS::ECS::Service" }, "SimpleServiceDiscoveryEntry": { "Properties": { "Description": "\"simple\" service discovery entry in Cloud Map", "DnsConfig": { "DnsRecords": [ { "TTL": 60, "Type": "A" } ], "RoutingPolicy": "MULTIVALUE" }, "HealthCheckCustomConfig": { "FailureThreshold": 1 }, "Name": "simple", "NamespaceId": { "Ref": "CloudMap" } }, "Type": "AWS::ServiceDiscovery::Service" }, "SimpleTCP80Listener": { "Properties": { "DefaultActions": [ { "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": { "Ref": "SimpleTCP80TargetGroup" } } ] }, "Type": "forward" } ], "LoadBalancerArn": { "Ref": "LoadBalancer" }, "Port": 80, "Protocol": "HTTP" }, "Type": "AWS::ElasticLoadBalancingV2::Listener" }, "SimpleTCP80TargetGroup": { "Properties": { "Port": 80, "Protocol": "HTTP", "Tags": [ { "Key": "com.docker.compose.project", "Value": "TestSimpleConvert" } ], "TargetType": "ip", "VpcId": "vpc-123" }, "Type": "AWS::ElasticLoadBalancingV2::TargetGroup" }, "SimpleTaskDefinition": { "Properties": { "ContainerDefinitions": [ { "Command": [ ".compute.internal", "TestSimpleConvert.local" ], "Essential": "false", "Image": "docker/ecs-searchdomain-sidecar", "LogConfiguration": { "LogDriver": "awslogs", "Options": { "awslogs-group": { "Ref": "LogGroup" }, "awslogs-region": { "Ref": "AWS::Region" }, "awslogs-stream-prefix": "TestSimpleConvert" } }, "Name": "Simple_ResolvConf_InitContainer" }, { "DependsOn": [ { "Condition": "SUCCESS", "ContainerName": "Simple_ResolvConf_InitContainer" } ], "Essential": true, "Image": "nginx", "LinuxParameters": {}, "LogConfiguration": { "LogDriver": "awslogs", "Options": { "awslogs-group": { "Ref": "LogGroup" }, "awslogs-region": { "Ref": "AWS::Region" }, "awslogs-stream-prefix": "TestSimpleConvert" } }, "Name": "simple", "PortMappings": [ { "ContainerPort": 80, "HostPort": 80, "Protocol": "tcp" } ] } ], "Cpu": "256", "ExecutionRoleArn": { "Ref": "SimpleTaskExecutionRole" }, "Family": "TestSimpleConvert-simple", "Memory": "512", "NetworkMode": "awsvpc", "RequiresCompatibilities": [ "FARGATE" ] }, "Type": "AWS::ECS::TaskDefinition" }, "SimpleTaskExecutionRole": { "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Action": [ "sts:AssumeRole" ], "Condition": {}, "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" } } ], "Version": "2012-10-17" }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy", "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly" ], "Tags": [ { "Key": "com.docker.compose.project", "Value": "TestSimpleConvert" }, { "Key": "com.docker.compose.service", "Value": "simple" } ] }, "Type": "AWS::IAM::Role" } } }