

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

# 使用 Amazon EventBridge 監控 SES 事件
<a name="monitoring-eventbridge"></a>

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

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

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

**Topics**
+ [SES 事件](#supported-events)
+ [SES 事件結構描述參考](#eventbridge-events)
+ [搭配 SES 事件使用 EventBridge](#eventbridge-enable-event-notifications)
+ [額外 EventBridge 資源](#eventbridge-additonal-resources)

## SES 事件
<a name="supported-events"></a>

SES 功能會產生下列事件，並傳送至 EventBridge 中的預設事件匯流排。如需詳細資訊，包括每個事件類型的詳細資訊，請參閱 [SES 事件結構描述參考](#eventbridge-events)。


**虛擬可交付性管理員建議程式事件**  

| 事件類型 | Description | 
| --- | --- | 
|  建議程式建議狀態開啟  |  每當虛擬可交付性管理員建議程式中開啟新建議時，系統都會產生事件。  | 
|  已解決建議程式建議狀態  |  每當虛擬可交付性管理員建議程式中解決新建議時，系統都會產生事件。  | 


**SES 電子郵件傳送事件**  

| 事件類型 | Description | 
| --- | --- | 
|  電子郵件已退信  |  *硬退信*，收件人的郵件伺服器永久拒絕電子郵件。(只有在 SES 重試一段時間之後仍無法遞送電子郵件時，才會包含*軟退信*)。  | 
|  按一下的電子郵件  |  收件人按一下電子郵件中的一或多個連結。  | 
|  收到的電子郵件投訴  |  電子郵件已成功傳送到收件人的郵件伺服器，但收件人將其標記為垃圾郵件。  | 
|  Email Delivered (電子郵件已交付)  |  SES 成功將電子郵件傳送到收件人的郵件伺服器。  | 
|  電子郵件交付延遲  |  由於發生暫時性問題，電子郵件無法交付到收件人的郵件伺服器。例如，當收件人的收件匣已滿時，或接收電子郵件伺服器暫時發生問題時，可能會發生傳遞延遲。  | 
|  電子郵件已開啟  |  收件人收到訊息，並在其電子郵件用戶端中開啟訊息。  | 
|  電子郵件遭拒  |  SES 接受電子郵件，但判斷電子郵件包含病毒，且未嘗試將其交付到收件人的郵件伺服器。  | 
|  電子郵件轉譯失敗  |  由於範本轉譯問題，電子郵件未傳送。範本資料遺失或是範本參數與資料不相符時，可能會出現此事件類型。(只有使用 [https://docs.aws.amazon.com/ses/latest/APIReference/API_SendTemplatedEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendTemplatedEmail.html) 或 [https://docs.aws.amazon.com/ses/latest/APIReference/API_SendBulkTemplatedEmail.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendBulkTemplatedEmail.html) API 操作來傳送電子郵件時，才會出現此事件類型。)  | 
|  已傳送的電子郵件  |  傳送請求成功，SES 會嘗試將訊息傳遞到收件人的郵件伺服器。(如果正在使用帳戶層級或全域禁止，SES 仍會將其視為傳送，但會禁止遞送)。  | 
|  已訂閱的電子郵件  |  電子郵件已成功交付，但收件人按一下`List-Unsubscribe`電子郵件標頭或頁尾`Unsubscribe`的連結來更新訂閱偏好設定。  | 

## SES 事件結構描述參考
<a name="eventbridge-events"></a>

 AWS 服務中的所有事件都有一組通用的欄位，其中包含事件的中繼資料，例如事件來源 AWS 的服務、事件產生的時間、事件發生的帳戶和區域，以及其他。如需這些一般欄位的定義，請參閱《EventBridge 使用者指南》**中的[事件結構描述參考](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html)。

此外，每個事件都有一個 `detail` 欄位，其中包含該特定事件的特定資料。以下參考定義了各種 SES 事件的詳細資訊欄位。

使用 EventBridge 選取並管理 SES 事件時，請務必記住下列事項：
+ SES 中所有事件的 `source` 欄位都會設定為 `aws.ses`。
+ `detail-type` 欄位指定事件類型。請參閱 中的事件類型資料表[SES 事件](#supported-events)。
+ `detail` 欄位包含該特定事件的特定資料。

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

**Topics**
+ [虛擬可交付性管理員建議程式狀態結構描述](#schema-resource-status-event-vdm)
+ [SES 電子郵件傳送狀態結構描述](#schema-resource-status-event-email-sending)

### 虛擬可交付性管理員建議程式狀態結構描述
<a name="schema-resource-status-event-vdm"></a>

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

您可在《EventBridge 使用者指南》**中的[事件結構參考](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html)中，找到出現在所有事件結構描述 (例如 `version`、`id`、`account` 等等) 中的一般欄位定義。以下參考中包括欄位 `source` 和 `detail-type`，因為其包含 SES 事件的 SES 特定值。

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

`detail-type`  
識別事件的類型。  
此欄位的值會列在 的*虛擬可交付性管理員建議程式事件*表格中[SES 事件](#supported-events)。

`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.`

**Example 範例：虛擬可交付性管理員建議程式狀態事件**  <a name="schema-resource-status-event-vdm.example"></a>
以下是事件類型 `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 電子郵件傳送狀態結構描述
<a name="schema-resource-status-event-email-sending"></a>

下列結構描述參考會定義 SES 電子郵件傳送狀態事件的特定欄位。

您可在《EventBridge 使用者指南》**中的[事件結構參考](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html)中，找到出現在所有事件結構描述 (例如 `version`、`id`、`account` 等等) 中的一般欄位定義。以下參考中包括欄位 `source` 和 `detail-type`，因為其包含 SES 事件的 SES 特定值。

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

`detail-type`  
識別事件的類型。  
此欄位的值會列在 的 *SES 電子郵件傳送事件*表格中[SES 事件](#supported-events)。

`detail`  
包含事件相關資訊的 JSON 物件。產生事件的服務會決定此欄位的內容。  
此欄位的所有可能值都無法列在此處，因為它們是由靜態和動態值組成，這些值是由在任何指定時間傳送的每個唯一電子郵件所產生的。不過，提供一個範例，讓您了解此欄位可包含的類型資料。*您可以使用 EventBridge 沙盒找到所有電子郵件傳送事件類型的詳細資訊範例，請參閱 [在 EventBridge 中指定範例事件](#event-pattern-sandbox-sample)。*  
為 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"
    }
  }
```

**Example 範例：電子郵件傳送狀態事件**  <a name="schema-resource-status-event-email-sending.example"></a>
以下是事件類型 的完整電子郵件傳送狀態事件範例`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"
    }
  }
}
```

## 搭配 SES 事件使用 EventBridge
<a name="eventbridge-enable-event-notifications"></a>

依預設，SES 會將事件傳送至 EventBridge 預設事件匯流排。您可在預設事件匯流排上建立規則，以識別 EventBridge 要傳送至一個或多個指定目標的特定事件。每個規則都包含一個*事件模式*，EventBridge 會在事件到達事件匯流排時，使用該模式來比對事件。如果事件與指定規則的事件模式相符，則 EventBridge 會將事件傳送至規則中指定的目標。

在 EventBridge 中，定義事件模式通常是建立新規則或編輯現有規則之較大程序的一部分。若要了解如何建立 EventBridge 規則，請參閱《[EventBridge 使用者指南》中的建立對事件做出反應的 Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) *EventBridge *規則。

透過在 EventBridge 中使用沙盒功能，您可以快速定義事件模式，並使用範例事件來確認模式符合所需的事件，而無需先建立或編輯規則。如需使用沙盒的詳細指示，請參閱《EventBridge 使用者指南》[https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-pattern-sandbox.html](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-pattern-sandbox.html)中的*使用 EventBridge 沙盒測試事件模式*。

### 在 EventBridge 沙盒中指定 SES 範例事件
<a name="event-pattern-sandbox-sample"></a>

您可為 SES 事件選取範例事件，以在測試您建立的事件模式時使用這些事件。

**在 EventBridge 沙盒中指定 SES 範例事件**

1. 前往 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 開啟 Amazon EventBridge 主控台。

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

1. 在**事件來源**欄位中，選擇 **AWS 事件或 EventBridge 合作夥伴事件**。

1. 在**範例事件**區段中，針對**範例事件類型**，選取 **AWS 事件**。

1. 針對**範例事件**，向下捲動至 **SES**，然後選取所需的 SES 事件。

   EventBridge 會顯示事件類型的範例事件及其所有詳細資訊。

   然後，您可以使用此事件來測試您在事件模式區段中建立**的事件模式**，或使用它做為建立自己的範例事件的基礎，以進行下一節涵蓋的模式測試。

### 建立並測試 SES 事件的事件模式
<a name="event-pattern-sandbox"></a>

選取範例事件後，如上一節所述，您可以建立事件模式，並使用範例事件來確保事件符合需求。

**建立並測試與 EventBridge 沙盒中 SES 事件相符的事件模式**

1. 前往 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) 開啟 Amazon EventBridge 主控台。

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

1. 針對**事件來源**，選擇**AWS 事件或 EventBridge 合作夥伴事件**，然後選取您要測試的範例事件，如上一節所述。

1. 向下捲動至**建立方法**，然後選擇**使用模式表單**。

1. 在**事件模式**區段中，針對**事件來源**，選擇 **AWS 服務**。

1. 在**AWS 服務**下，選取 **SES**。

1. 針對**事件類型**，選取您想要比對的 SES 事件類型。

   EventBridge 會顯示與所選 SES 事件相符的最小事件模式 (由 `source` 和 `detail-type` 組成)。

   在這兩個範例中，第一個事件模式符合所有`Advisor Recommendation Status Resolved`事件，而在第二個事件中符合所有`Email Bounced`事件：

   ```
   {
     "source": ["aws.ses"],
     "detail-type": ["Advisor Recommendation Status Resolved"]
   }
   ```

   ```
   {
     "source": ["aws.ses"],
     "detail-type": ["Email Bounced"]
   }
   ```

1. 若要變更事件模式，請選取**編輯模式**，然後在 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* 傳送的所有退信電子郵件所產生的事件。（這裡使用字首比對做為[內容篩選](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html)的一部分。)：

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

   請務必閱讀 *EventBridge 使用者指南*中的[事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)，說明您在 JSON 編輯器中輸入的事件模式值必須被方括號包圍，`[...]`因為它被視為陣列。也會提供如何建構進階事件模式的這項資訊及更多資訊。

1. 若要測試您的事件模式是否符合您在上述範例事件窗格中指定的**範例事件**，請選取**測試模式**。如果相符，則 JSON 編輯器底部的綠色橫幅會顯示*「範例事件符合事件模式」*。

1. 若要在選取**測試模式**之後對錯誤進行疑難排解：
   + 如果有 JSON 相關錯誤，訊息會指出原因，例如*「事件模式無效。原因：「資料」必須是 物件或列中的陣列：5，欄：14」*。若要修正此問題，請使用方括號 括住第 5 行的值`[...]`。
   + 如果*範例事件*中的值與*事件模式*之間存在差異，則訊息將是*「範例事件不符合事件模式」*。這表示您要測試的一或多個值與*範例事件*產生器所產生的範例值不同。若要修正此問題，請繼續執行剩餘的步驟。

1. 若要變更*範例事件*中的範例值，以便成功測試您的*事件模式*，請在**範例事件**窗格中，選取 JSON 編輯器下的**複製**。

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

1. 將範例事件貼到 JSON 編輯器，並針對您在事件模式中使用的任何欄位，取代該相同欄位的值，以符合您在事件模式中指定的值。

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

## 額外 EventBridge 資源
<a name="eventbridge-additonal-resources"></a>

如需有關如何使用 EventBridge 處理和管理事件的詳細資訊，請參閱[《Amazon EventBridge 使用者指南》**](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)中的下列主題。
+ 如需事件匯流排如何運作的詳細資訊，請參閱 [Amazon EventBridge 事件匯流排](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)。
+ 如需有關事件結構的資訊，請參閱[事件](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)
+ 如需建構 EventBridge 事件模式，以便在依規則比對事件時進行使用的相關資訊，請參閱[事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [如需建立規則以指定 EventBridge 處理哪些事件的相關資訊，請參閱規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)
+ 如需指定 EventBridge 將相符事件傳送至哪些服務或其他目的地的相關資訊，請參閱[目標](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html)