Как настроить контактную форму электронной почты с помощью AWS Lambda, Gateway API и SES.
Может быть, вы проходили через мою последнюю статью о Как создать конвейер CI/CD для вашего сайта, используя GitLab Или, может быть, у вас просто есть веб-сайт или приложение в ведре S3, для которого вы хотите добавить контактную форму для. В любом случае, вы пришли в правильную статью — сегодня я покажу вам, как настроить эту надежную контактную форму с помощью Lambda, Gateway API и SES (и, мальчика, это легко).
Дэн, какой смысл?
Когда у вас есть традиционный сайт на сервере, который использует такие вещи, как Apache и PHP, вы можете просто использовать PHP’s почта ()
Функция, если вы установите электронную почту, как Postfix. Если вы обслуживаете свой веб-сайт из ведра, подобного мне, вы не можете точно использовать Postfix (и я действительно не хочу, потому что тогда я должен беспокоиться о наличии другого сервера). Вот когда эта комбинация услуг пригодится!
Предварительные условия
Для этого не слишком много предпосылок (особенно если вы проходили через мой последний учебник).
- AWS Счет
- Террафом установлен
- Простая электронная почта настроен на AWS для домена или адрес электронной почты
Таким образом, для номера 3 нам нужно, что настроен, потому что нам нужно будет использовать эту услугу для отправки электронных писем, когда кто-то заполняет нашу контактную форму. Я не буду проходить через это, потому что это супер легко, но если вам нужно это сделать, Вот документация AWS, которую вы можете проверить Отказ
Инфраструктура
Я прошел, как это сделать вручную Используя это руководство , но я всегда пытаюсь воссоздать свою инфраструктуру с террафором, чтобы, если мне это когда-нибудь понадобится снова, я могу быстро использовать модуль, который я написал, чтобы раскрутить то же самое … Так к счастью для вас, вам не нужно проходить через это руководство! Вы просто используете Модуль я написал Отказ
Продолжай и создайте свой main.tf
Файл в вашем каталоге проекта Terraform. Давайте сделаем это так:
provider "aws" { region = "us-east-1" } module "las" { source = "git::https://gitlab.com/nextlink/lambda-api-sendmail.git?ref=v1.0" role_name = "las_role" function_name = "lambda-function-name" billing_tag = "las" api_gateway_name = "las" api_gateway_description = "API gateway for las" }
Это все код, который нам нужно написать, чтобы построить нашу инфраструктуру. Ты можешь в это поверить? Модуль делает много работы за кулисами, чтобы облегчить нашу жизнь. Не стесняйтесь менять эти переменные к тому, что вам нужно или хотите, чтобы они были.
Помимо этого конфиника Terraform, нам просто нужно сделать еще пару вещей. Наша функция лямбда определяется файлом под названием Exports.js
Отказ У меня есть копия здесь . Вы должны скопировать исходный код и создать новый файл в вашем рабочем каталоге под названием Exports.js
Отказ Вы должны сделать просто немного работы, хотя. Линии 4 и 5 в этом файле выглядят так:
var RECEIVER = "YOUR_EMAIL@example.com" var SENDER = "no-reply@example.com"
Вам нужно будет изменить Приемник
Переменная быть электронной почтой, которую вы хотите получить контактные формы, а Отправитель
Чтобы быть электронной почтой, который вы хотите отправить электронные письма. Вот почему мы устанавливаем SES раньше — так что AWS может отправлять электронные письма из нашего домена к нам.
После этого все сделано, у нас есть еще одна задача. Нам нужно zip вверх по файлу экспорта, используя эту команду:
zip exports.js.zip exports.js
После этого все, что осталось сделать, это запустить конфин.
terraform apply
Потрясающий! Наша инфраструктура все настроен!
Используя инфраструктуру
Я не буду получать в стороне HTML и JS из этого, потому что о том, как вы это сделаете, варьируются в зависимости от того, какие рамки используются ваш сайт/приложение, но я хочу показать вам, какую конечную точку вам нужно позвонить, чтобы отправить сообщение.
Вызывать URL
В этом изображении мы разместим нашу заполненную форму. Единственное условие с нашей формой (из-за exports.js
Файл, который мы использовали на конфирме Terraporm), заключается в том, что мы публикуем данные JSON к этому URL этими полями:
{ "name": "", "email": "", "message": "" }
Если эти поля не то, что вы хотите, вы можете изменить их в Exports.js
Файл, Zip It, и Rerun Teraform Config.
И это то, что
С помощью этой короткой конфигурации террафора и небольшой HTML/JavaScript Magic у нас есть конечная точка, которая всегда доступна (и действительно недорого в использовании), чтобы наши пользователи могли связаться с нами! Этот метод является отличной альтернативой сторонним платным решениям и оставляет много места для настройки. Я надеюсь, что этот пример может быть использован для вас в ваших будущих творениях.
Этот пост впервые появился в нашем блоге, где мы пишем о дежопт и Развлеченные консалтинговые услуги Отказ
Оригинал: «https://dev.to/danielslapelis/serverless-contact-form-using-aws-lambda-api-gateway-and-ses-3b94»