我想要修改 Amazon EventBridge 通知的標準 Amazon Simple Notification Service (Amazon SNS) 電子郵件主旨行「AWS 通知訊息」。
簡短說明
Amazon SNS 從使用 AWS 服務建立的 EventBridge 規則接收通知,作為透過電子郵件交付的事件來源。請注意,主旨行「AWS 通知訊息」和電子郵件內文是固定的。如果任何 AWS 服務觸發具有電子郵件訂閱的 Amazon SNS 主題,您無法直接變更這些內容。
工作流程
- 事件會觸發 EventBridge 規則。
- EventBridge 規則的承載會調用 Lambda 函數。
- Lambda 函數會呼叫 Amazon SNS 發佈 API。
- Amazon SNS 會提供含有自訂主旨和內文的訊息或電子郵件通知。
解決方法
將 AWS Lambda 包含在架構中,以視需要自訂預設電子郵件主旨行和訊息內文。您可以使用 AWS Lambda 而非 Amazon SNS 主題作為 EventBridge 規則的目標。然後,使用 Lambda 函數與訂閱者一起將含有自訂電子郵件主旨和內文的訊息發佈至 Amazon SNS 主題。
請遵循下列步驟自訂通知。
建立 SNS 主題和電子郵件訂閱
- 建立 SNS 主題。
- 建立電子郵件訂閱。
建立 Lambda 函數
-
開啟 Lambda 主控台的函數頁面。
-
選擇建立函數。
-
選取從頭開始撰寫。
-
提供函數名稱,然後選取此執行時期作為 Python 3.10。
-
建立執行角色。此角色必須具有必要許可才能發佈指定的 SNS 主題。在這裡,您的 Lambda 函數是使用 Lambda 的 AWS 受管政策建立的。
-
將 AWSLambdaBasicExecutionRole 和 AmazonSNSFullAccess 政策連接至函數的執行角色。若要連接 Lambda 的執行政策,請參閱 Lambda 執行角色。
-
選擇建立函數。在函數 程式碼編輯器中,貼上以下程式碼:
**重要:**此程式碼片段僅供參考。在測試之前,請勿在生產環境中使用程式碼片段範例。
範例: Python 程式碼範例
import boto3
import json
sns_arn = "sns_topic_arn"
def lambda_handler(event, context):
client = boto3.client("sns")
resp = client.publish(TargetArn=sns_arn, Message=json.dumps(event), Subject="This is the customized subject line")
注意: 將 sns_topic_arn 取代為建立 SNS 主題和電子郵件通知中的主題 ARN。將 "This is the customized subject line" 取代為您自己的主題行,並用引號括起來。
-
選擇部署。
建立 EventBridge 規則
使用 Amazon EventBridge 主控台建立 EventBridge 規則。
注意:
- 對於 AWS 文件中的步驟 11,選取目標,選擇您在建立 Lambda 函數下建立的 Lambda 函數。
- 提供您想要用於 Lambda 函數的承載訊息。
調用 EventBridge 規則時,Lambda 函數會對 Amazon SNS 進行發佈 API 呼叫。它會在變更用於交付訊息的主旨時,轉寄事件規則的訊息。然後,訂閱者會在信箱中收到含有自訂主旨行的電子郵件。
相關資訊
為什麼我無法收到來自 Amazon SNS 主題的電子郵件通知?
為什麼我收到來自 AWS 的電子郵件,指出我的 Amazon SNS 訂閱已手動停用?
如何防止郵寄清單收件者從我的 Amazon SNS 主題電子郵件中取消訂閱清單中的每個人?
為什麼我沒有收到 CloudWatch 警報觸發的 SNS 通知?
如何使用 Lambda 和 Amazon SES 來傳送電子郵件?