AWS-利用CloudTrail与CloudWatch实现事件邮件通知

使用 CloudWatch Events 记录 AWS API 调用(启动aws SSM SESSION),并邮件通知.

Amazon CloudWatch Events 提供近乎实时的系统事件流,这些系统事件描述 Amazon Web Services (AWS) 资源的变化。通过使用可快速设置的简单规则,您可以匹配事件并将事件路由到一个或多个目标函数或流。CloudWatch Events 会在发生操作更改时感知到这些更改。CloudWatch Events 将响应这些操作更改并在必要时采取纠正措施,方式是发送消息以响应环境、激活函数、进行更改并捕获状态信息。

您还可以使用 CloudWatch Events 来计划使用 cron 或 rate 表达式在某些时间自行触发的自动化操作。

您可以将以下 AWS 服务配置为 CloudWatch Events 的目标:

  • Amazon EC2 实例
  • AWS Lambda 函数
  • Amazon Kinesis Data Streams 中的流
  • Amazon Kinesis Data Firehose 中的传输流
  • Amazon ECS 任务
  • Systems Manager Run Command
  • Systems Manager 自动化
  • AWS Batch 个作业
  • Step Functions 状态机
  • CodePipeline 中的管道
  • CodeBuild 项目
  • Amazon Inspector 评估模板
  • Amazon SNS 主题
  • Amazon SQS 队列

内置目标 —EC2 CreateSnapshot API call、EC2 RebootInstances API call、EC2 StopInstances API call 和 EC2 TerminateInstances API call。

另一个 AWS 账户的默认事件总线

概念:

事件 —事件表示 AWS 环境中的更改。AWS 资源可以在其状态更改时生成事件。例如,Amazon EC2 在 EC2 实例的状态从待处理更改为正在运行时生成事件,Amazon EC2 Auto Scaling 在启动或终止实例时生成事件。AWS CloudTrail 在您执行 API 调用时发布事件。您可以生成自定义应用程序级事件并将它们发布到 CloudWatch Events。您还可以设置定期生成的计划事件。有关生成事件的服务的列表,以及来自每项服务的示例事件,请参阅 受支持服务的 CloudWatch Events 事件示例。

目标—目标负责处理事件。目标可包括 Amazon EC2 实例、AWS Lambda 函数、Kinesis 流、Amazon ECS 任务、Step Functions 状态机、Amazon SNS 主题、Amazon SQS 队列和内置目标。目标接收 JSON 格式的事件。

规则—规则匹配传入事件并将其路由到目标进行处理。单个规则可路由到多个目标,所有这些目标将并行处理。规则不按特定顺序处理。这可让组织的不同部门能够查找和处理他们感兴趣的事件。规则可以定制发送到目标的 JSON,方法是仅传递特定部分或使用常量来覆盖 JSON。

下面使用一个ssm事件(start-session)来触发邮件通知:

1. 必须使用 AWS CloudTrail 设置跟踪才能匹配这些事件。如果您没有跟踪,请完成以下步骤 (由于下面使用了的事件类型(AWS-API Call via CloudTrail),如果没用到此类型的事件,就可以跳过这一步)。

创建跟踪

  1. 在 https://console.amazonaws.cn/cloudtrail/ 打开 CloudTrail 控制台。
  2. 依次选择 Trails 和 Add new trail。
  3. 对于 Trail name,键入跟踪的名称。
  4. 对于 S3 存储桶,键入新存储桶的名称,CloudTrail 将在其中传输日志。

选择 Create。

2. 在CloudTrail的事件中创建一条规则,并指定事件触发的目标为"SNS主题"

创建规则

 

 

3. 测试,你现在可以在aws的cli中使用ssm连接实例:

# aws ssm start-session --target i-43539530kk3k3n

大概1分钟内,你就可以收到邮件,内容如下:

"帐号: user-xxx 启动ssm session;连接的instance: {target:i-43539530kk3k3n}; 登录IP: 58.21.16.216 ,事件时间:2019-05-11T06:12:26Z,登录返回状态:{sessionId:user-xxx-0419e4ff40f7av57c,tokenValue:Value hidden due to security reasons.,streamUrl:Value hidden due to security reasons.} ;"

4. 注释:

如果目标的配置输入,选择“输入转换器”:

  • 输入路径:以键值的形式定义,例如{"state": "$.detail.state","instance":"$.detail.instance-id"}
  • 输入模板:一个字符串,其中包含将使用输入路径中定义的值填充的占位符,例如:"实例<instance>的状态为<state>" ;这里特别注意需要用双引号,不然会提示规则不匹配。

如果你不知道“特定操作”该使用哪个键值,可以先选择配置输入的“已匹配的事件”,这样它会通过sns发送一条完整的信息到你的邮箱,你再根据邮件的内容查找你需要的键值。

收到的邮件是一个Json格式的信息,如下:

json中的eventName的value 就是 “特定操作”使用的键值 ,这里是“StartSession”

注意:

CloudWatch警报和规则是触发的sns是不一样的:

1.使用规则的事件触发的通知,只要检查到事件,就会通过sns发送邮件。

2. 警报中触发的sns邮件发送,只有状态变化(如:从正常->警报),才触发sns发送邮件如:AWS-利用CloudTrail与CloudWatch实现警报

其他:

除了事件触发,还支持创建按计划触发的 CloudWatch Events规则,例如设置每天早上5点触发一个执行Lambda的任务,相当与一个linux 中的crontab 。

参考:

https://docs.amazonaws.cn/AmazonCloudWatch/latest/events/LogAPICall.html

https://docs.amazonaws.cn/AmazonCloudWatch/latest/events/CloudWatch-Events-Input-Transformer-Tutorial.html

受支持服务的 CloudWatch Events 事件示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值