There are plenty of examples for creating an ASG using a CloudFormation template, but those I found all used a “launch configuration“.
According to the docs, using a launch template is the new hotness, so I foolishly assumed it would be simple to adapt one to the other.
Some time later, I had a working example:
AutoScalingGroup:
Type: 'AWS::AutoScaling::AutoScalingGroup'
Properties:
LaunchTemplate:
LaunchTemplateId: !Ref LaunchTemplate
Version: !GetAtt LaunchTemplate.LatestVersionNumber
VPCZoneIdentifier:
- Fn::ImportValue:
Fn::Sub: '${Network1StackName}-PublicSubnetId'
- Fn::ImportValue:
Fn::Sub: '${Network2StackName}-PublicSubnetId'
MinSize: 1
MaxSize: 1
LaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
ImageId: "..."
InstanceType: "..."
SecurityGroupIds:
- Fn::ImportValue:
Fn::Sub: '${SecurityGroupsStackName}-SshIngressSecurityGroupId'