Amazon EC2合规状态通知方案咨询:是否可实现每周定时邮件推送
Amazon EC2 合规状态定时邮件推送实现方案
完全可以实现你提到的需求,以下是最常用的AWS原生服务组合方案,无需额外接入第三方工具:
核心依赖组件
- AWS Config:负责EC2实例合规规则定义、持续扫描和状态存储,可直接使用官方托管的EC2相关合规规则,也可自定义规则匹配业务要求
- Amazon EventBridge Scheduler:负责定时触发工作流,支持自定义cron表达式实现每周固定时间执行
- AWS Lambda:负责逻辑处理,触发后拉取AWS Config存储的EC2合规数据,整理为邮件内容
- 邮件发送模块:可直接在Lambda中集成SMTP服务,或通过Amazon SNS主题推送邮件
具体配置流程
- 配置AWS Config合规规则
进入AWS Config控制台,启用EC2资源扫描,添加你需要的合规规则(例如EC2实例是否开启终止保护、卷是否加密、安全组是否开放高危端口等),配置完成后AWS Config会自动全量扫描实例并实时更新合规状态。
- 创建Lambda处理函数
运行时可选择Python/Node.js等常用环境,需要给Lambda执行角色授予AWS Config只读权限、对应邮件发送权限。核心逻辑参考代码段:
import boto3 import smtplib from email.mime.text import MIMEText config_client = boto3.client('config') def lambda_handler(event, context): # 拉取所有EC2实例合规信息 ec2_compliance_data = [] res = config_client.list_discovered_resources(resourceType='AWS::EC2::Instance') for instance in res['resourceIdentifiers']: instance_id = instance['resourceId'] compliance_res = config_client.get_compliance_details_by_resource( ResourceType='AWS::EC2::Instance', ResourceId=instance_id ) status = compliance_res['EvaluationResults'][0]['ComplianceType'] ec2_compliance_data.append(f"实例ID:{instance_id},合规状态:{status}") # 整理为邮件内容 mail_content = "\n".join(ec2_compliance_data) msg = MIMEText(mail_content, 'plain', 'utf-8') msg['Subject'] = '每周EC2实例合规状态通知' msg['From'] = '发件人邮箱' msg['To'] = '收件人邮箱' # 发送邮件(替换为你自己的SMTP配置) with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp: smtp.login('发件人邮箱', '授权码') smtp.send_message(msg)
- 配置定时触发规则
进入Amazon EventBridge控制台,创建计划任务,cron表达式按你需要的推送时间配置,例如每周一上午10点推送的表达式为
0 10 ? * MON *,触发目标选择上述Lambda函数即可。
替代方案
如果你没有启用AWS Config,也可以直接在Lambda中调用EC2的describe_instances接口拉取实例属性,自行编写合规判断逻辑,灵活性更高但需要自己维护所有合规规则的判断代码。
内容的提问来源于stack exchange,提问作者Makina74
相关产品推荐
相关产品推荐

