AWS Backup 失败监控

发布: (2025年12月28日 GMT+8 22:41)
6 分钟阅读
原文: Dev.to

Source: Dev.to

Prashant Gupta

概述

用于 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 权限。请始终在非生产环境中进行测试,并确保遵守组织的安全政策和程序。

Back to Blog

相关文章

阅读更多 »