A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Amazon CloudWatch monitors AWS resources and applications in real-time.
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)",
});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,
});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,
},
});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,
});CloudWatch provides 33 resources for monitoring, logging, and event management including:
See All Services for complete CloudWatch API.
Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws@7.16.0