AWSTemplateFormatVersion: "2010-09-09" Description: > Aplicacion Docker welcome-to-docker ejecutandose en ECS Fargate. Parameters: VpcId: Type: AWS::EC2::VPC::Id Description: VPC donde se ejecutara la aplicacion PublicSubnetId: Type: AWS::EC2::Subnet::Id Description: Subred publica con salida a Internet Resources: ECSCluster: Type: AWS::ECS::Cluster Properties: ClusterName: welcome-cluster TaskExecutionRole: Type: AWS::IAM::Role Properties: RoleName: !Sub "${AWS::StackName}-execution-role" AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: - ecs-tasks.amazonaws.com Action: - sts:AssumeRole ManagedPolicyArns: - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy WebSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Permite acceder a la aplicacion web VpcId: !Ref VpcId SecurityGroupIngress: - Description: HTTP publico para la demo IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 SecurityGroupEgress: - IpProtocol: -1 CidrIp: 0.0.0.0/0 WelcomeTaskDefinition: Type: AWS::ECS::TaskDefinition Properties: Family: welcome-task RequiresCompatibilities: - FARGATE NetworkMode: awsvpc Cpu: "256" Memory: "512" ExecutionRoleArn: !GetAtt TaskExecutionRole.Arn ContainerDefinitions: - Name: welcome Image: docker/welcome-to-docker:latest Essential: true PortMappings: - ContainerPort: 80 HostPort: 80 Protocol: tcp WelcomeService: Type: AWS::ECS::Service Properties: ServiceName: welcome-service Cluster: !Ref ECSCluster LaunchType: FARGATE DesiredCount: 1 TaskDefinition: !Ref WelcomeTaskDefinition NetworkConfiguration: AwsvpcConfiguration: AssignPublicIp: ENABLED Subnets: - !Ref PublicSubnetId SecurityGroups: - !Ref WebSecurityGroup Outputs: ClusterName: Description: Nombre del cluster ECS Value: !Ref ECSCluster ServiceName: Description: Nombre del servicio ECS Value: !GetAtt WelcomeService.Name SecurityGroupId: Description: Security Group utilizado Value: !Ref WebSecurityGroup