使用 Amazon 监控SES事件 EventBridge - Amazon Simple Email Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon 监控SES事件 EventBridge

EventBridge 是一项无服务器服务,它使用事件将应用程序组件连接在一起,使您可以更轻松地构建可扩展的事件驱动应用程序。事件驱动型架构是一种构建松耦合软件系统的风格,这些系统通过发出和响应事件来协同工作。事件是JSON格式化的消息,通常表示资源或环境的变化或其他管理事件。

某些SES功能将生成您在创建事件目的地时定义的事件并将其发送到 EventBridge 默认事件总线。事件总线是接收事件并将其传送到零个或多个目的地或目标的路由器。与事件总线关联的规则会在事件到达时进行评估。每条规则都会检查事件是否与规则的模式相匹配。如果事件确实匹配,则将事件 EventBridge 发送到指定的目标。

SES在功能状态更改或状态更新 EventBridge 时向发送事件。您可以使用 EventBridge 规则将事件路由到您定义的目标。这些事件将尽最大努力传输,可能会不按顺序传输。

SES事件

以下事件由SES功能生成并发送到中的默认事件总线 EventBridge。有关更多信息,包括每种事件类型的详细数据,请参阅SES事件架构参考

虚拟送达率管理器顾问活动
事件类型 说明

Advisor 推荐状态打开

每当虚拟可交付性管理器 Advisor 中打开新推荐时都会生成事件。

Advisor 推荐状态已解决

每当虚拟可交付性管理器 Advisor 中解决了新推荐时都会生成事件。

SES电子邮件发送事件
事件类型 说明

电子邮件已退回

收件人的邮件服务器永久拒绝电子邮件的硬退邮件。(仅当重试一段时间后SES无法发送电子邮件时,才会包括软退件。)

电子邮件已点击

收件人点击了电子邮件中的一个或多个链接。

已收到电子邮件投诉

电子邮件已成功传送到收件人的邮件服务器,但收件人将其标记为垃圾邮件。

电子邮件送达

SES已成功将电子邮件发送到收件人的邮件服务器。

电子邮件发送延迟

由于出现临时问题,无法将电子邮件发送到收件人的邮件服务器。例如,当收件人的收件箱已满,或者当接收电子邮件服务器遇到临时问题时,可能会发生传送延迟。

电子邮件已打开

收件人收到邮件并在其电子邮件客户端中将其打开。

电子邮件已拒绝

SES接受了这封电子邮件,但确定其中含有病毒,并且没有尝试将其传送到收件人的邮件服务器。

电子邮件渲染失败

由于模板渲染问题,电子邮件未发送。当模板数据丢失或模板参数与数据不匹配时,可能会发生此事件类型。(只有当您使用SendTemplatedEmailSendBulkTemplatedEmailAPI操作发送电子邮件时,才会发生此事件类型。)

电子邮件已发送

发送请求成功,SES将尝试将邮件传送到收件人的邮件服务器。(如果使用账户级别或全局封禁,仍SES会将其计为发送,但传送被禁止。)

电子邮件已订阅

电子邮件已成功送达,但收件人通过单击电子邮件标题或页脚List-Unsubscribe中的Unsubscribe链接更新了订阅首选项。

SES事件架构参考

来自 AWS 服务的所有事件都有一组公共字段,其中包含有关事件的元数据,例如作为事件来源的 AWS 服务、事件的生成时间、事件发生的账户和区域等。有关这些常规字段的定义,请参阅EventBridge 用户指南中的事件结构参考

此外,每个事件都有一个 detail 字段,其中包该特定事件专有的数据。下面的参考文献定义了各种SES事件的详细信息字段。

使用 EventBridge 来选择和管理SES事件时,记住以下几点很有用:

  • 来自的所有事件的source字段均设置SES为aws.ses

  • detail-type 字段指定事件类型。请参阅中的事件类型表SES事件

  • detail 字段包含该特定事件专有的数据。

    对于某些事件类型,例如 Virtual Deliverability Manager 的事件类型,详细信息字段是一个相当简单的数据字符串,由一组有限的静态值填充。相反,电子邮件发送事件的详细信息字段更为复杂,因为它可能由许多详细信息子字段组成,这些子字段是静态和动态值的组合,例如发送电子邮件的时间戳、收件人地址和许多其他电子邮件属性。

虚拟可交付性管理器 Advisor

以下架构参考定义了虚拟交付能力管理器顾问状态事件的特定字段。

所有事件架构(例如versionidaccount、和其他)中显示的常规字段的定义可在EventBridge 用户指南的事件结构参考中找到。sourcedetail-type字段包含在下面的参考文献中,因为它们包含SES事件的SES特定值。

source

标识生成事件的服务。对于SES事件,此值为aws.ses

detail-type

标识事件的类型。

该字段的值列在中的虚拟交付能力管理器顾问事件表中。SES事件

detail

一个包含事件相关信息的JSON对象。生成事件的服务决定该字段的内容。

此字段的值可以是:

  • DKIM verification is not enabled.

  • DKIM verification has failed.

  • DKIM signing key length is below 2048 bits.

  • DMARC configuration was not found.

  • DMARC configuration could not be parsed.

  • DKIM record was not found.

  • DKIM record is not aligned.

  • MAIL FROM record is not aligned.

  • SPF record was not found.

  • SPF record for Amazon SES was not found.

  • SPF all qualifier is missing.

  • An SPF configuration issue was found.

  • BIMI record not found or configured without default selector.

  • BIMI has malformed TXT record.

例如:虚拟可交付性管理器 Advisor 状态事件

以下是 Advisor Recommendation Status Open 事件类型的虚拟可交付性管理器 Advisor 状态事件示例。此示例中的详细事件值为SPF record was not found.

{ "version": "0", "id": "abcd9999-ef33-0123-90ab-abcdef666666", "detail-type": "Advisor Recommendation Status Open", "source": "aws.ses", "account": "012345678901", "time": "2023-11-15T17:00:59Z", "region": "us-east-1", "resources": [ "arn:aws:ses:us-east-1:012345678901:identity/vdm.events-publishing.cajun.syster-games.example.com" ], "detail": { "version": "1.0.0", "data": "SPF record was not found." } }

SES电子邮件发送状态架构

以下架构参考定义了SES电子邮件发送状态事件的特定字段。

所有事件架构(例如versionidaccount、和其他)中显示的常规字段的定义可在EventBridge 用户指南的事件结构参考中找到。sourcedetail-type字段包含在下面的参考文献中,因为它们包含SES事件的SES特定值。

source

标识生成事件的服务。对于SES事件,此值为aws.ses

detail-type

标识事件的类型。

此字段的值列在中的SES电子邮件发送事件表中SES事件

detail

一个包含事件相关信息的JSON对象。生成事件的服务决定该字段的内容。

此处无法列出此字段的所有可能值,因为它们由在任何给定时刻发送的每封唯一电子邮件生成的静态和动态值组成。但是,提供了一个示例,让您大致了解此字段可以包含的数据类型。使用 EventBridge 沙盒可以找到所有电子邮件发送事件类型的详细数据示例,请参阅在中指定示例事件 EventBridge

为SES电子邮件发送事件生成的详细数据示例Email Rendering Failed

..., "detail": { "eventType": "Rendering Failure", "mail": { "timestamp": "2018-01-22T18:43:06.197Z", "source": "sender@example.com", "sourceArn": "arn:aws:ses:us-east-1:123456789012:identity/sender@example.com", "sendingAccountId": "123456789012", "messageId": "EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000", "destination": ["recipient@example.com"], "headersTruncated": false, "tags": { "ses:configuration-set": ["ConfigSet"] } }, "failure": { "errorMessage": "Attribute 'attributeName' is not present in the rendering data.", "templateName": "MyTemplate" } }
例 示例:电子邮件发送状态事件

以下是该事件类型的完整电子邮件发送状态事件的示例Email Rendering Failed。此示例中的详细事件值是基于特定电子邮件的电子邮件发送事件的静态和动态值的组合。

{ "version": "0", "id": "12a18625-3328-fafd-2809-a5e16004f112", "detail-type": "Email Rendering Failed", "source": "aws.ses", "account": "123456789012", "time": "2023-07-17T16:48:05Z", "region": "us-east-1", "resources": ["arn:aws:ses:us-east-1:123456789012:identity/example.com"], "detail": { "eventType": "Rendering Failure", "mail": { "timestamp": "2018-01-22T18:43:06.197Z", "source": "sender@example.com", "sourceArn": "arn:aws:ses:us-east-1:123456789012:identity/sender@example.com", "sendingAccountId": "123456789012", "messageId": "EXAMPLE7c191be45-e9aedb9a-02f9-4d12-a87d-dd0099a07f8a-000000", "destination": ["recipient@example.com"], "headersTruncated": false, "tags": { "ses:configuration-set": ["ConfigSet"] } }, "failure": { "errorMessage": "Attribute 'attributeName' is not present in the rendering data.", "templateName": "MyTemplate" } } }

EventBridge 与SES事件一起使用

默认情况下,SES将事件发送到 EventBridge 默认事件总线。您可以在默认事件总线上创建规则,以识别要发送 EventBridge 到一个或多个指定目标的特定事件。每条规则都包含一个事件模式,该模式 EventBridge 用于在事件到达事件总线时进行匹配。如果事件与给定规则的事件模式匹配,则 EventBridge 会将该事件发送到规则中指定的目标。

在中 EventBridge,定义事件模式通常是创建新规则或编辑现有规则的更大过程的一部分。要了解如何创建 EventBridge 规则,请参阅EventBridge 用户指南中的创建对事件做出反应的 Amazon EventBridge 规则

通过使用中的沙盒功能 EventBridge,您可以快速定义事件模式并使用示例事件来确认模式与所需事件相匹配,而无需先创建或编辑规则。有关使用沙盒的详细说明,请参阅EventBridge 用户指南中的使用 EventBridge 沙盒测试事件模式

在 EventBridge 沙盒中指定一个SES示例事件

您可以为事件选择示例SES事件,以使用它们来测试您创建的事件模式。

在 EventBridge 沙盒中指定SES示例事件
  1. 打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/

  2. 在导航窗格中选择开发人员资源,然后选择沙盒,再在沙盒页面上选择事件模式选项卡。

  3. 对于事件来源,选择AWS 事件或 EventBridge 合作伙伴事件

  4. 示例事件部分中,为示例事件类型选择 AWS 事件

  5. 对于示例事件,请向下滚动到所需的事件,SES然后选择所需SES的事件。

    EventBridge 显示该事件类型的示例事件及其所有详细数据。

    然后,您可以使用此事件来测试您在事件模式部分创建的事件模式,或者将其用作创建自己的示例事件的基础,以进行下一节中介绍的模式测试。

为事件创建和测试SES事件模式

选择示例事件后(如上一节所述),就可以创建事件模式并使用示例事件来确保它与所需的事件相匹配。

创建和测试与 EventBridge 沙盒中的SES事件相匹配的事件模式
  1. 打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/

  2. 在导航窗格中选择开发人员资源,然后选择沙盒,再在沙盒页面上选择事件模式选项卡。

  3. 对于事件源,选择AWS 事件或 EventBridge 合作伙伴事件,然后选择要测试的示例事件,如上一节所述。

  4. 向下滚动到 “创建方法”,然后选择 “使用图案表单”。

  5. 事件模式部分中,为事件源选择 AWS 服务

  6. 在 “AWS 服务” 下,选择SES

  7. 事件类型中,选择要匹配SES的事件类型。

    EventBridge 显示与选定SES事件匹配的最小事件模式,由sourcedetail-type字段组成。

    在两个示例中,第一个事件模式与所有Advisor Recommendation Status Resolved事件匹配,在第二个示例中,匹配所有Email Bounced事件:

    { "source": ["aws.ses"], "detail-type": ["Advisor Recommendation Status Resolved"] }
    { "source": ["aws.ses"], "detail-type": ["Email Bounced"] }
  8. 要更改事件模式,请选择编辑模式,然后在JSON编辑器中进行更改。

    您也可以匹配一个或多个详细数据字段中的值。这包括为字段值指定多个可行值。

    在以下示例中,将详细信息字段添加到生成的最小事件模式中,其data字段值指定为DKIM record was not found,以便查找所有具有相同详细信息值的 Virtual Deliverability Manager 顾问事件:

    { "source": ["aws.ses"], "detail-type": ["Advisor Recommendation Status Resolved"], "detail": { "data": ["DKIM record was not found."] } }

    在此示例中,添加了详细信息子字段,以报告 2024-08-05noreply@example.com 发送的所有退回电子邮件所生成的事件。(此处使用前缀匹配作为内容过滤的一部分。 ):

    { "source": ["aws.ses"], "detail-type": ["Email Bounced"], "detail": { "mail": { "timestamp": [{ "prefix": "2024-08-05" }], "source": ["noreply@example.com"] } } }

    阅读EventBridge 用户指南中的事件模式很重要,它解释了您在JSON编辑器中输入的事件模式值必须用方括号括起来,[...]因为它被视为数组。此外还提供了有关如何构造高级事件模式的更多信息。

  9. 要测试您的事件模式是否与您在上面的示例事件窗格中指定的示例事件相匹配,请选择测试模式。如果匹配,则JSON编辑器底部将显示一个绿色横幅,“示例事件与事件模式匹配”

  10. 要对选择测试模式后的错误进行故障排除,请执行以下操作:

    • 如果存在JSON相关错误,则消息将指出原因,例如 “事件模式无效。原因:“数据” 必须是第 5 行、第 14 列处的对象或数组。要解决这个问题,请用方括号将第 5 行的值括起来[...]

    • 如果示例事件中的值与您的事件模式之间存在差异,则消息将是 “样本事件与事件模式不匹配”。这意味着您要测试的一个或多个值与样本事件生成器生成的示例值不同。要解决此问题,请继续执行其余步骤。

  11. 要更改样本事件中的样本值以成功测试您的事件模式,请在样本事件窗格中,选择JSON编辑器下方的复制

  12. 选择编辑器上方的 “输入我自己的样本事件类型” 旁边的单选按钮。

  13. 将示例事件粘贴到JSON编辑器中,对于您在事件模式中使用的任何字段,请替换该字段的值以匹配您在事件模式中指定的值。

  14. 向下滚动到事件模式窗格,然后再次选择测试模式。如果所有值都输入正确且匹配,则JSON编辑器底部将显示一个绿色横幅,“示例事件与事件模式匹配”

其他 EventBridge 资源

有关如何使用 EventBridge 处理和管理事件的更多信息,请参阅 Amazon EventBridge 用户指南中的以下主题。

  • 有关事件总线工作原理的详细信息,请参阅 Amazon EventBridge 事件总线

  • 有关事件结构的信息,请参阅 Events

  • 有关构造事件模式 EventBridge 以便在将事件与规则进行匹配时使用的信息,请参阅事件模式

  • 有关创建规则以指定 EventBridge 处理哪些事件的信息,请参阅规则

  • 有关指定向哪些服务或其他目标 EventBridge 发送匹配事件的信息,请参阅 Targets