我想要自訂 Amazon EventBridge 通知的預設 Amazon Simple Notification Service (Amazon SNS) 電子郵件主旨行「AWS 通知訊息」。
簡短說明
Amazon SNS 從 EventBridge 規則接收通知,此規則是以 AWS 服務作為事件來源並透過電子郵件傳送。如果任何 AWS 服務觸發具有電子郵件訂閱的 Amazon SNS 主題,您無法直接更改電子郵件主旨行 AWS 通知訊息。
解決方法
建立 AWS Lambda 函式以自訂預設電子郵件主旨行。您可以使用 Lambda 而非 Amazon SNS 主題作為 EventBridge 規則的目標。然後,使用 Lambda 函式向具有訂閱者的 Amazon SNS 主題發佈訊息,並自訂電子郵件主旨行。
建立 SNS 主題與電子郵件訂閱
建立 SNS 主題,然後建立電子郵件訂閱。
為 Lambda 函式建立 IAM 角色
若要建立 Lambda 函式的 AWS Identity and Access Management (IAM) 角色,請完成以下步驟:
- 開啟 IAM console (IAM 主控台)。
- 在導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)。
- 在 Service or use case (服務或使用案例) 下拉式選單中,選擇 Lambda,然後選擇 Next (下一步)。
- 在 Add permissions (新增權限) 頁面,附加 AWSLambdaBasicExecutionRole 與 AmazonSNSFullAccess 政策至角色,然後選擇 Next (下一步)。
重要:AmazonSNSFullAccess 管理政策提供對 Amazon SNS 的完整存取權。最佳實務是遵循最低權限原則。
- 在 Role name (角色名稱) 中輸入角色名稱,然後選擇 Create role (建立角色)。
建立 Lambda 函式
請完成下列步驟:
-
開啟 Lambda 主控台的 Functions page (函式頁面)。
-
選擇 Create function (建立函式)。
-
選取 Author from scratch (從頭開始建立)。
-
在 Function name (函式名稱) 中輸入函式名稱。
-
從 Runtime (執行時期) 下拉式選單選取 Python 3.13。
-
展開 Change default execution role (變更預設執行角色),然後選擇 Use an existing role (使用現有角色)。
-
選擇 Existing role (現有角色) 下拉式選單,然後選擇您先前建立的角色。
-
選擇 Create function (建立函式)。
-
在函式 code editor (程式碼編輯器) 中輸入以下 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 主題與電子郵件通知中的主題 Amazon Resource Name (ARN)。將 "This is the customized subject line" 替換為您自己的主旨行,並用引號括起來。
-
選擇 Deploy (部署)。
建立 EventBridge 規則
依照以下說明建立 EventBridge 規則。
注意:
- 在 AWS 文件的步驟 11 中,Select a target (選取目標),選擇先前建立的 Lambda 函式。
- 提供您想要用於 Lambda 函式的承載訊息。
當調用 EventBridge 規則時,Lambda 函式會對 Amazon SNS 執行 publish (發佈) API 呼叫。它會轉發事件規則的訊息,並更改用於傳送訊息的主旨行。然後,訂閱者會在信箱中收到含有自訂主旨行的電子郵件。
相關資訊
如何使用 Lambda 和 Amazon SES 來傳送電子郵件?