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'