如何使用CDK为AWS Glue作业的CloudWatch告警配置SNS通知
给AWS Glue作业告警配置SNS邮件通知
以下是修改后的完整代码,已添加SNS邮件通知配置:
import { aws_cloudwatch as cloudwatch, aws_events as events, aws_sns as sns, aws_cloudwatch_actions as cw_actions } from 'aws-cdk-lib'; import { Rule } from 'aws-cdk-lib/aws_events'; // 1. 创建SNS主题,作为告警通知的消息通道 const glueJobAlarmTopic = new sns.Topic(scope, '{DVRD replication} GlueJobFailureAlarmTopic', { displayName: 'Glue DVRD复制作业失败告警主题' }); // 2. 给主题添加邮件订阅,替换成实际接收通知的邮箱地址 glueJobAlarmTopic.addSubscription(new sns.Subscription(scope, '{DVRD replication} EmailSubscription', { endpoint: 'your-alert-email@example.com', protocol: sns.SubscriptionProtocol.EMAIL })); // 监控指定Glue作业的状态变更 const jobFailedRule = new Rule(scope, '{DVRD replication} JobFailureRule', { eventPattern: { source: ['aws.glue'], detailType: ['Glue Job State Change'], detail: { state: ['FAILED', 'TIMEOUT', 'ERROR'], jobName: ['DVRD replication'], // 修正:此处需用字符串格式 }, }, }); // 定义CloudWatch指标 const numFailedJobsMetric = new cloudwatch.Metric({ namespace: 'AWS/Events', metricName: 'TriggeredRules', statistic: 'Sum', dimensionsMap: { RuleName: jobFailedRule.ruleName, }, }); // 创建CloudWatch告警 const numFailedJobsAlarm = new cloudwatch.Alarm(scope, '{DVRD replication} numFailedJobsAlarm', { metric: numFailedJobsMetric, threshold: 1, evaluationPeriods: 1, }); // 3. 将SNS主题绑定到告警,触发告警时自动发送邮件通知 numFailedJobsAlarm.addAlarmAction(new cw_actions.SnsAction(glueJobAlarmTopic));
关键操作说明:
- 导入必要模块:新增
aws_sns(SNS服务)和aws_cloudwatch_actions(CloudWatch告警动作)模块,支撑主题创建、订阅配置和告警关联。 - 创建SNS主题:作为告警消息的转发载体,设置显示名称方便在AWS控制台识别。
- 配置邮件订阅:指定接收告警的邮箱,用户需登录该邮箱完成订阅确认,才能正常接收通知。
- 关联告警与主题:通过
addAlarmAction方法将SNS主题与告警绑定,当告警触发时,CloudWatch会自动向主题推送消息,再由主题转发给订阅邮箱。
注意事项:
- 原代码中
jobName: [DVRD replication]存在语法错误,需改为字符串数组格式['DVRD replication']。 - 务必将
your-alert-email@example.com替换为实际接收告警的邮箱地址。
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

