CloudFormation to separate stack resources into files and Include

0

I want to use AWS CloudFormation and to separate my stack resources into different files without using nested stacks, How can i achieve this so as to make my template neat and structure as it could have over 50 - 100 resources.

Example in YAML [MainTemplete.yaml]

  1. Resource1.yaml
  2. Resource2.yaml
  3. Resource3.yaml
  4. Resource4.yaml
  5. Resource5.yaml

if posible Resource5.yaml to include

  • Sub1Resource5.yaml
  • Sub2Resource5.yaml
  • Sub3Resource5.yaml

and also able to share parameters and resources. Thank you.

3 Answers
2
Accepted Answer

Closest alternative to nested stack can be cross stack but that may not necessarily fit into your use case. But with AWS cross stack, you can refer resource output from one stack to another cloudformation stack.

Please take a look at following documentations and see if this can fit into your use case.

Hope you find this helpful.

Comment here if you have additional questions.

Abhishek

profile pictureAWS
EXPERT
answered 8 months ago
profile picture
EXPERT
reviewed 8 months ago
1

Hi, This very recent blog post details how to coordinate complex resource dependencies across CloudFormation stacks.

https://aws.amazon.com/blogs/mt/coordinating-complex-resource-dependencies-across-cloudformation-stacks/

It looks like what you want to achieve.

Best,

Didier

profile pictureAWS
EXPERT
answered 8 months ago
0

Absolutely, you can achieve a cleaner and more organized AWS Cloud Formation template structure by splitting your stack resources into separate files and including them without resorting to nested stacks. This approach is highly beneficial for managing large-scale templates with numerous resources. Here's how you can accomplish this using YAML:

MainTemplate.yaml: In your main template, you can use the Resources section to include the resources from separate files using the AWS::Include transform. Here's an example: AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Include' Resources: Resource1: Type: 'AWS::CloudFormation::Include' Properties: Location: Resource1.yaml Resource2: Type: 'AWS::CloudFormation::Include' Properties: Location: Resource2.yaml

... continue for other resources

Absolutely, you can achieve a cleaner and more organized AWS CloudFormation template structure by splitting your stack resources into separate files and including them without resorting to nested stacks. This approach is highly beneficial for managing large-scale templates with numerous resources. Here's how you can accomplish this using YAML:

MainTemplate.yaml: In your main template, you can use the Resources section to include the resources from separate files using the AWS::Include transform. Here's an example: yaml Copy code AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Include' Resources: Resource1: Type: 'AWS::CloudFormation::Include' Properties: Location: Resource1.yaml Resource2: Type: 'AWS::CloudFormation::Include' Properties: Location: Resource2.yaml

... continue for other resources

Resource5.yaml: In your Resource5.yaml file, you can include sub-resources using the same technique. For instance: AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Include' Resources: Resource5: Type: 'AWS::CloudFormation::Include' Properties: Location: Sub1Resource5.yaml

... include other sub-resources similarly

Sharing Parameters and Resources: You can define shared parameters and resources in a separate file, let's call it CommonResources.yaml, and then include it in your individual resource files. For example: AWSTemplateFormatVersion: '2010-09-09' Parameters: SharedParameter: Type: String Default: SharedParameterValue

Resources: SharedResource: Type: AWS::SomeResourceType Properties: # Properties of the shared resource In Resource1.yaml: AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Include' Resources: Resource1: Type: 'AWS::CloudFormation::Include' Properties: Location: CommonResources.yaml This approach maintains clarity, modularity, and reusabilityhttps://proracketreviews.com/making your CloudFormation template significantly more manageable. It also allows you to maintain a consistent structure across different files while sharing parameters and resources effectively.

Hope this helps! If you have any further questions, feel free to ask.

jeanfly
answered 8 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions