本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
入门:创建 Amazon EventBridge 事件总线规则
为了熟悉 EventBridge 规则及其功能,我们将使用 Amazon CloudFormation 模板来设置事件总线规则和相关组件,包括事件源、事件模式和目标。然后,我们可以探索规则是如何运作的,以选择你想要的事件。
该模板在默认事件总线上创建规则。此规则使用事件模式筛选来自特定 Amazon S3 存储桶的事件。该规则将匹配的事件发送到指定的目标,即 Amazon SNS 主题。每次在存储桶中创建对象时,该规则都会向该主题发送通知,然后主题会向您指定的电子邮件地址发送一封电子邮件。
部署的资源包括:
启用 EventBridge 通知的 Amazon S3 存储桶,可充当事件源。
Amazon SNS 主题和电子邮件订阅作为通知的目标。
一种执行角色,用于授予 EventBridge 发布到 Amazon SNS 主题的必要权限。
规则本身,其中:
定义仅匹配来自特定 Amazon S3 存储桶
Object Created的事件的事件模式。将 Amazon SNS 主题指定为向其发送匹配事件的 EventBridge 目标。
有关模板的具体技术细节,请参阅模板详细信息。
开始前的准备工作
要在中接收 Amazon S3 事件 EventBridge,您必须 EventBridge 在 Amazon S3 中启用。本主题假设 EventBridge 已启用。有关更多信息,请参阅 Amazon S3 用户指南 EventBridge中的启用。
使用创建规则 CloudFormation
要创建规则及其关联资源,我们将创建一个 CloudFormation 模板并使用它来创建一个包含示例规则的堆栈,其中包含源和目标。
重要
如果您使用此模板创建堆栈,则需要为所使用的 Amazon 资源付费。
首先,创建 CloudFormation 模板。
在 模板 部分中,单击 JSON 或 YAML 选项卡上的复制图标,以复制模板内容。
将模板内容粘贴到新文件中。
将该文件保存在本地。
接下来,使用您保存的模板来配置堆 CloudFormation 栈。
使用 CloudFormation (控制台)创建堆栈
打开 CloudFormation 控制台,网址为https://console.aws.amazon.com/cloudformation/
。 在堆栈页面,从创建堆栈菜单中选择(采用新资源(标准))。
指定模板:
在先决条件下,选择选择现有模板。
在指定模板下,选择上传模板文件。
选择选择文件,导航到模板文件并将其选中。
选择下一步。
指定堆栈详细信息:
输入堆栈名称。
对于参数,请接受BucketName、SNSTopicDisplayName、SNSTopic名称和的默认值 RuleName,或者输入自己的值。
对于 EmailAddress,请输入您想要接收通知的有效电子邮件地址。
选择下一步。
配置堆栈选项:
在堆栈故障选项下,选择删除所有新创建的资源。
注意
如果选择此选项,即使堆栈创建失败,您可能也不会因为删除策略规定保留资源而向资源付费。有关更多信息,请参阅《CloudFormation 用户指南》中的
DeletionPolicy属性。接受其他所有默认值。
在 “能力” 下,选中复选框以确认 CloudFormation 可能会在您的账户中创建 IAM 资源。
选择下一步。
查看堆栈详细信息并选择提交。
使用 CloudFormation (Amazon CLI) 创建堆栈
您也可以使用 Amazon CLI 来创建堆栈。
-
使用
create-stack命令。接受默认模板参数值,指定堆栈名称和您的电子邮件地址。使用
template-body参数传递模板内容或template-url指定 URL 位置。aws cloudformation create-stack \ --stack-nameeventbridge-rule-tutorial\ --template-bodytemplate-contents\ --parameters ParameterKey=EmailAddress,ParameterValue=your.email@example.com\ --capabilities CAPABILITY_IAM覆盖一个或多个模板参数的默认值。例如:
aws cloudformation create-stack \ --stack-nameeventbridge-rule-tutorial\ ----template-bodytemplate-contents\ --parameters \ ParameterKey=EmailAddress,ParameterValue=your.email@example.com\ ParameterKey=BucketName,ParameterValue=my-custom-bucket-name\ ParameterKey=RuleName,ParameterValue=my-custom-rule-name\ --capabilities CAPABILITY_IAM
CloudFormation 创建堆栈。一旦堆栈创建完成之后,堆栈资源就即可投入使用。可使用堆栈详细信息页面上的资源选项卡来查看账户中预置的资源。
创建堆栈后,您将通过您提供的地址收到一封订阅确认电子邮件。您必须确认此订阅才能收到通知。
探索规则功能
创建规则后,您可以使用 EventBridge 控制台观察规则的运行情况并测试事件的传输。
在https://console.aws.amazon.com/events/家打开 EventBridge 控制台? #/规则
。 -
选择您创建的规则。
在规则详细信息页面上,规则详细信息部分显示有关规则的信息,包括其事件模式和目标。
检查事件模式
在测试规则操作之前,让我们检查一下我们为控制将哪些事件发送到目标而指定的事件模式。该规则只会将符合模式标准的事件发送到目标。在本例中,我们只想要 Amazon S3 在我们特定的存储桶中创建对象时生成的事件。
在规则详细信息页面的 “事件模式” 下,您可以看到事件模式仅选择以下事件:
来源是 Amazon S3 服务 (
aws.s3)详细信息类型是
Object Created存储桶名称与我们创建的存储桶的名称相匹配
{ "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "bucket": { "name": ["eventbridge-rule-example-source"] } } }
通过规则发送事件
接下来,我们将在事件源中生成事件,以测试规则匹配和传送是否正常运行。为此,我们会将一个对象上传到我们指定为事件源的 S3 存储桶。
打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/
。 在存储桶列表中,选择您使用模板创建的存储桶(默认名称:
eventbridge-rule-example-source)。选择上传。
-
上传测试文件以生成
Object Created事件:选择 “添加文件”,然后从您的计算机中选择一个文件。
选择上传。
请稍等片刻,等待事件处理完毕 EventBridge 并发送通知。
请查看您的电子邮件以获取有关对象创建事件的通知。该电子邮件将包含有关 S3 事件的详细信息,包括存储桶名称和对象密钥。
查看规则指标
您可以查看规则的指标,以确认事件的处理是否正确。
在EventBridge 控制台
中,选择您的规则。 请选择 Metrics(指标)选项卡。
您可以查看指标,例如:
调用次数:触发规则的次数。
TriggeredRules:由匹配事件触发的规则数量。
清理:删除资源
最后一步,我们将删除堆栈及其包含的资源。
重要
只要堆栈中包含的 Amazon 资源存在,您就需要为堆栈中包含的 Amazon 资源付费。
打开 CloudFormation 控制台,网址为https://console.aws.amazon.com/cloudformation/
。 -
在堆栈页面上,选择根据该模板创建的堆栈,选择删除,然后确认删除。
CloudFormation 启动删除堆栈及其包含的所有资源。
CloudFormation 模板详情
此模板在您的账户中创建资源并授予权限。
资源
本教程的 CloudFormation 模板将在您的账户中创建以下资源:
重要
如果您使用此模板创建堆栈,则需要为所使用的 Amazon 资源付费。
AWS::S3::Bucket:用作规则事件源的 Amazon S3 存储桶,已启用 EventBridge 通知。AWS::SNS::Topic:一个 Amazon SNS 主题,充当规则匹配的事件的目标。AWS::SNS::Subscription:对 SNS 主题的电子邮件订阅。AWS::IAM::Role:一个 IAM 执行角色,向您的账户中的 EventBridge 服务授予权限。AWS::Events::Rule:将 Amazon S3 存储桶事件与 Amazon SNS 主题关联的规则。
权限
该模板包含一个代表执行角色的AWS::IAM::Role资源。此角色向 EventBridge 服务 (events.amazonaws.com) 授予您账户中的以下权限。
以下权限是通过托管策略授予的AmazonSNSFullAccess:
对 Amazon SNS 资源和操作的完全访问权限
CloudFormation 模板
将以下 YAML 代码另存为单独文件,用作本教程的 CloudFormation 模板。