如何使用 CDK 将警报订阅到通知或 SNS 主题?

How can I subscribe an alarm to a notification or SNS topic using CDK?

我知道如何使用 AWS CDK 创建警报,但不知道如何向该警报添加通知。我该怎么做?

这是我的闹钟代码:

/**
 * Alarm for CPU above 75%
 */
const metric = cluster.metricCPUUtilization();
new cloudwatch.Alarm(this, `CPU above 75% alarm` , {
  metric: metric,
  threshold: 75,
  evaluationPeriods: 3,
  datapointsToAlarm: 2,
});

这是它在控制台中的样子:

您需要的是 SNS 主题和订阅。

首先导入需要的包:

import * as sns from "@aws-cdk/aws-sns";
import * as subscriptions from "@aws-cdk/aws-sns-subscriptions";

然后创建一个带有电子邮件订阅的主题:

const topic = new sns.Topic(scope, 'Alarm topic', {
  displayName: envSpecificName(props.displayName)
});

topic.addSubscription(
  new subscriptions.EmailSubscription(email)
)

最后将主题注册为报警动作:

import * as actions from "@aws-cdk/aws-cloudwatch-actions";

...


const metric = cluster.metricCPUUtilization();
const alarm = new cloudwatch.Alarm(this, `CPU above 75% alarm` , {
  metric: metric,
});

alarm.addAlarmAction(new actions.SnsAction(topic));

你可以找到more examples in documentation