Search code examples
amazon-web-servicesamazon-ec2aws-cloudformationamazon-ecs

Why does ECS CloudFormation template create an EC2 Spot Fleet


I created a cluster in ECS with basic settings, nothing specific about the configuration except that I am using 1 On Demand t2.micro EC2 instance for the cluster.

I wanted to see what exactly was created and took a look at the CloudFormation template the cluster created.

I noticed in the template it has a configuration for EcsSpotFleet

EcsSpotFleet:
    Condition: CreateWithSpot
    Type: AWS::EC2::SpotFleet
    Properties:
      SpotFleetRequestConfigData:
        AllocationStrategy: !Ref SpotAllocationStrategy
        IamFleetRole: !Ref IamSpotFleetRoleArn
        TargetCapacity: !Ref AsgMaxSize
        SpotPrice: !If [ CreateWithSpotPrice, !Ref SpotPrice, !Ref 'AWS::NoValue' ]
        TerminateInstancesWithExpiration: true
        LaunchSpecifications: 
....

I am wondering why is this created? Because I know the Cluster instances are created with ASG + LC. My only explanation is this fleet is used for running the CloudFormation stack. I cannot find an explanation to this in the documentation, not even sure if instances are needed for CloudFormation stack run.

p.s. I am very new to AWS, also have very little knowledge on CloudFormation.


Solution

  • Not all code in CloudFormation will be executed. It still depends on the "Condition" flag.

    AWS usually create a template that covers most of the user cases and enables/disable parts of the template using the "Condition"

    You can read more about Condition in AWS documentation here: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html