Skip to content

MetricStream ​

The MetricStream resource lets you create and manage AWS CloudWatch MetricStreams for streaming CloudWatch metrics to Amazon Kinesis Data Firehose.

Minimal Example ​

Create a basic MetricStream with required properties and one optional property.

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

const basicMetricStream = await AWS.CloudWatch.MetricStream("basicMetricStream", {
  FirehoseArn: "arn:aws:firehose:us-east-1:123456789012:deliverystream/myFirehose",
  RoleArn: "arn:aws:iam::123456789012:role/myMetricStreamRole",
  OutputFormat: "json",
  IncludeLinkedAccountsMetrics: true
});

Advanced Configuration ​

Configure a MetricStream with detailed statistics configurations and filters to control the metrics being streamed.

ts
const advancedMetricStream = await AWS.CloudWatch.MetricStream("advancedMetricStream", {
  FirehoseArn: "arn:aws:firehose:us-east-1:123456789012:deliverystream/myAdvancedFirehose",
  RoleArn: "arn:aws:iam::123456789012:role/myAdvancedMetricStreamRole",
  OutputFormat: "json",
  StatisticsConfigurations: [
    {
      Statistics: ["Average", "Sum"],
      Dimensions: ["InstanceId"],
      MetricStat: {
        MetricName: "CPUUtilization",
        Namespace: "AWS/EC2",
        Period: 300,
        Unit: "Percent"
      }
    }
  ],
  IncludeFilters: [
    {
      Namespace: "AWS/EC2",
      MetricName: "CPUUtilization"
    }
  ],
  ExcludeFilters: [
    {
      Namespace: "AWS/S3",
      MetricName: "BucketSizeBytes"
    }
  ]
});

Using Tags ​

Create a MetricStream and apply tags for better resource management.

ts
const taggedMetricStream = await AWS.CloudWatch.MetricStream("taggedMetricStream", {
  FirehoseArn: "arn:aws:firehose:us-east-1:123456789012:deliverystream/myTaggedFirehose",
  RoleArn: "arn:aws:iam::123456789012:role/myTaggedMetricStreamRole",
  OutputFormat: "json",
  Tags: [
    {
      Key: "Environment",
      Value: "Production"
    },
    {
      Key: "Project",
      Value: "MetricStreamProject"
    }
  ]
});

Adopting Existing Resources ​

Set the adopt property to true to adopt an existing MetricStream.

ts
const adoptExistingMetricStream = await AWS.CloudWatch.MetricStream("adoptExistingMetricStream", {
  FirehoseArn: "arn:aws:firehose:us-east-1:123456789012:deliverystream/myExistingFirehose",
  RoleArn: "arn:aws:iam::123456789012:role/myAdoptExistingMetricStreamRole",
  OutputFormat: "json",
  adopt: true
});