You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS CloudFormation中为SNS Topic配置逗号分隔多邮箱参数

在AWS CloudFormation中用单个逗号分隔参数配置SNS多邮箱订阅

你可以通过CloudFormation内置函数的组合,实现用单个逗号分隔字符串参数生成多个SNS邮箱订阅,具体方案如下:

核心实现思路

利用Split函数将逗号分隔的邮箱字符串拆分为独立邮箱列表,再通过ForEach(CloudFormation新版本推荐用法)遍历列表,动态生成每个邮箱对应的订阅配置项。

完整模板示例

Parameters:
  OperatorEMail:
    Type: String
    Description: 输入逗号分隔的多个邮箱地址,示例:user1@example.com,user2@example.com,user3@example.com

Resources:
  SendNotification:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        !ForEach [email, !Split [",", !Ref OperatorEMail], [
          {
            "Endpoint": !Trim [!Ref email],
            "Protocol": "email"
          }
        ]]

代码说明

  1. 参数拆分:!Split [",", !Ref OperatorEMail] 将输入的字符串按逗号分割成邮箱数组
  2. 遍历生成订阅:!ForEach 循环处理每个邮箱,为每个邮箱创建一个包含Endpoint和Protocol的订阅对象
  3. 空格处理:!Trim 用于清除每个邮箱前后可能存在的空格,避免因输入格式问题导致订阅失败

旧版本CloudFormation兼容方案

如果你的环境不支持ForEach,可以用Map函数替代:

Resources:
  SendNotification:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        !Map
          - !Split [",", !Ref OperatorEMail]
          - !Sub
            - '{"Endpoint": "${TrimmedEmail}", "Protocol": "email"}'
            - TrimmedEmail: !Trim [!Ref AWS::MapItemValue]

注意事项

  • 确保输入的邮箱格式正确,CloudFormation不会校验邮箱有效性,错误格式的邮箱会导致订阅请求发出但用户收不到确认邮件
  • 若输入时习惯在逗号后加空格,!Trim会自动处理,无需额外调整输入格式

内容的提问来源于stack exchange,提问作者Ardhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:25:30