跳至内容

如何自定义默认 Amazon SNS 电子邮件主题行?

2 分钟阅读
0

我想要自定义 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) 角色,请完成以下步骤:

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
  3. 选择 Service or use case(服务或使用案例)下拉列表,选择 Lambda,然后选择 Next(下一步)。
  4. Add permissions(添加权限)页面中,将 AWSLambdaBasicExecutionRoleAmazonSNSFullAccess 策略附加到该角色,然后选择 Next(下一步)。
    重要事项:AmazonSNSFullAccess 托管策略提供对 Amazon SNS 的完全访问权限。最佳做法是遵循最低权限原则。
  5. Role name(角色名称)中,输入角色的名称,然后选择 Create role(创建角色)。

创建 Lambda 函数

完成以下步骤:

  1. 打开 Lambda 控制台的函数页面

  2. 选择创建函数

  3. 选择 Author from scratch(从头开始编写)。

  4. Function name(函数名称)中,输入函数的名称。

  5. 选择 Runtime(运行时)下拉列表,然后选择 Python 3.13

  6. 展开 Change default execution role(更改默认执行角色),然后选择 Use an existing role(使用现有角色)。

  7. 选择 Existing role(现有角色)下拉列表,然后选择您之前创建的角色。

  8. 选择 Create function(创建函数)。

  9. 在函数代码编辑器中,输入以下 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 资源名称 (ARN)。请将**“这是自定义主题行”**替换为您自己的主题行,并加引号。

  10. 选择部署

创建 EventBridge 规则

按照以下说明创建 EventBridge 规则

注意:

  • 对于 AWS 文档中的步骤 11 选择目标,请选择您之前创建的 Lambda 函数。
  • 提供您希望为您的 Lambda 函数所使用的有效载荷消息。

调用 EventBridge 规则时,Lambda 函数会向 Amazon SNS 发出 publish API 调用。它会转发事件规则的消息并更改用于传送消息的主题行。然后,订阅用户在其邮箱中接收带有自定义主题行的电子邮件。

相关信息

如何使用 Lambda 和 Amazon SES 发送电子邮件?

AWS 官方已更新 2 个月前