CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-pulumi--aws

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

cloudwatch.mddocs/services/

CloudWatch - Monitoring and Logging

Amazon CloudWatch monitors AWS resources and applications in real-time.

Common Tasks

import * as aws from "@pulumi/aws";

// Create a log group for application logs
const logGroup = new aws.cloudwatch.LogGroup("app-logs", {
    retentionInDays: 7,
});

// Set up a metric alarm for high CPU usage
const cpuAlarm = new aws.cloudwatch.MetricAlarm("high-cpu", {
    metricName: "CPUUtilization",
    namespace: "AWS/EC2",
    threshold: 80,
    comparisonOperator: "GreaterThanThreshold",
    evaluationPeriods: 2,
    period: 300,
    statistic: "Average",
    alarmActions: [snsTopicArn],
});

// Create an EventBridge rule for scheduled tasks
const scheduledRule = new aws.cloudwatch.EventRule("daily-task", {
    scheduleExpression: "rate(1 day)",
});

Core Resources

LogGroup

Log groups organize and retain CloudWatch Logs data.

class LogGroup extends pulumi.CustomResource {
    constructor(name: string, args?: LogGroupArgs, opts?: pulumi.CustomResourceOptions);

    readonly arn: pulumi.Output<string>;
    readonly name: pulumi.Output<string>;
}

interface LogGroupArgs {
    name?: pulumi.Input<string>;
    retentionInDays?: pulumi.Input<number>;
    kmsKeyId?: pulumi.Input<string>;
    tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}

Example - Create log group with retention

const appLogs = new aws.cloudwatch.LogGroup("application", {
    name: "/aws/lambda/my-function",
    retentionInDays: 14,
    kmsKeyId: logEncryptionKey.id,
});

MetricAlarm

Alarms watch metrics and trigger actions when thresholds are breached.

class MetricAlarm extends pulumi.CustomResource {
    constructor(name: string, args: MetricAlarmArgs, opts?: pulumi.CustomResourceOptions);
}

interface MetricAlarmArgs {
    comparisonOperator: pulumi.Input<string>;
    evaluationPeriods: pulumi.Input<number>;
    metricName?: pulumi.Input<string>;
    namespace?: pulumi.Input<string>;
    period?: pulumi.Input<number>;
    statistic?: pulumi.Input<string>;
    threshold?: pulumi.Input<number>;
    alarmActions?: pulumi.Input<pulumi.Input<string>[]>;
    dimensions?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}

Example - Monitor Lambda errors

const errorAlarm = new aws.cloudwatch.MetricAlarm("lambda-errors", {
    comparisonOperator: "GreaterThanThreshold",
    evaluationPeriods: 1,
    metricName: "Errors",
    namespace: "AWS/Lambda",
    period: 60,
    statistic: "Sum",
    threshold: 5,
    alarmActions: [alertTopic.arn],
    dimensions: {
        FunctionName: myFunction.name,
    },
});

EventRule

EventBridge (formerly CloudWatch Events) rules match events and route them to targets.

class EventRule extends pulumi.CustomResource {
    constructor(name: string, args?: EventRuleArgs, opts?: pulumi.CustomResourceOptions);
}

interface EventRuleArgs {
    name?: pulumi.Input<string>;
    description?: pulumi.Input<string>;
    eventPattern?: pulumi.Input<string>;
    scheduleExpression?: pulumi.Input<string>;
    roleArn?: pulumi.Input<string>;
    isEnabled?: pulumi.Input<boolean>;
}

Example - React to EC2 state changes

const ec2StateRule = new aws.cloudwatch.EventRule("ec2-state-change", {
    description: "Capture EC2 instance state changes",
    eventPattern: JSON.stringify({
        source: ["aws.ec2"],
        "detail-type": ["EC2 Instance State-change Notification"],
        detail: {
            state: ["terminated"],
        },
    }),
});

new aws.cloudwatch.EventTarget("notify-on-termination", {
    rule: ec2StateRule.name,
    arn: notificationTopic.arn,
});

Additional Resources

CloudWatch provides 33 resources for monitoring, logging, and event management including:

  • LogStream - Write log events to log groups
  • LogMetricFilter - Extract metrics from logs
  • LogSubscriptionFilter - Stream logs to other services
  • Dashboard - Visualize metrics and logs
  • CompositeAlarm - Combine multiple alarms
  • EventBus - Custom event buses
  • EventTarget - Route events to AWS services
  • MetricStream - Stream metrics to destinations

See All Services for complete CloudWatch API.

Related Services

  • EventBridge - Event-driven architecture (uses CloudWatch Events)
  • Lambda - Function logging via CloudWatch Logs
  • SNS - Alarm notifications
  • Kinesis - Log streaming destinations

Install with Tessl CLI

npx tessl i tessl/npm-pulumi--aws@7.16.0

docs

index.md

quickstart.md

README.md

tile.json