pilasguru icon

Cloudformation - ECS wellcome-docker

pilasguru | PRO | 09/21/26 07:53:24 PM UTC | 0 ⭐ | 18654 👁️ | Never ⏰ | []
YAML |

2.59 KB

|

Software

|

0 👍

/

0 👎

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