В этой статье мы обсудим процедуру создания лямбда-функции, которая будет отправлять электронное письмо указанному получателю от указанного отправителя с помощью Amazon Simple Email Service (SES). В этом проекте мы будем делать все в консоли AWS.

Прежде чем начать, давайте разберемся с некоторыми ключевыми понятиями.

Amazon Simple Email Service (SES)

Amazon SES - это платформа электронной почты, которая предоставляет нам простой и экономичный способ отправки и получения электронной почты с использованием наших собственных адресов электронной почты и доменов.

Используя SES, мы можем отправлять маркетинговые электронные письма, такие как специальные предложения, транзакционные электронные письма, такие как подтверждения заказов, и другие типы корреспонденции, такие как информационные бюллетени. Когда мы используем Amazon SES для получения почты, мы можем разрабатывать программные решения, такие как автоответчики электронной почты, системы отписки по электронной почте и приложения, которые генерируют тикеты поддержки клиентов из входящих писем.

Amazon SES устраняет такие проблемы инфраструктуры, как управление почтовым сервером, конфигурация сети и т. Д.

Когда мы отправляем электронное письмо, мы отправляем его через сервер исходящей электронной почты. Сервер исходящей электронной почты принимает наше содержимое электронной почты, форматирует его в соответствии со стандартами электронной почты, а затем отправляет электронное письмо через Интернет. Электронное письмо может проходить через другие серверы, пока не достигнет сервера получателя. Затем сервер получателя доставляет электронное письмо получателю.

Когда мы используем Amazon SES, мы можем делать две вещи:

Использование Amazon SES в качестве сервера исходящей электронной почты

Использование существующего почтового сервера и настройка его для отправки исходящих писем через Amazon SES.

Примечание. Если в организации уже есть настроенный и работающий почтовый сервер, в использовании Amazon SES нет необходимости. Но давайте скажем

  1. Если организация переносит свою инфраструктуру в облако AWS и у нее есть отдельный физический почтовый сервер, она может сохранить этот почтовый сервер и настроить его для отправки писем через Amazon SES. И если организация не хочет отправлять электронные письма через SES, тогда тоже нет никаких проблем.
  2. И, если организация является стартапом, тогда очень удобно использовать Amazon SES, поскольку не требуется настраивать физический почтовый сервер, что будет дорого.

Отправитель может создавать содержимое электронной почты по-разному. Отправитель может создать электронное письмо с помощью клиентского приложения электронной почты или использовать программу, которая автоматически генерирует электронные письма, например приложение, которое отправляет подтверждения заказа в ответ на транзакции покупки.

В нашем проекте мы будем использовать программу (лямбда-функцию), которая будет генерировать для нас электронную почту.

AWS Lambda

AWS Lambda - это сервис бессерверных вычислений, который позволяет пользователю запускать код без выделения серверов и управления ими, при этом пользователь должен платить за то, сколько они используют. Пользователь также может масштабировать его вверх и вниз в соответствии со своими потребностями.

Теперь мы закончили с основами, давайте перейдем к проекту.

Шаг 1. Прежде всего, мы создадим документ политики, в котором укажем разрешения для нашей лямбда-функции.

Мы перейдем в консоль IAM и нажмем «Политики», чтобы создать новую политику, которая будет называться myPolicy. В редакторе политики JSON мы вставим следующее:

{     
  "Version": "2012-10-17",
  "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "ses:SendEmail",
                 "ses:SendRawEmail"
             ],
             "Resource": "*"
         }
     ]
}

Вышеупомянутая политика предоставит лямбде следующие разрешения:

  1. SendEmail - он составляет сообщение электронной почты и сразу же ставит его в очередь для отправки.
  2. SendRawEmail - он также составляет сообщение электронной почты и сразу же ставит его в очередь для отправки. Эта операция более гибкая, чем операция SendEmail API. Когда мы используем операцию SendRawEmail, мы можем указать заголовки сообщения, а также его содержимое. Эта гибкость полезна, например, когда мы хотим отправить составное MIME-сообщение (такое сообщение, которое содержит как текстовую, так и HTML-версию). Мы также можем использовать эту операцию для отправки сообщений, содержащих вложения.

Шаг 2. Теперь мы прикрепим эту политику IAM к роли IAM, которая позже будет назначена нашей лямбда-функции.

В консоли IAM нажмите Roles и прикрепите политику с именем myPolicy. Назовем эту роль myRole.

Шаг 3. Для отправки электронной почты нам необходимо подтвердить адреса электронной почты отправителя и получателя.

Теперь мы откроем Консоль Amazon SES и нажмем Перейти к управлению идентификацией. Здесь мы введем адреса электронной почты отправителя и получателя. Письмо будет получено как отправителем, так и получателем, которое им необходимо открыть и выполнить шаги для проверки.

На этом этапе важно отметить регион, в котором мы проверяем адреса электронной почты. Этот же регион будет использован при написании лямбда-функции. Допустим, мы проверили адреса электронной почты в регионе ap-south-1. Мы включим этот же регион в лямбда-функцию.

Шаг 4. Теперь откройте Лямбда-консоль и нажмите Создать новую функцию. Имя нашей функции будет myLambda, а время выполнения - Node.js 12x. В поле Разрешения выберите использовать существующую роль, а затем выберите myRole. В редакторе кода мы напишем следующий код и развернем его.

В приведенном выше коде мы импортируем AWS SDK. AWS SDK для JavaScript предоставляет API JavaScript для сервисов AWS. Мы можем использовать JavaScript API для создания библиотек или приложений для Node.js или браузера.

Остальные коды говорят сами за себя.

Шаг 5. Теперь нажмите кнопку Тест, а затем создадим новый тестовый шаблон для передачи информации в объект события в качестве входных данных для функции. Давайте дадим нашему названию события testEvt. Мы сохраним объект события по умолчанию в формате JSON и нажмем кнопку Создать. Обратите внимание, что содержимое JSON не имеет никакого отношения к нашему приложению, поскольку оно используется только как полезная нагрузка для вызова лямбда-функции.

Шаг 6. Теперь мы снова нажимаем кнопку Тест, чтобы запустить код. После выполнения будет отображен результат выполнения, где мы можем увидеть результаты callback(null, {err: err, data: data}); и console.log(err);, когда электронное письмо не отправлено, и console.log(data);, когда электронное письмо отправлено успешно.

Шаг 7. Теперь мы откроем почтовый ящик получателя ([email protected]). Ура, у нас в почтовом ящике есть электронное письмо.

Обратите внимание, что в электронном письме написано - «через amazonses.com».

Итак, мы успешно завершили наш проект.

Резюме

В этой статье мы разобрались с основами Amazon SES, AWS Lambda и, наконец, создали лямбда-функцию, которая может отправлять электронные письма с помощью SES.

Я хочу поблагодарить Edureka за проведение 30 октября 2020 года вебинара Учебник AWS Lambda для начинающих, который помог мне успешно завершить этот проект.

Ссылки

Документация по AWS Lambda: https://docs.aws.amazon.com/lambda/index.html

Документация по Amazon SES: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/