我想使用 Amazon EventBridge 规则来创建针对 AWS CloudTrail API 调用的自定义自动响应。
简短描述
要为 CloudTrail API 调用配置自定义操作或通知,请创建一个具有与该事件匹配的事件模式的 EventBridge 规则。
解决方法
创建 CloudTrail 跟踪
**注意:**您必须配置 CloudTrail 跟踪来捕获事件,然后将事件转发到 EventBridge。即使存在有效的事件模式匹配,EventBridge 规则也仅会通过跟踪触发。
要创建 CloudTrail 跟踪,请完成以下步骤:
- 打开 CloudTrail 控制台。
- 导航到 Trails(跟踪)。
- 如果您要创建规则的区域中已经存在跟踪,请确保其状态设置为 Logging(正在记录)。
- 如果您没有现有跟踪,请选择 Create trail(创建跟踪)。
- 对于 Trail name(跟踪名称),输入一个名称。
- 对于 Storage location(存储位置),选择 Create a new S3 bucket(创建新的 S3 存储桶)。
- 对于 AWS KMS alias(AWS KMS 别名),输入 AWS Key Management Service (AWS KMS) 密钥的别名。
- 选择 Next(下一步)。然后,再次选择 Next(下一步)。
- 选择 Create trail(创建跟踪)。
有关详细信息,请参阅使用 CloudTrail 控制台创建跟踪。
创建 EventBridge 规则和事件模式
**注意:**本节中的示例使用 Amazon Simple Queue Service (Amazon SQS) API 操作 CreateQueue 来生成事件。当您使用 Amazon SQS API 操作时,CloudTrail 会记录生成的事件,然后将该事件转发到默认 EventBridge 总线。
要创建 EventBridge 规则和事件模式,请完成以下步骤:
- 打开 EventBridge 控制台。
- 在导航窗格中,选择 Rules(规则)。
- 选择 Create rule(创建规则)。
- 输入规则的名称和描述,例如 TestRule。
- 对于 Event bus(事件总线),选择要与您的规则关联的事件总线。如果您希望规则匹配来自您账户的事件,请选择 default(默认)。
**注意:**当您账户中的 AWS 服务创建事件时,该事件将转到您账户的默认事件总线。
- 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。
- 选择 Next(下一步)。
- 对于 Event source(事件源),请选择 AWS services(AWS 服务)。
- 选择 Event pattern(事件模式)。
- 对于 Event source(事件源),选择 SQS。
- 对于 Event type(事件类型),选择 AWS API Call via CloudTrail(通过 CloudTrail 进行的 AWS API 调用)。
- 选择 Specific operation(s)(特定操作),然后输入 CreateQueue。以下示例显示了由您选择的选项生成的事件模式:
{ "source": ["aws.sqs"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["sqs.amazonaws.com"],
"eventName": ["CreateQueue"]
}
}
注意:事件模式会根据多个字段(例如 eventName 和 eventSource)进行筛选。事件匹配必须包含所有字段和相应的值。
选择 Next(下一步)。
对于 Target types(目标类型),选择 AWS service(AWS 服务)。
对于 Select a target(选择目标),选择 Lambda function(Lambda 函数)。
在列表中,选择您的函数。
选择 Add another target(添加其他目标)。
在 AWS service(AWS 服务)部分中,选择 CloudWatch log group(CloudWatch 日志组)。
对于 Select log group(选择日志组),选择现有日志组或创建新的日志组。
选择 Next(下一步)。然后,再次选择 Next(下一步)。
选择 Create rule(创建规则)。
验证 EventBridge 规则
完成以下步骤:
- 打开 SQS 控制台。
- 选择 Create queue(创建队列)。
- 对于 Type(类型),选择 Standard queue type(标准队列类型)。
- 输入队列的名称。
- 将所有其他选项保留为默认值,然后选择 Create queue(创建队列)。
- 使用 TriggeredRules、Invocations 和 FailedInvocations 指标来确认您的 EventBridge 规则是否触发并调用了目标。
- 要查看这些指标,请导航到您创建的规则,然后打开 Monitoring(监控)选项卡。或者,在 CloudWatch 控制台的 AWS/Events(AWS/事件)命名空间中查看这些指标。
- 确认 Lambda 函数已成功调用,且 CloudWatch 日志组已捕获该事件。
- 在 CloudWatch Logs 控制台中导航到您的目标日志组。请注意,将显示一个包含相应日志事件的新日志流。
相关信息
教程: 创建通过 CloudTrail 对 AWS API 调用做出反应的 EventBridge 规则
如何为 EventBridge 规则创建自定义事件模式?