Как управлять группами электронной почты в AWS? - PullRequest
0 голосов
/ 17 сентября 2018

Я использую Lambda + SES для отправки ежедневного электронного письма списку пользователей.Я создаю список проверенных писем с помощью команды boto3 api client.list_verified_email_addresses().

Однако мне нужно отправить еще одно электронное письмо на подмножество подтвержденных писем.Каков наилучший способ создания и поддержки этой группы электронной почты?

Я бы предпочел поддерживать группу в AWS и использовать лямбда-код для ссылки на сервис AWS.Я думал о подписке пользователей на тему SNS и получении списка из этой темы или списка электронных писем, хранящихся на S3.Есть ли какие-нибудь лучшие решения или лучшие практики, о которых мне следует знать?

1 Ответ

0 голосов
/ 17 сентября 2018

Самый гибкий способ - создать базу данных 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) в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...