Mohammad Sadoughi
Mohammad Sadoughi

Reputation: 1179

How to convert AWS ClouldWatch Dashboard into CloudFormation template

I have created a Cloudwatch dashboard via AWS Console. Now I would like to convert it to its Cloudformation template for future deployment.

Is there any solution?

Upvotes: 0

Views: 1342

Answers (2)

Garret Wilson
Garret Wilson

Reputation: 21426

In this case there's not much to convert, because the dashboard definition in CloudFormation AWS::CloudWatch::Dashboard must appear, not defined in YAML or even in JSON, but represented as a literal string representation of the JSON (i.e. a literal JSON representation embedded in the CloudFormation template, not part of the CloudFormation template).You can see this in one of the official CloudFormation templates:

BasicDashboard:
  Type: AWS::CloudWatch::Dashboard
  Properties:
    DashboardName: Dashboard1
    DashboardBody: '{"widgets":[{"type":"metric","x":0,"y":0,"width":12,"height":6,"properties":{"metrics":[["AWS/EC2","CPUUtilization","InstanceId","i-012345"]],"period":300,"stat":"Average","region":"us-east-1","title":"EC2 Instance CPU"}},{"type":"text","x":0,"y":7,"width":3,"height":3,"properties":{"markdown":"Hello world"}}]}'

Thus you simply need to copy and paste the JSON source code of your existing dashboard into the CloudFormation template and add the minimal AWS::CloudWatch::Dashboard and dashboard name boilerplate.

Tip: You can can paste the multiple lines of JSON as-is using a YAML multiline string, with the following syntax:

BasicDashboard:
  Type: AWS::CloudWatch::Dashboard
  Properties:
    DashboardName: Dashboard1
    DashboardBody: >-
      {
        "widgets": [
          {
            …

Upvotes: 2

Marcin
Marcin

Reputation: 238397

You could probably use former2 to generate CloudFormation template based on your existing dashboards.

Upvotes: 0

Related Questions