froi
froi

Reputation: 7786

Is there a way to parameterize cloud formation resource names?

I'm trying to make AutoScalingGroup names on cloud formation templates dynamic. I was thinking if this is possible via parameters, or any other way?

"DynamicASGName": {
      "Type": "AWS::AutoScaling::AutoScalingGroup",
      "Properties": {
      ...properties here...
      }
    }

Upvotes: 8

Views: 8117

Answers (1)

ataylor
ataylor

Reputation: 66099

CloudFormation uses two sets of names: the logical resource name, to identify a resource within the stack, and the physical name which uniquely identifies it across the whole region.

CloudFormation doesn't support setting the logical name dynamically, but with certain types, you can set the physical name in the template with the Name property. For example:

  MyUserPoolClient:
    Type: AWS::Cognito::UserPoolClient
    Properties:
      UserPoolId: !Ref MyUserPool
      ClientName: !Sub '${AppName}-userpoolclient'
      GenerateSecret: false

Unfortunately, AutoScalingGroup doesn't support this.

A better solution is probably to use Tags on your resources. Most AWS resource types (including AutoScalingGroup) support Tags and they can be set dynamically in a CloudFormation template.

Upvotes: 6

Related Questions