处理 aws lambda 持续增长的错误率需要对错误进行分类并定义升级路径。本指南介绍如何利用 aws systems manager 事件管理器有效地自动化事件处理和升级。此工作流程包含使用 runbook 收集错误详细信息,并通过 amazon sns 通知相关人员。
为何选择 AWS Systems Manager 事件管理器?
AWS Systems Manager 事件管理器为 AWS 环境中的事件响应提供集中管理。主要优势包括:
- 原生 AWS 集成: 与 Amazon CloudWatch、AWS Lambda 和 Amazon EventBridge 等服务无缝集成。
- Runbook 自动化: 支持自动化或半自动化工作流程来排查问题和解决事件。
- 多渠道通知: 支持通过 Amazon SNS、Slack 和 Amazon Chime 发送通知。
- 成本效益: 对于中小型环境而言,是商业解决方案的理想替代方案。
局限性
对于需要详细报告、复杂团队层级和多级升级流程的大型组织,PagerDuty 或 ServiceNow 等专用工具可能更适合。
架构概述
该架构使用 CloudWatch 警报监控 AWS Lambda 函数的错误。事件管理器自动创建事件并执行 Runbook 以处理错误和发送通知。

错误场景
- 错误 A: 标准事件,带有电子邮件通知。
- 错误 B: 严重事件,需要短信通知和升级。
CloudWatch 警报配置区分这些错误类型,从而触发相应的事件响应。
分步配置
步骤 1:为 Lambda 错误创建 CloudWatch 警报
Lambda 函数示例:
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
error_type = event.get("errortype")
try:
if error_type == "a":
logger.error("错误 A:发生标准异常。")
raise Exception("发生错误 A")
elif error_type == "b":
logger.error("错误 B:发生严重运行时错误。")
raise RuntimeError("发生严重错误 B")
else:
logger.info("未触发错误。")
return {"statusCode": 200, "body": "成功"}
except Exception as e:
logger.exception("发生错误:%s", e)
raise
配置 CloudWatch 指标和警报:
- 指标过滤器: 为错误 A 和错误 B 创建过滤器。


- 警报: 将这些过滤器与具有适当阈值和周期的警报关联。


- 警报操作: 设置触发器以启动事件管理器工作流程。

步骤 2:设置事件管理器
- 启用事件管理器: 在 AWS 管理控制台中导航到事件管理器设置并加入您的账户。
步骤 3:配置通知联系人
- 电子邮件: 通知管理员错误 A。

- 短信: 通知相关人员错误 B 升级。

步骤 4:定义升级计划
- 错误 A: 如果未解决,首先发送电子邮件通知,然后发送短信。
- 错误 B: 立即发送短信通知。

步骤 5:创建操作手册
运行手册模板:
{
"schemaVersion": "0.3",
"description": "Lambda 错误处理的运行手册。",
"parameters": {
"AlarmName": {
"type": "String",
"description": "CloudWatch 警报的名称"
},
"snsTopicArn": {
"type": "String",
"description": "用于通知的 SNS 主题 ARN"
}
},
"mainSteps": [
{
"name": "GatherErrorLogs",
"action": "aws:executeScript",
"inputs": {
"Runtime": "python3.8",
"Script": `
def script_handler(events, context):
return {"status": "已收集日志"}
`
}
},
{
"name": "SendNotification",
"action": "aws:executeAwsApi",
"inputs": {
"Service": "sns",
"Api": "Publish",
"TopicArn": "{{ snsTopicArn }}",
"Message": "已检测到 Lambda 错误。警报名称:{{ AlarmName }}"
}
}
]
}
步骤 6:制定响应计划
- 为错误 A 和错误 B 定义单独的响应计划。
- 将运行手册和通知渠道链接到每个响应计划。
步骤 7:将 CloudWatch 警报链接到事件管理器
- 编辑警报操作以触发相应的事件管理器响应计划。

演示



商业工具比较
| 功能 | AWS 事件管理器 | PagerDuty | ServiceNow |
|---|---|---|---|
| 成本效益 | 高 | 中 | 低 |
| AWS 集成 | 无缝 | 有限 | 有限 |
| 升级灵活性 | 中等 | 高 | 高 |
| 报告和分析 | 基础 | 高级 | 高级 |
AWS 事件管理器的理想用例:
- 具有以 AWS 为中心的架构的中小型环境。
- 简单的升级和通知需求。
- 成本敏感的部署。
结论
AWS Systems Manager 事件管理器是经济高效的工具,用于在以 AWS 为中心的 环境中进行事件响应。虽然它缺少一些商业解决方案的高级功能,但它提供了与 AWS 服务的强大集成以及许多用例都足够的功能。它易于设置且成本低廉,使其成为中小型运营的有吸引力的选择。
参考
- AWS Systems Manager 事件管理器
- AWS Lambda 监控
- Amazon CloudWatch 警报
- PagerDuty
- ServiceNow
所有图片链接保持不变。 对文本进行了同义词替换、句子结构调整等伪原创处理,确保文章大意不变。










