如何自訂預設 Amazon SNS 電子郵件訊息?

2 分的閱讀內容
0

我想要修改 Amazon EventBridge 通知的標準 Amazon Simple Notification Service (Amazon SNS) 電子郵件主旨行「AWS 通知訊息」。

簡短說明

Amazon SNS 從使用 AWS 服務建立的 EventBridge 規則接收通知,作為透過電子郵件交付的事件來源。請注意,主旨行「AWS 通知訊息」和電子郵件內文是固定的。如果任何 AWS 服務觸發具有電子郵件訂閱的 Amazon SNS 主題,您無法直接變更這些內容。

工作流程

  1. 事件會觸發 EventBridge 規則。
  2. EventBridge 規則的承載會調用 Lambda 函數。
  3. Lambda 函數會呼叫 Amazon SNS 發佈 API。
  4. Amazon SNS 會提供含有自訂主旨和內文的訊息或電子郵件通知。

解決方法

將 AWS Lambda 包含在架構中,以視需要自訂預設電子郵件主旨行和訊息內文。您可以使用 AWS Lambda 而非 Amazon SNS 主題作為 EventBridge 規則的目標。然後,使用 Lambda 函數與訂閱者一起將含有自訂電子郵件主旨和內文的訊息發佈至 Amazon SNS 主題。

請遵循下列步驟自訂通知。

建立 SNS 主題和電子郵件訂閱

  1. 建立 SNS 主題
  2. 建立電子郵件訂閱

建立 Lambda 函數

  1. 開啟 Lambda 主控台的函數頁面

  2. 選擇建立函數

  3. 選取從頭開始撰寫

  4. 提供函數名稱,然後選取此執行時期作為 Python 3.10

  5. 建立執行角色。此角色必須具有必要許可才能發佈指定的 SNS 主題。在這裡,您的 Lambda 函數是使用 Lambda 的 AWS 受管政策建立的。

  6. AWSLambdaBasicExecutionRoleAmazonSNSFullAccess 政策連接至函數的執行角色。若要連接 Lambda 的執行政策,請參閱 Lambda 執行角色

  7. 選擇建立函數。在函數 程式碼編輯器中,貼上以下程式碼:
    **重要:**此程式碼片段僅供參考。在測試之前,請勿在生產環境中使用程式碼片段範例。

    範例: 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" 取代為您自己的主題行,並用引號括起來。

  8. 選擇部署

建立 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 來傳送電子郵件?

AWS 官方
AWS 官方已更新 1 年前