Самый гибкий способ - создать базу данных 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
Это позволит вам сохранить получателей для списка рассылки под ключом раздела списка рассылки. Вы также можете сделать это наоборот (emailAddress в качестве ключа раздела), который был бы более оптимальным для DynamoDB (избегая «горячих» разделов), но если вы используете DynamoDB для этого, то вы, вероятно, создаете что-то быстрое и грязное ( лучше бы была RDBMS) в любом случае.