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
Comments