Export AWS configuration as CloudFormation template
Asked Answered
M

4

48

I´m using AWS CLI and CloudFormation, and I could not find any reference in the documentation.

Does anybody know if it´s possible to create a CloudFormation template from a current configuration.

Let´s say that I want to get a CloudFormation template from my current security group configuration.

Any idea if it´s possible to export that configuration as a template using CLI?

Mylohyoid answered 27/6, 2016 at 15:12 Comment(0)
O
31

Based on our experience we found 3 possible ways to translate existing manually deployed (from Web Console UI) AWS infra to Cloudformation (CF).

  1. Using a new CloudFormation native introduced feature (since Nov 2019) that allows you to Import existing resources into a CloudFormation stack

  2. Using aws cli execute $aws service_name_here describe for each element that make up your stack eg for RDS Database Stack:

  • RDS Instance -> Type: AWS::RDS::DBInstance,
  • RDS (EC2) SG -> Type: AWS::EC2::SecurityGroup,
  • RDS Subnet Group -> Type: AWS::RDS::DBSubnetGroup and
  • RDS DB Param Group -> Type: AWS::RDS::DBParameterGroup

And manually translate to CF based on the outputs obtained from the aws cli for each of the components. This approach usually requires more experience in both AWS and CF but the templates that you are creating can be structured and designed under good practices, fully parameterized (Sub, Ref, Join, Fn::GetAtt:, Fn::ImportValue), modular, applying conditions and in a 1st iteration the result would probably be close to the final state of the templates (interesting reference examples: https://github.com/widdix/aws-cf-templates/).

Extra points! :)

  1. Some other new alternatives to export your current deployed AWS infra to Cloudformation / Terraform code:

Related Article: https://medium.com/@exequiel.barrirero/aws-export-configuration-as-code-cloudformation-terraform-b1bca8949bca

Occasionally answered 19/4, 2019 at 16:33 Comment(2)
Note: CloudFormer doesn't pick up many services as of this date, like Elasticsearch.Slant
Great answer, make sure you know what are the supported resources for option #1 as not all the services are supported e.g AppSync. docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…Wideawake
A
15

It's not possible using the AWS CLI but you can use the CloudFormer [1] tool to create a CloudFormation template from existing resources. I've had decent success with it. The templates aren't as "pretty" as hand-made templates but they provide a good starting point.

[1] http://aws.amazon.com/developertools/6460180344805680

Amid answered 27/6, 2016 at 15:23 Comment(5)
I tried to use it, but always after finish it start running the new stack in cloudformation instead of allow me to download the template, which is what I need, am I doing something wrong here?Mylohyoid
It should give you the option to save the template to an S3 bucket. (See bottom of docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…) Or, you could just copy/paste the template to a file on your computer.Amid
The link does not work, and in the bottom of the page you paste before, give me the option to Specify an Amazon S3 template URL, but not to download. Like I said after I finish all steps, start running the stack in cloudformation. I think I´m using the same tool that you saidMylohyoid
A trailing period got included in that previous link: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…Amid
For anyone reading this now, CloudFormer is no longer maintained: https://mcmap.net/q/371862/-which-aws-services-does-aws-cloudformer-supportAnny
E
6

In addition to CloudFormer, you might want to take a look at Bellerophon: https://github.com/arminhammer/bellerophon.

Exotoxin answered 27/6, 2016 at 21:12 Comment(1)
Note that this Bellerophon doesn't support a lot of resources, e.g. the entire Elastic Beanstalk suite.Pyles
A
2

I had some problems getting the tradidtional tools - mentioned above - working in our environment; we have a complicated API Gateway. Former2 didnt' find it at all (although seemed ideal for other resources)

I found another tool, "Terraformer" which extracts AWS into Terraform, which can then be turned into CloudFormation -or used directly as IaC.

https://github.com/GoogleCloudPlatform/terraformer#installation

Maybe that will work for others if the above tools don't.

Amorphous answered 13/11, 2021 at 2:36 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.