自動暫停整個 Amazon SES 帳戶的電子郵件傳送功能 - Amazon Simple Email Service

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

自動暫停整個 Amazon SES 帳戶的電子郵件傳送功能

本節中的程序說明設定 Amazon SES、Amazon SNS、Amazon,以及 AWS Lambda 在單一 AWS 區域中自動暫停 Amazon SES 帳戶的電子郵件傳送的步驟。 CloudWatch如果您從多個區域傳送電子郵件,請在您想要採取此解決方案的每個區域內重複操作本節的程序。

第 1 部分:建立 IAM 角色

設定電子郵件傳送自動暫停的第一步為建立可執行 UpdateAccountSendingEnabled API 作業的 IAM 角色。

建立 IAM 角色
  1. 在以下網址開啟 IAM 主控台:https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,選擇角色

  3. 選擇 Create Role (建立角色)。

  4. 選取受信任實體頁面上,針對受信任實體的類型選擇 AWS 服務

  5. Use case (使用案例) 下,選擇 Lambda,然後選擇 Next (下一步)

  6. Add permissions (新增許可) 頁面上,選擇以下政策:

    • AWSLambdaBasicExecutionRole

    • 亞馬遜 FullAccess

    提示

    使用 Permission policies (許可政策) 下方的搜尋方塊快速查找這些政策,但請注意,在搜尋並選擇第一個政策後,必須選擇 Clear filters (清除篩選條件),然後才能再搜尋並選擇第二個政策。

    然後選擇下一步

  7. Name, review, and create (命名、檢閱和建立) 頁面,在 Role details (角色詳細資訊) 下方的 Role name (角色名稱) 欄位中,為政策輸入一個有意義的名稱。

  8. 確認您選取的兩個政策都有列在 Permissions policy summary (許可政策摘要) 表格中,然後選擇 Create role (建立角色)

第 2 部分:建立 Lambda 函數

建立 IAM 角色後,即可建立 Lambda 函數,用於暫停帳戶的電子郵件傳送功能。

建立 Lambda 函數
  1. 請在以下位置開啟 AWS Lambda 主控台。 https://console.aws.amazon.com/lambda/

  2. 使用區域選擇工具來選擇您要部署此 Lambda 函數的區域。

    注意

    此功能只會在您在此步驟中選取的 AWS 地區中暫停電子郵件傳送。如果您從超過一個區域傳送電子郵件,請在您想要自動暫停由件傳送的每個區域內重複操作本節的程序。

  3. 選擇建立函數

  4. Create function (建立函式) 下,選擇 Author from scratch (從頭開始撰寫)

  5. Basic information (基本資訊) 下,完成下列步驟:

    • 至於 Function name (函數名稱),輸入 Lambda 函數的名稱。

    • 針對執行期,選擇 Node.js 18x (或選擇清單中目前提供的版本)。

    • 至於 Architecture (架構),保留預先選取的預設值 x86_64

    • 在 [Permissions (許可)] 下方,展開 Change default execution role (變更預設執行角色),然後選擇 se an existing role (使用現有角色)

    • Existing role (現有角色) 清單方塊中按一下,然後選擇您在第 1 部分:建立 IAM 角色中建立的 IAM 角色。

    然後,請選擇 Create function (建立函數)

  6. 在程式碼編輯器的 Code source (程式碼來源) 下,貼上下列程式碼:

    'use strict'; const { SES } = require("@aws-sdk/client-ses") // Create a new SES object. var ses = new SES({}); // Specify the parameters for this operation. In this case, there is only one // parameter to pass: the Enabled parameter, with a value of false // (Enabled = false disables email sending, Enabled = true enables it). var params = { Enabled: false }; exports.handler = (event, context, callback) => { // Pause sending for your entire SES account ses.updateAccountSendingEnabled(params, function(err, data) { if(err) { console.log(err.message); } else { console.log(data); } }); };

    然後選擇 Deploy (部署)

  7. 選擇 測試。若出現 Configure test event (設定測試事件) 視窗,請在 Event name (事件名稱) 欄位中輸入名稱,然後選擇 Save (儲存)

  8. 展開 Test (測試) 下拉式方塊,選取您剛建立的事件的名稱,然後選擇 Test (測試)

  9. Execution results (執行結果) 索引標籤隨即會顯示 - 就在其右下方,確保已顯示 Status: Succeeded。如果函數無法執行,請執行下列動作:

    • 請確認您在 第 1 部分:建立 IAM 角色 中建立的 IAM 角色包含正確政策。

    • 確定 Lambda 函數中的程式碼不包含任何錯誤。Lambda 程式碼編輯工具會自動將語法錯誤和其他潛在的問題反白。

第 3 部分:為帳戶重新啟用電子郵件傳送

第 2 部分:建立 Lambda 函數 中測試 Lambda 函數的副作用為 Amazon SES 帳戶的電子郵件傳送功能將暫停。在大多數情況下,您不想暫停傳送帳戶,直到 CloudWatch 警示觸發為止。

本節中的程序用於將為 Amazon SES 帳戶重新啟用電子郵件傳送功能。若要完成這些程序,您必須安裝並設定 AWS Command Line Interface。如需詳細資訊,請參閱 AWS Command Line Interface 使用者指南

若要重新啟用電子郵件傳送
  1. 在命令列輸入以下命令,來重新啟用您帳戶的電子郵件傳送。以您要重新啟動電子郵件傳送的區域名稱來取代 sending_region

    aws ses update-account-sending-enabled --enabled --region sending_region
  2. 在命令列輸入以下命令,來檢查您帳戶的電子郵件傳送狀態:

    aws ses get-account-sending-enabled --region sending_region

    如果您看到以下輸出,則代表您已成功重新啟用帳戶的電子郵件傳送:

    { "Enabled": true }

第 4 部分:建立 Amazon SNS 主題與訂閱

若 CloudWatch 要在觸發警示時執行 Lambda 函數,您必須先建立 Amazon SNS 主題並向其訂閱 Lambda 函數。

建立 Amazon SNS 主題並為其訂閱該 Lambda 函數
  1. https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

  2. 按照《Amazon Simple Notification Service 開發人員指南》中的步驟來建立主題

    1. Type (類型) 必須是 Standard (標準) (而非 FIFO)。

  3. 按照《Amazon Simple Notification Service 開發人員指南》中的步驟來訂閱主題

    1. 針對 Protocol (通訊協定),選擇 AWS Lambda

    2. 針對 Endpoint (端點),選擇您在「第 2 部分:建立 Lambda 函數」中建立的 Lambda 函數。

第 5 部分:建立 CloudWatch 警示

本節包含在中建立警示的程序, CloudWatch 該警示會在測量結果達到特定臨界值時觸發。觸發警示時,它便會將通知遞送到您在「第 4 部分:建立 Amazon SNS 主題與訂閱」中建立的 Amazon SNS 主題,接著執行您在「第 2 部分:建立 Lambda 函數」中建立的 Lambda 函數。

建立 CloudWatch 鬧鐘
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 使用區域選擇工具來選擇您要自動暫停郵件傳送的區域。

  3. 在導覽窗格中,選擇 Alarms (警示)。

  4. 選擇建立警示

  5. Create Alarm (建立警示) 視窗的 SES Metrics (SES 指標) 下,選擇 Account Metrics (帳戶指標)

  6. Metric Name (指標名稱) 下,選擇下列其中一個選項:

    • 聲譽。 BounceRate— 如果您想在帳戶的整體硬跳出率超過您定義的閾值時暫停帳戶的電子郵件發送,請選擇此指標。

    • 聲譽。 ComplaintRate— 如果您想在帳戶的整體投訴率超過您定義的閾值時暫停發送電子郵件,請選擇此指標。

    選擇下一步

  7. 請完成下列步驟:

    • Alarm Threshold (警示閾值) 下,針對 Name (名稱),輸入警示的名稱。

    • 在「任何時候:聲譽」。 BounceRate或者每當:聲譽。 ComplaintRate」下方,指定造成警示觸發的臨界值。

      注意

      如果您的跳出率超過 5%,或者您的投訴率超過 0.1%,您的帳戶將自動進行審核。當您指定導致 CloudWatch 警報觸發的退信率或投訴率時,我們建議您使用低於這些比率的值,以防止您的帳戶被審查。

    • 動作下的 每當此警示,選擇狀態為警示。針對 Send notification to (傳送通知至),選擇您在「第 4 部分:建立 Amazon SNS 主題與訂閱」中建立的 Amazon SNS 主題。

    選擇建立警示

第 6 部分:測試解決方案

您現在可以測試警示,以確認警示可在進入 ALARM 狀態時執行 Lambda 函數。您可以使用 SetAlarmState API 操作來暫時變更警示狀態。

本節中的程序為選用,但我們建議您完成程序,以確保正確設定完整的解決方案。

  1. 在命令列輸入以下命令,來檢查您帳戶的電子郵件傳送狀態。以區域名稱來取代 region

    aws ses get-account-sending-enabled --region region

    如果帳戶的傳送已啟用,會看到以下輸出:

    { "Enabled": true }
  2. 在命令列輸入下列命令,以暫時將警示狀態變更為 ALARMaws cloudwatch set-alarm-state --alarm-name MyAlarm --state-value ALARM --state-reason "Testing execution of Lambda function" --region region

    使用您MyAlarm在中建立的鬧鐘名稱取代上述命令第 5 部分:建立 CloudWatch 警示,並將區域取代為您要在其中自動暫停電子郵件傳送的地區。

    注意

    當您執行此命令時,警示狀態將從 OK 切換為 ALARM,然後在數秒後回到 OK。您可以在 CloudWatch 控制台中警報的「歷史記錄」標籤上或使用DescribeAlarmHistory操作來檢視這些狀態變更。

  3. 在命令列輸入以下命令,來檢查您帳戶的電子郵件傳送狀態。

    aws ses get-account-sending-enabled --region region

    如果 Lambda 函數成功執行,您會看到以下輸出:

    { "Enabled": false }
  4. 完成 第 3 部分:為帳戶重新啟用電子郵件傳送 中的步驟以重新啟用帳戶的電子郵件傳送。