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

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon 監控SES事件 EventBridge

EventBridge 是一種使用事件將應用程式元件連接在一起的無伺服器服務,讓您更輕鬆地建置可擴充的事件驅動型應用程式。事件驅動架構是一種建置鬆耦合軟體系統的方式,透過發出和回應事件來協作。事件是JSON格式化的訊息,通常代表資源或環境或其他管理事件中的變更。

某些SES功能會產生並將您在建立事件目標時定義的事件傳送至 EventBridge 預設事件匯流排。事件匯流排是接收事件,並將事件傳遞至零個或多個目的地或目標的路由器。與事件匯流排建立關聯的規則會在事件到達時評估事件。每項規則都會檢查事件是否與規則模式相符。如果事件不符合,則會將事件 EventBridge 傳送至指定的目標。

SES EventBridge 當圖徵具有狀態變更或狀態更新時,將事件傳送至。您可以使用 EventBridge 規則將事件路由到您定義的目標。這些事件會依最佳作法交付,並且可以不按順序交付。

SES事件

下列事件由SES功能產生,並傳送至中的預設事件匯流排 EventBridge。如需詳細資訊,包括每個事件類型的詳細資料,請參閱SES事件:架構參考

虛擬交付能力經理顧問活動
事件類型 描述

建議程式建議狀態開啟

每當虛擬可交付性管理員建議程式中開啟新建議時,系統都會產生事件。

已解決建議程式建議狀態

每當虛擬可交付性管理員建議程式中解決新建議時,系統都會產生事件。

SES電郵傳送事件
事件類型 描述

電子郵件被退回

收件人的郵件服務器永久拒絕了電子郵件的硬退信。只有在重試一段時間後SES無法傳送電子郵件時,才會包含軟退件。)

電子郵件點

收件者按一下電子郵件中的一或多個連結。

收到電郵投訴

電子郵件已成功傳送至收件者的郵件伺服器,但收件者將其標示為垃圾郵件。

Email Delivered (電子郵件已交付)

SES成功地將電子郵件傳送到收件者的郵件伺服器。

電郵傳送延遲

由於發生暫時性問題,電子郵件無法傳送至收件者的郵件伺服器。例如,當收件人的收件匣已滿時,或接收電子郵件伺服器暫時發生問題時,可能會發生傳遞延遲。

電郵已開啟

收件者收到郵件,並在其電子郵件用戶端中開啟郵件。

電郵被拒絕

SES已接受電子郵件,但判斷電子郵件含有病毒,並未嘗試傳送至收件者的郵件伺服器。

電郵轉譯失敗

因為範本轉譯問題,電子郵件並未傳送。範本資料遺失或是範本參數與資料不相符時,可能會出現此事件類型。(只有當您使用SendTemplatedEmailSendBulkTemplatedEmailAPI作業傳送電子郵件時,才會發生此事件類型。)

電郵已發送

傳送要求已成功,並SES會嘗試將郵件傳遞至收件者的郵件伺服器。(如果使用帳戶層級或全域隱藏,仍SES會將其計為傳送,但會抑制傳送。)

已訂閱電郵

電子郵件已成功傳送,但收件者按一下電子郵件標頭或頁尾List-Unsubscribe中的Unsubscribe連結,以更新訂閱偏好設定。

SES事件:架構參考

來自 AWS 服務的所有事件都有一組共同的欄位,其中包含事件的相關中繼資料,例如做為事件來源的 AWS 服務、產生事件的時間、發生事件的帳戶和地區,以及其他。如需這些一般欄位的定義,請參閱EventBridge 使用指南中的事件結構參考

此外,每個事件都有一個 detail 欄位,其中包含該特定事件的特定資料。下面的參考定義了各種SES事件的詳細信息字段。

使用 EventBridge 來選取和管理SES事件時,請牢記下列事項:

  • 所有來源事件的source欄位SES都設定為aws.ses

  • detail-type 欄位指定事件類型。請參閱中的事件類型表SES事件

  • detail 欄位包含該特定事件的特定資料。

    對於某些事件類型,例如虛擬交付能力管理員的事件類型,詳細資料欄位是相當簡單的資料字串,會從有限的靜態值集填入。相反,電子郵件發送事件的詳細信息字段更複雜,因為它可以包含許多詳細信息子字段,這些子字段是靜態和動態值的組合,例如發送電子郵件時的時間戳,收件人地址以及許多其他電子郵件屬性。

虛擬可交付性管理員建議程式狀態結構描述

下列結構描述參考定義「虛擬交付能力管理員」建議程式狀態事件特定的欄位。

您可以在EventBridge 使用者指南的「事件結構參考」中找到出現在所有事件結構描述中的一般欄位 (例如account、、及其他) 的定義。version idsourcedetail-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 Recommendation Status Open 的虛擬可交付性管理員建議程式狀態事件範例。此範例中的詳細事件值為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電子郵件傳送狀態事件的欄位。

您可以在EventBridge 使用者指南的「事件結構參考」中找到出現在所有事件結構描述中的一般欄位 (例如account、、及其他) 的定義。version idsourcedetail-type欄位包含在以下參考中,因為它們包含SES事件的SES特定值。

source

識別產生事件的服務。對於SES事件,此值為aws.ses

detail-type

識別事件的類型。

此欄位的值會列在中的SES電子郵件傳送事件表格中SES事件

detail

包含事JSON件相關資訊的物件。產生事件的服務會決定此欄位的內容。

無法在此列出此欄位的所有可能值,因為它們是由靜態和動態值組成,這些值是由在任何給定時刻傳送的每個唯一電子郵件所產生的。但是,提供了一個示例,讓您了解此字段可以包含的類型數據。您可以使用 EventBridge Sandbox 找到所有電子郵件傳送事件類型的詳細資料範例,請參閱在中指定範例事件 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事件模式

選取範例事件 (如上一節所述) 之後,您可以建立事件模式,並使用範例事件來確定事件符合所需的事件。

若要建立並測試符合SES EventBridge 沙箱中事件的事件模式
  1. 在打開 Amazon EventBridge 控制台https://console.aws.amazon.com/events/

  2. 在導覽窗格中,選擇開發人員資源,然後選取沙盒,然後在沙盒頁面上選擇事件模式標籤。

  3. 對於事件來源,請選擇AWS 事件或 EventBridge 夥伴事件,然後選取您要測試的範例事件,如上一節所述。

  4. 向下捲動至「建立方法」,然後選擇「使用樣式表單」。

  5. 事件模式區段中,針對事件來源,選擇 AWS 服務

  6. 在「AWS 服務」下,選取SES

  7. 事件類型中,選取您要比對的SES事件類型。

    EventBridge 顯示符合所SES選事件的最小事件模式 (包detail-typesource和欄位)。

    在這兩個例子中,第一個事件模式匹配所有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,以便尋找具有相同詳細資料值的所有「虛擬交付能力管理員」建議程式事件:

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

    在此示例中,詳細信息子字段添加到報告由所有在 2024-08- 05 上從 noreply@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 行的值。

    • 如果 Sample 事件中的值與您的事件模式之間存在差異,則訊息將是 「範例事件與事件模式不符」。這表示您要測試的一或多個值與 Sample 事件產生器產生的範例值不同。若要解決此問題,請繼續執行其餘步驟。

  11. 若要變更 Sample 事件中的範例值以成功測試您的事件模式,請在 [範例] 事件窗格中,選取JSON編輯器下的 [複製]。

  12. 選取編輯器上方的範例事件類型輸入我自己的選項按鈕。

  13. 將示例事件粘貼到JSON編輯器中,對於您在事件模式中使用的任何字段,請替換相同字段的值以匹配您在事件模式中指定的值。

  14. 向下捲動至 [事件模式] 窗格,然後再次選取 [測試模式]。如果輸入正確且符合所有值,JSON編輯器底部會顯示綠色橫幅,「範例事件符合事件模式」

其他 EventBridge 資源

如需有關如何使用處理和管理事件的詳細資訊,請參閱 Amazon 使用 EventBridge EventBridge 者指南中的以下主題。

  • 有關事件匯流排如何運作的詳細資訊,請參閱 Amazon EventBridge 事件匯流排

  • 如需有關事件結構的資訊,請參閱事件

  • 如需建構事件模式以便在符合規則時 EventBridge 使用的相關資訊,請參閱事件模式

  • 如需建立規則以指定 EventBridge 處理哪些事件的相關資訊,請參閱規則

  • 如需指定 EventBridge 將相符事件傳送至哪些服務或其他目的地的資訊,請參閱目標