Рубрики
Uncategorized

Форма контакта без сердца с использованием AWS Lambda, API Gateway и SES

Как настроить контактную форму электронной почты с помощью AWS Lambda, Gateway API и SES. Может быть, вы пошли … Помечено с AWS, DEVOPS, LAMBDA, API.

Как настроить контактную форму электронной почты с помощью AWS Lambda, Gateway API и SES.

Может быть, вы проходили через мою последнюю статью о Как создать конвейер CI/CD для вашего сайта, используя GitLab Или, может быть, у вас просто есть веб-сайт или приложение в ведре S3, для которого вы хотите добавить контактную форму для. В любом случае, вы пришли в правильную статью — сегодня я покажу вам, как настроить эту надежную контактную форму с помощью Lambda, Gateway API и SES (и, мальчика, это легко).

Дэн, какой смысл?

Когда у вас есть традиционный сайт на сервере, который использует такие вещи, как Apache и PHP, вы можете просто использовать PHP’s почта () Функция, если вы установите электронную почту, как Postfix. Если вы обслуживаете свой веб-сайт из ведра, подобного мне, вы не можете точно использовать Postfix (и я действительно не хочу, потому что тогда я должен беспокоиться о наличии другого сервера). Вот когда эта комбинация услуг пригодится!

Предварительные условия

Для этого не слишком много предпосылок (особенно если вы проходили через мой последний учебник).

  1. AWS Счет
  2. Террафом установлен
  3. Простая электронная почта настроен на 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»