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

Jon*_*win 2 amazon-cloudwatch typescript aws-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,
});
Run Code Online (Sandbox Code Playgroud)

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

控制台中的警报通知

mie*_*sol 7

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

首先导入所需的包:

import * as sns from "@aws-cdk/aws-sns";
import * as subscriptions from "@aws-cdk/aws-sns-subscriptions";
Run Code Online (Sandbox Code Playgroud)

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

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

topic.addSubscription(
  new subscriptions.EmailSubscription(email)
)
Run Code Online (Sandbox Code Playgroud)

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

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));
Run Code Online (Sandbox Code Playgroud)

您可以在文档中找到更多示例