Artem Dolobanko
Artem Dolobanko

Reputation: 2349

CloudFormation nested stack name

I need to set nested stack name explicitly in a CloudFormation template, but don't see such option in AWS documentation. Is there way to achieve this? I can specify stack name, when running a parent stack, but all nested stacks, got a randomly generated stack name, based on a resource name created, like:

VPC: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3-eu-west-1.amazonaws.com/cf-templates-wtmg/vpc.yaml Parameters: EnvironmentName: !Ref AWS::StackName

Which will generate nested stack name in form parent_stack_name-VPC-random_hash.

Upvotes: 9

Views: 5785

Answers (2)

Cuban Jon
Cuban Jon

Reputation: 56

I ran into the same thing just today.

From the official AWS documentation, supporting the original answer to this question:

You can add output values from a nested stack within the containing template. You use the GetAtt function with the nested stack's logical name and the name of the output value in the nested stack in the format Outputs.NestedStackOutputName

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html

Looks like we still cannot reference the stack name more easily. The first answer to the question on this page still stands.

Upvotes: 1

Ryan
Ryan

Reputation: 3165

Yes. I was looking for the same thing also but currently it's not available.

I think the reason of you wanted a specific stack name is to use it for output referral?

What you can do/I did was:

1) For those in the same parent stack, you need to output from nested stack and then refer directly from the stack like !GetAtt NestedStack1.Outputs.Output1

2) For those which are outside for parent stack, you will need to output twice. Once in the nested stack and once in the parent stack. Then you can refer to the parent stack output.

Hope this will help.

Upvotes: 7

Related Questions