如何在AWS中管理电子邮件组?

时间:2018-09-17 17:28:12

标签: amazon-web-services aws-lambda amazon-sns amazon-ses

我正在使用Lambda + SES向用户列表发送每日电子邮件。我正在使用boto3 api CASE命令生成已验证电子邮件的列表。

但是,我需要向已验证的电子邮件的子集发送另一封电子邮件。创建和维护此电子邮件组的最佳方法是什么?

我希望将组保留在AWS中,并让Lambda代码引用AWS服务。我曾考虑过向用户订阅SNS主题,并从该主题获取列表,或者从S3中存储的电子邮件列表中获取列表。我应该知道什么更好的解决方案或最佳做法吗?

1 个答案:

答案 0 :(得分:0)

最灵活的方法是创建RDS数据库并以适合您的用例的方式在其中建模电子邮件组,然后从数据库中提取电子邮件。您也可以在紧急情况下使用DynamoDB。

用于此目的的最小(关系)数据库结构类似于:

Table: EmailRecipient
Columns:
    - emailAddress
    - name

Table: MailingList
Columns:
    - listId
    - listName

Table: MailingListEmailRecipient
Columns:
    - listId
    - emailAddress

“ MailingListEmailRecipient”表用作邮件列表和收件人之间的多对多映射,您可以灵活地添加任意数量的列表,并且可以扩展这些表以包含其他相关信息,您可以可以添加一个表格来跟踪发送的电子邮件爆炸等。

如果您想使用DynamoDB,那也可以工作;这在数据建模方面有更多的限制,稍后您可能会遇到一些问题,但是作为一种快速而肮脏的解决方案,它可以工作,并且如果数据较小且不经常访问,则成本可能会大大降低。在DynamoDB上,您可以执行以下操作:

Table: EmailRecipient
Partition Key: mailingListName
Sort Key: emailAddress
Optional fields:
    - recipientName

这将使您可以在邮件列表分区键下存储邮件列表的收件人。您也可以采用另一种方法(将电子邮件地址作为分区键)来进行操作,这对于DynamoDB来说是最佳选择(避免“热”分区),但是如果您为此使用DynamoDB,那么您可能正在构建快速又脏的东西(更好的方法还是RDBMS。