Skip to content

Dashboard ​

The Dashboard resource lets you manage AWS CloudWatch Dashboards for visualizing metrics and logs in AWS.

Minimal Example ​

Create a basic CloudWatch Dashboard with essential properties:

ts
import AWS from "alchemy/aws/control";

const cloudWatchDashboard = await AWS.CloudWatch.Dashboard("basicDashboard", {
  DashboardName: "MainMetricsDashboard",
  DashboardBody: JSON.stringify({
    widgets: [
      {
        type: "metric",
        x: 0,
        y: 0,
        width: 6,
        height: 6,
        properties: {
          metrics: [
            ["AWS/EC2", "CPUUtilization", "InstanceId", "i-1234567890abcdef0"],
            ["AWS/EC2", "DiskReadOps", "InstanceId", "i-1234567890abcdef0"]
          ],
          view: "timeSeries",
          stacked: false,
          region: "us-east-1",
          title: "EC2 Instance Metrics"
        }
      }
    ]
  })
});

Advanced Configuration ​

Configure a dashboard with multiple widgets and a custom layout:

ts
const advancedDashboard = await AWS.CloudWatch.Dashboard("advancedDashboard", {
  DashboardName: "AdvancedMetricsDashboard",
  DashboardBody: JSON.stringify({
    widgets: [
      {
        type: "metric",
        x: 0,
        y: 0,
        width: 4,
        height: 6,
        properties: {
          metrics: [["AWS/S3", "NumberOfObjects", "BucketName", "my-bucket"]],
          view: "timeSeries",
          stacked: false,
          region: "us-west-2",
          title: "S3 Object Count"
        }
      },
      {
        type: "text",
        x: 4,
        y: 0,
        width: 8,
        height: 6,
        properties: {
          markdown: "# Welcome to Your Dashboard\nThis dashboard displays key metrics."
        }
      },
      {
        type: "metric",
        x: 0,
        y: 6,
        width: 12,
        height: 6,
        properties: {
          metrics: [["AWS/Lambda", "Invocations", "FunctionName", "myLambdaFunction"]],
          view: "timeSeries",
          stacked: true,
          region: "us-east-1",
          title: "Lambda Function Invocations"
        }
      }
    ]
  })
});

Updating an Existing Dashboard ​

Use the adopt property to update an existing dashboard without failing if it already exists:

ts
const updatedDashboard = await AWS.CloudWatch.Dashboard("updatedDashboard", {
  DashboardName: "MainMetricsDashboard",
  DashboardBody: JSON.stringify({
    widgets: [
      {
        type: "metric",
        x: 0,
        y: 0,
        width: 6,
        height: 6,
        properties: {
          metrics: [["AWS/EC2", "NetworkIn", "InstanceId", "i-1234567890abcdef0"]],
          view: "timeSeries",
          stacked: false,
          region: "us-east-1",
          title: "Network In"
        }
      }
    ]
  }),
  adopt: true
});