本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自動暫停組態設定的電子郵件傳送
您可以設定 Amazon SES 匯出使用特定組態集傳送至 Amazon 之電子郵件特有的評價指標 CloudWatch。然後,您可以使用這些指標來建立這些組態集專屬的 CloudWatch 警示。當這些警示超過特定閾值時,您可以自動暫停使用指定組態集的電子郵件傳送,而不會影響 Amazon SES帳戶的整體電子郵件傳送功能。
注意
本節所述的解決方案會暫停單一 AWS 區域中特定組態集的電子郵件傳送。如果您從多個區域傳送電子郵件,請在您想要採取此解決方案的每個區域內重複操作本節的程序。
本節主題:
第 1 部分:啟用組態設定的評價指標報告
您必須先啟用組態集的評價指標匯出,才能設定 Amazon SES自動暫停組態設定的電子郵件傳送。
若要啟用組態設定的退信與投訴指標匯出,請完成 檢視和匯出評價指標 中的步驟。
第 2 部分:建立 IAM 角色
設定自動暫停電子郵件傳送的第一步是建立可執行UpdateConfigurationSetSendingEnabled
API操作IAM的角色。
建立 IAM 角色
開啟位於 IAM 的 https://console.aws.amazon.com/iam/
主控台。 -
在導覽窗格中,選擇 Roles (角色)。
-
選擇 Create Role (建立角色)。
-
在 Select type of trusted entity (選取信任的實體類型) 下,選擇 AWS service ( 服務)。
-
在 Choose the service that will use this role (選擇將使用此角色的服務) 下,選擇 Lambda (Lambda)。選擇 Next: Permissions (下一步:許可)。
-
在 Attach permissions policies (連接許可政策) 頁面上,選擇下列政策:
-
AWS Lambda BasicExecutionRole
-
mazonSESFull存取 (我們建議您使用根據您的需求量身打造的自訂角色,其中包含呼叫 的許可
UpdateConfigurationSetSendingEnabled
。)
提示
使用政策清單上方的搜尋方塊清單來快速尋找這些政策。
選擇下一步:檢閱。
-
-
在 Review (檢閱) 頁面上,針對 Name (名稱),輸入該角色名稱。選擇建立角色。
第 3 部分:建立 Lambda 函數
建立IAM角色之後,您可以建立 Lambda 函數,暫停組態設定的電子郵件傳送。
建立 Lambda 函數
在 開啟 AWS Lambda 主控台https://console.aws.amazon.com/lambda/
。 -
使用區域選擇工具來選擇您要部署此 Lambda 函數的區域。
注意
此函數只適用於暫停您在此步驟中所選之 AWS 區域內的組態設定電子郵件傳送。如果您從超過一個區域傳送電子郵件,請在您想要自動暫停由件傳送的每個區域內重複操作本節的程序。
-
選擇建立函數。
-
在 Create function (建立函式) 下,選擇 Author from scratch (從頭開始撰寫)。
-
在 Author from scratch (從頭開始撰寫) 下,完成以下步驟:
-
在 Name (名稱) 中,輸入 Lambda 函數的名稱。
-
至於 Runtime (執行時間),選擇 Node.js 14 (或選擇清單中目前提供的版本)。
-
在 Role (角色) 中,選擇 Choose an existing role (選擇現有的角色)。
-
針對 Existing role (現有角色),選擇您在 第 2 部分:建立 IAM 角色 中建立的 IAM 角色。
選擇建立函數。
-
-
在程式碼編輯器的 Function code (函數程式碼) 下,貼上下列程式碼:
'use strict'; import { SES } from 'aws-sdk'; const ses = new SES(); const configSet = 'CONFIG_SET_NAME_HERE'; const params = { ConfigurationSetName: configSet, Enabled: false }; export const handler = async (event) => { try { const data = await ses.updateConfigurationSetSendingEnabled(params).promise(); console.log('Configuration Set Update:', data); return { statusCode: 200, body: JSON.stringify({ message: 'Successfully paused email sending for configuration set.', data }), }; } catch (err) { console.error('Error:', err.message); return { statusCode: 500, body: JSON.stringify({ message: 'Failed to pause email sending for configuration set.', error: err.message }), }; } };
將上述程式碼
ConfigSet
中的 取代為組態集的名稱。選擇 Save (儲存)。 -
選擇測試。若出現 Configure test event (設定測試事件) 視窗,請在 Event name (事件名稱) 欄位中輸入名稱,然後選擇 Create (建立)。
-
確認頁面頂端的通知列顯示
Execution result: succeeded
。如果函數無法執行,請執行下列動作:-
請確認您在第 2 部分:建立 IAM 角色中建立的 IAM 角色包含正確政策。
-
確定 Lambda 函數中的程式碼不包含任何錯誤。Lambda 程式碼編輯工具會自動將語法錯誤和其他潛在的問題反白。
-
第 4 部分:重新啟用組態設定的電子郵件傳送
在「第 3 部分:建立 Lambda 函數」中測試 Lambda 函數的副作用為組態集的電子郵件傳送將暫停。在大多數情況下,在觸發 CloudWatch 警示之前,您不想暫停傳送組態集。
本節中的程序將為您的組態設定重新啟用電子郵件傳送。若要完成這些程序,您必須安裝並設定 AWS Command Line Interface。如需詳細資訊,請參閱《AWS Command Line Interface 使用者指南》https://docs.aws.amazon.com/cli/latest/userguide/。
若要重新啟用電子郵件傳送
-
在命令列輸入以下命令,來重新啟用組態集的電子郵件傳送:
aws ses update-configuration-set-sending-enabled \ --configuration-set-name
ConfigSet
\ --enabled在上述命令中,
ConfigSet
將 取代為您要暫停電子郵件傳送的組態設定名稱。 -
在命令列輸入以下命令,來確認電子郵件傳送已啟用:
aws ses describe-configuration-set \ --configuration-set-name
ConfigSet
\ --configuration-set-attribute-names reputationOptions命令會產生類似下列範例的輸出:
{ "ConfigurationSet": { "Name": "
ConfigSet
" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": true } }如果
SendingEnabled
的值是true
,則組態設定的電子郵件傳送已成功重新啟用。
第 5 部分:建立 Amazon SNS主題
若要 CloudWatch 讓 在觸發警示時執行 Lambda 函數,您必須先建立 Amazon SNS主題,並向其訂閱 Lambda 函數。
建立 Amazon SNS主題
在 https://console.aws.amazon.com/sns/v3/home
開啟 Amazon SNS主控台。 -
使用區域選擇工具來選擇您要自動暫停郵件傳送的區域。
-
在導覽窗格中,選擇 Topics (主題)。
-
請選擇 Create new topic (建立新主題)。
-
在 Create new topic (建立新主題) 視窗上,針對 Topic name (主題名稱),輸入主題的名稱。或者,您也可在 Display name (顯示名稱) 欄位中輸入更具描述性的名稱。
請選擇 Create topic (建立主題)。
-
在主題清單中,請勾選您在之前的步驟中所建立的主題旁的方塊。在 Actions (動作) 選單上,選擇 Subscribe to topic (訂閱主題)。
-
在 Create subscription (建立訂閱) 視窗上,選取下列項目:
-
針對 rotocol (通訊協定),選擇 AWS Lambda。
-
針對 Endpoint (端點),選擇您在「第 3 部分:建立 Lambda 函數」中建立的 Lambda 函數。
-
針對 Version or alias (版本或別名),選擇 default (預設)。
-
-
選擇 Create subscription (建立訂閱)。
第 6 部分:建立 CloudWatch 警示
本節包含在 中建立警示的程序 CloudWatch ,該警示會在指標達到特定閾值時觸發。觸發警示時,它會傳送通知給您在 中建立的 Amazon SNS主題第 5 部分:建立 Amazon SNS主題,然後執行您在 中建立的 Lambda 函數第 3 部分:建立 Lambda 函數。
建立 CloudWatch 警示
在 開啟 CloudWatch 主控台https://console.aws.amazon.com/cloudwatch/
。 -
使用區域選擇工具來選擇您要自動暫停郵件傳送的區域。
-
在左側的導覽窗格中,選擇 Alarms (警示)。
-
選擇建立警示 。
-
在建立警示視窗的SES指標下,選擇組態設定指標。
-
在 ses:configuration-set 欄中,找出您想要建立警示的組態集。在 Metric Name (指標名稱) 下,選擇下列其中一個選項:
-
聲譽。BounceRate– 如果您想要在組態集的整體硬退信率超過您定義的閾值時暫停組態集的電子郵件傳送,請選擇此指標。
-
聲譽。ComplaintRate– 如果您想要在組態集的整體投訴率超過您定義的閾值時暫停組態集的電子郵件傳送,請選擇此指標。
選擇 Next (下一步)。
-
-
請完成下列步驟:
-
在 Alarm Threshold (警示閾值) 下,針對 Name (名稱),輸入警示的名稱。
-
在常式:Rputation.BounceRate 或常式:Rputation.ComplaintRate 下,指定導致觸發警示的閾值。
注意
如果您的 Amazon SES帳戶的整體退信率超過 10%,或者您的 Amazon SES帳戶的整體投訴率超過 .5%,則您的 Amazon SES帳戶會自動列入審核。當您指定導致觸發 CloudWatch 警示的退信或投訴率時,建議您使用遠低於這些比率的值,以防止您的帳戶遭到審核。
-
在動作下,針對 每當此警示時,選擇狀態為 ALARM。針對傳送通知至 ,選擇您在 中建立的 Amazon SNS主題第 5 部分:建立 Amazon SNS主題。
選擇建立警示 。
-
第 7 部分:測試解決方案
您現在可以測試警示,以確認警示可在進入 ALARM
狀態時執行 Lambda 函數。您可以使用 CloudWatch API中的 SetAlarmState
操作暫時變更警示的狀態。
本節中的程序為選用,但我們建議您完成程序,以確認正確設定完整的解決方案。
若要測試解決方案
-
在命令列輸入以下命令,來檢查組態集的電子郵件傳送狀態:
aws ses describe-configuration-set --configuration-set-name
ConfigSet
如果組態啟用的傳送已設定,會看到以下輸出:
{ "ConfigurationSet": { "Name": "
ConfigSet
" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": true } }如果
SendingEnabled
的值是true
,則組態設定的電子郵件傳送目前已啟用。 -
在命令列輸入下列命令,以暫時將警示狀態變更為
ALARM
:aws cloudwatch set-alarm-state \ --alarm-name
MyAlarm
\ --state-value ALARM \ --state-reason "Testing execution of Lambda function"將上述命令
MyAlarm
中的 取代為您在 中建立的警示名稱第 6 部分:建立 CloudWatch 警示。注意
當您執行此命令時,警示狀態將從
OK
切換為ALARM
,然後在數秒後回到OK
。您可以在 CloudWatch 主控台的警示歷史記錄索引標籤上,或使用 DescribeAlarmHistory操作來檢視這些狀態變更。 -
在命令列輸入以下命令,來檢查組態集的電子郵件傳送狀態:
aws ses describe-configuration-set \ --configuration-set-name
ConfigSet
如果 Lambda 函數執行成功,您會看到類似下列範例的輸出:
{ "ConfigurationSet": { "Name": "
ConfigSet
" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": false } }如果
SendingEnabled
的值是false
,則組態集的電子郵件傳送功能已停用,且表示 Lambda 函數已成功執行。 -
完成 第 4 部分:重新啟用組態設定的電子郵件傳送 中的步驟以重新啟用組態設定的電子郵件傳送。