Этот пост написан для себя, чтобы не забыть. В этой статье я расскажу о том, как можно автоматизировать процессы отправки электронной почты с помощью сервисов AWS. Для этого мы будем использовать AWS Lambda, EventBridge (CloudWatch services) и Simple Email Service. Прежде чем приступить к настройкам, кратко расскажем о том, что они из себя представляют.
Identity and Access Management (IAM)
Веб-сервис IAM позволяет нам безопасно контролировать доступ к ресурсам AWS. Здесь мы можем проверить, какие пользователи аутентифицированы и какие разрешения у них есть для использования ресурсов. IAM не требует выбора региона.
Сначала мы должны настроить роли IAM для безопасности. Откройте консоль AWS и напишите IAM в область поиска. На открывшемся экране нажмите «Роли» и создайте роль.
Выберите AWS service и Lambda:
Добавьте разрешения:
- CloudWatchFullAccess
- AmazonSESFullAccess
Укажите имя для использования этой роли в других службах:
AWS Simple E-mail Service
Amazon SES — это простая, надежная, недорогая облачная служба электронной почты с оплатой по факту использования, которая помогает разработчикам отправлять уведомления по электронной почте. Все новые учетные записи SES запускаются в изолированной программной среде, где вы можете протестировать возможности Amazon SES.
Для начала надо добавить новый email для пользователя.
На странице выберите «Email address» и укажите требуемый адрес электронной почты, на который вы хотите отправлять почту, и нажмите «Create Identity».
Вы получите письмо с подтверждением. После проверки ваш адрес электронной почты будет верифицирован.
AWS Lambda
AWS Lambda — один из бессерверных сервисов. В этих сервисах мы только пишем код, который хотим запустить, и делаем необходимые настройки ресурсов. Нам не нужно решать такие вопросы, как, на каком сервере работает код, администрирование, обслуживание и безопасность сервера. Лямбда-коды работают в контейнерах. Таким образом, его можно легко масштабировать.
На консоли Amazon введите Lambda в область поиска и нажмите кнопку «Create Function». Введите имя, описывающее назначение вашей функции, и выберите язык, который будет использоваться для написания вашей функции. В этом руководстве мы будем использовать Node.js 16.x.
В нижней части страницы в разделе «Change default execution role» мы нажимаем «Existing role» и выбираем имя ранее созданной роли и создаем службу Lambda.
В открывшемся окне пишем код:
AWS.config.update({
region: "YOUR_REGION"
});
const ses = new AWS.SES();exports.handler = async (event) => {
const params = {
Destination: {
ToAddresses: ["one@email.com", "two@email.com"]
},
Message: {
Subject: {Data: "WebSite Alert"},
Body: {
Text: {Data: "Hello!\n\nTimeoutError: Response timeout from WebSite exceeded."}
}
},
Source: 'three@email.com'
};
await ses.sendEmail(params).promise().then(response => {
console.log("Successfully sent.");
}, error => {
console.log("Error!!!!!!!!!!");
});
};
Не забудьте исправить YOUR_REGION на Ваш регион, а также указать верифицированные email адреса!
Затем нажмите кнопку «Deploy», чтобы развернуть код. Затем нажмите Test. Откроется всплывающее окно:
Напишите название теста, удалите примеры значений ключей (Event JSON) и нажмите «Save».
После этого снова нажмите кнопку тестирования, чтобы запустить тест. Вы должны увидеть сообщение «Successfully sent» на странице результатов выполнения. Если вы проверите почтовый ящик, вы должны увидеть тестовое письмо.
CloudWatch
CloudWatch собирает данные мониторинга и операционные данные в виде журналов, метрик и событий, предоставляя единое представление о ресурсах, приложениях и сервисах AWS, работающих на AWS и на локальных серверах. Используя CloudWatch, вы можете обнаруживать аномальное поведение в своей среде, настраивать сигналы тревоги, визуализировать изображения и метрики одновременно, выполнять автоматические действия, устранять неполадки и находить ценные сведения для обеспечения бесперебойной работы ваших приложений.
Создадим "синтетическую канарейку", которая каждые n минут будет проверять доступность сайта.
Откроется окно, в котором надо указать имя, URL, расписание запуска и выбрать существующую роль.
AWS EventBridge
AWS EventBridge — это бессерверный мост событий, который позволяет легко предоставлять доступ в режиме реального времени к изменениям данных в сервисах AWS и приложениях SaaS без написания кода. CloudWatch Events строится и расширяет базу Amazon EventBridge.
Теперь мы свяжем скрипт и событие проверки доступности вебсайта.
Дя этого создаём новое правило:
Шаг 1. Выбираем события:
Шаг 2:
Шаг 3:
Шаг 4:
Шаг 5:
Полезняшки
Как сделать скрипт для разных типов окружения: