AWS Backup 失败监控
Source: Dev.to
概述
用于 AWS Backup 任务的自动化监控解决方案,可识别备份失败的操作并通过电子邮件发送详细报告。该工具通过主动提醒备份失败,帮助维护备份合规性。
关键特性
- 失败备份检测 – 自动识别过去 7 天内失败的备份任务。
- 详细报告 – 生成包含备份计划名称、资源详情和失败信息的 Excel 报表。
- 邮件通知 – 发送带有 Excel 报表附件的自动化邮件警报。
- 多账户支持 – 支持 AWS 配置文件、角色切换和访问密钥。
- Jenkins 集成 – 包含用于自动调度的
Jenkinsfile。 - 安全配置 – 使用 AWS Secrets Manager 存储邮件凭证。
Prerequisites
- Python 3.x
- 已配置的 AWS CLI 或相应的 AWS 凭证
- 已配置备份计划的 AWS Backup 服务
- 用于电子邮件配置的 AWS Secrets Manager 密钥
- 所需的 IAM 权限(参见
iam_policy.json)
安装
# Clone the repository and navigate to the solution directory
git clone
cd devops-automation/aws-backup-failed-monitoring
# Install required dependencies
pip install -r requirements.txt
在 inputs.yml 中配置您的 AWS 凭证和电子邮件设置。
配置
AWS 认证
在 inputs.yml 中配置以下任意一种认证方式:
# Option 1: AWS Profile
profile_name: "your-profile-name"
# Option 2: Assumed Role
role_arn: "arn:aws:iam::123456789012:role/BackupMonitoringRole"
# Option 3: Access Keys (not recommended for production)
access_key: "your-access-key"
secret_key: "your-secret-key"
session_token: "your-session-token" # Optional
邮件配置
设置邮件通知:
Email:
enabled: true
secret_manager: "your-smtp-secret-name"
details:
subject_prefix: "AWS Backup Alert"
to:
- "admin@example.com"
cc:
- "devops@example.com"
AWS Secrets Manager
在 AWS Secrets Manager 中创建一个具有以下结构的密钥:
{
"SMTP_HOST": "smtp.example.com",
"SMTP_PORT": "587",
"SMTP_USERNAME": "your-username",
"SMTP_PASSWORD": "your-password",
"EMAIL_FROM": "alerts@example.com"
}
使用
手动执行
python main.py
Jenkins 流水线
随附的 Jenkinsfile 提供自动调度:
- 每周一上午 5:00 运行
- 包含通过 SNS 的失败通知
- 可配置的环境变量
Shell 脚本执行
bash script.sh
IAM 权限
该解决方案需要以下 AWS 权限(参见 iam_policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"backup:ListBackupJobs",
"backup:GetBackupPlan",
"backup:ListTags",
"backup:GetBackupPlanFromJSON"
],
"Resource": "*"
}
]
}
需要的其他权限:
secretsmanager:GetSecretValue– 用于电子邮件配置sts:AssumeRole– 如果使用角色委任时需要
Output
解决方案生成:
-
Excel 报表 –
backup_jobs.xlsx包含:- 备份计划名称
- 资源名称和类型
- 资源 ARN
- 作业 ID
- 开始时间
- 作业状态
-
电子邮件通知 – 附带 Excel 报表的 HTML 邮件
-
控制台日志 – 监控过程的详细日志
文件结构
aws-backup-failed-monitoring/
├── main.py # Main monitoring script
├── AWSSession.py # AWS session management
├── Notification.py # Email notification handler
├── inputs.yml # Configuration file
├── requirements.txt # Python dependencies
├── iam_policy.json # Required IAM permissions
├── Jenkinsfile # Jenkins pipeline configuration
├── script.sh # Shell execution script
├── .gitignore # Git ignore rules
└── README.md # This documentation
监控逻辑
- 时间范围 – 监控过去 7 天的备份作业。
- 作业状态 – 标识状态为
FAILED的作业。 - 验证 – 在报告前验证备份计划是否存在。
- 报告 – 为失败的作业生成详细的 Excel 报告。
- 通知 – 检测到失败时发送电子邮件警报。
故障排除
常见问题
- 缺少依赖 – 确保已安装
requirements.txt中的所有包。 - AWS 权限 – 验证 IAM 权限与
iam_policy.json匹配。 - 邮件配置 – 检查 AWS Secrets Manager 密钥的格式。
- 身份验证 – 确保已正确配置 AWS 凭证。
日志记录
脚本为监控过程的每一步提供详细日志,可在控制台输出中查看,或重定向到日志文件以便进一步分析。
解决方案日志
- INFO level – 常规操作状态
- ERROR level – 具体错误细节和异常
Security Considerations
- Credentials – 切勿将 AWS 凭证提交到版本控制。
- Secrets Manager – 使用 AWS Secrets Manager 管理电子邮件凭证。
- IAM Roles – 认证时优先使用 IAM 角色而非访问密钥。
- Least Privilege – 只授予最小必要权限。
Jenkins 集成
- 安排每周执行。
- 提供构建历史管理。
- 包含失败通知。
- 支持环境特定配置。
贡献
在修改此解决方案时:
- 首先在非生产环境中进行测试。
- 对任何配置更改更新文档。
- 遵循现有的代码结构和命名约定。
- 确保遵守安全最佳实践。
支持
如有问题或疑问:
- 检查故障排除部分。
- 查看 AWS CloudTrail 日志以获取 API 调用详情。
- 验证 IAM 权限和 AWS 服务限制。
- 联系 DevOps 团队寻求帮助。
GitHub 仓库
https://github.com/prashantgupta123/devops-automation/tree/main/aws-backup-failed-monitoring
注意: 该工具监控 AWS Backup 作业,并需要相应的 AWS 权限。请始终在非生产环境中进行测试,并确保遵守组织的安全政策和程序。
