CSS-FHXB3M DISPLAY-WEBKIT-BOX; дисплей-webkit-flex; Display-MS-Flexbox; Дисплей: Flex-Webkit-Flex-направление: Row-MS-Flex-направление: ряд; Гиб-направление: row-webkit-align-items: центр-Webkit-Box-Align: Center-MS-Flex-Align: Center; Align-Items: Center;. CSS-9A49Z0 Право маржи: 0.5рем; Высота: 2.5рем; Ширина: 2.5Rem-webkit-flex-shrink: 0-ms-flex-отрицательный: 0; Flex-Shrink: 0; переполнение: скрыто; граница-радий: 9999px; Рахул Локурте’S блог

Это решение использует Terraform версию 0.12.16, вы можете установить разные псевдонимы следующим образом. Затем Terraform использовал бы этих поставщиков, когда мы начнем создавать наши модули:

Сводка статьи:

– Terraform поддерживает Eventbridge и позволяет устанавливать различные псевдонимы для поставщиков.
– Eventbridge – это служба автобусов без сервера, которая соединяет приложения с данными из разных источников.
– Он поддерживает интеграцию с приложениями на базе SAAS и другими службами AWS, такими как Lambda Functions и Step-функции.
– В статье объясняется, как вызвать функцию AWS Lambda с запланированными интервалами, используя правило AWS Eventbridge и Terraform.
– Чтобы начать, вам нужно создать структуру проекта и настроить правило для запуска функции Lambda по расписанию.
– Структура проекта включает в себя создание нового каталога, ресурсов и папки Lambda.
– В папке Lambda вам нужно создать индекс.Файл JS с кодом функции Lambda.
– Функция Lambda использует библиотеку Faker для генерации случайных данных.
– После создания функции Lambda вы можете определить поставщиков терраформ в основном.TF -файл.
– Главный.TF File указывает поставщика AWS с параметрами конфигурации, такими как регион, профиль и файл учетных данных.
– Вы также можете определить переменные в переменных.Файл TF для предоставления значений для конфигурации поставщика.

Вопросы и ответы:

1. Terraform Support Eventbridge?

Terraform поддерживает Eventbridge и предоставляет возможность устанавливать различные псевдонимы для поставщиков. Это позволяет Terraform использовать указанных провайдеров при создании модулей.

2. Что такое Eventbridge?

Eventbridge – это служба автобусов без сервера, которая позволяет приложениям подключаться к данным из различных источников. Он обеспечивает наблюдение за событиями и поддерживает интеграцию с приложениями на базе SAAS и сторонним.

3. Какие услуги AWS могут отправить события EventBridge?

Eventbridge может отправлять события в различные сервисы AWS, включая функции Lambda и пошаговые функции.

4. Как мы можем вызвать функцию AWS Lambda с запланированными интервалами с правилом Eventbridge с использованием Terraform?

Чтобы вызвать функцию AWS Lambda с запланированными интервалами, вам нужно сначала установить правило, используя Eventbridge, а затем использовать Terraform для определения правила и его графика.

5. Какова структура проекта для настройки запланированной функции Lambda?

Структура проекта включает в себя создание нового каталога и папки ресурсов. Внутри папки ресурсов создайте папку Lambda для удержания кода функции Lambda.

6. Как создать функцию лямбды?

Чтобы создать функцию Lambda, создайте папку внутри папки ресурсов и добавьте индекс.Файл JS с кодом функции Lambda. Вы можете использовать библиотеку Faker для генерации случайных данных в функции Lambda.

7. Для чего используются поставщики терраформ?

Поставщики терраформ используются для настройки и взаимодействия с поставщиками инфраструктуры. В этом случае поставщик AWS используется для определения региона AWS, профиля и других вариантов конфигурации.

8. Что делает основной.Файл TF содержит?

Главный.Файл TF содержит конфигурацию Terraform для провайдера AWS. Он определяет требуемых поставщиков и их параметров конфигурации, таких как регион, профиль и теги.

9. Как переменные используются в терраформе?

Переменные используются для обеспечения динамических значений для конфигурации терраформ. Они могут быть определены в переменных.Файл TF и ​​упоминаемый в других файлах Terraform.

10. Что делает переменные.Файл TF содержит?

Переменные.Файл TF содержит определения переменных, которые можно использовать в конфигурации Terraform. Переменные могут иметь описания и значения по умолчанию, и они ссылаются с использованием var.variable_name синтаксис.

11. Can EventBridge интегрируется с приложениями на базе SaaS?

Да, Eventbridge может интегрироваться с приложениями на базе SAAS и сторонними приложениями.

12. Поддерживает ли EventBridge отправлять события в другие услуги AWS?

Да, Eventbridge может отправлять события в другие службы AWS, такие как Lambda Functions и Step -функции.

13. Какова цель библиотеки Faker в коде функции Lambda?

Библиотека Faker используется для генерации случайных данных в функции Lambda. Его можно использовать для создания поддельных профилей, номеров телефонных номеров, типов транспортных средств и многого другого.

14. Как вы определяете поставщика AWS в Terraform?

Поставщик AWS определяется в конфигурации Terraform с использованием блока провайдера. Он определяет поставщика как «AWS» и включает в себя такие параметры конфигурации, как регион и профиль.

15. Что вы можете указать в разделе Default_tags конфигурации поставщика AWS?

В разделе default_tags вы можете указать теги по умолчанию, которые применяются к ресурсам AWS, созданным Terraform. Это может быть полезно для организации и управления ресурсами.

CSS-FHXB3M DISPLAY-WEBKIT-BOX; дисплей-webkit-flex; Display-MS-Flexbox; Дисплей: Flex-Webkit-Flex-направление: Row-MS-Flex-направление: ряд; Гиб-направление: row-webkit-align-items: центр-Webkit-Box-Align: Center-MS-Flex-Align: Center; Align-Items: Center;. CSS-9A49Z0 Право маржи: 0.5рем; Высота: 2.5рем; Ширина: 2.5Rem-webkit-flex-shrink: 0-ms-flex-отрицательный: 0; Flex-Shrink: 0; переполнение: скрыто; граница-радий: 9999px; Рахул Локурте’S блог

Это решение использует Terraform версию 0.12.16, вы можете установить разные псевдонимы следующим образом. Затем Terraform использовал бы этих поставщиков, когда мы начнем создавать наши модули:

Terraform Support Eventbridge

Охто

Мы аррегировали подоаджолгн. SpoMOщHщ эtOй straoniцы mы smosememememopredetath, чto -aprosы otpra. То, что нужно?

Эta -steraniцa otobrana -overshy -aTeх -stuчah -obra -aTeх -stu -y -y -ogdaTomAtiчeskymi -stri -stri -rah -strhe -strhe -strhe -stri -stri -stri -stri -stri -stri -rah -rah -stristriouri Котора. Straoniцa -oprepaneTeTeTeTeTOTOTOTO -opobrasthep -apoSle -o, kak -эat. ДО СОМОМОНТА.

Иошнико -а -а -а -в -впологовый схлк -а -апросов. Esli-yspolheoute obhщiй dostup-vanterneTTHETHETHETHETHET,. Охраторс. Подеб.

Проверка, в котором я, eSli -voAchephephephephe -yvodyte -sloжne -apro Эмами, Или,.

Как вызвать функцию AWS Lambda с запланированными интервалами с правилом AWS Eventbridge с использованием Terraform

Как вызвать функцию AWS Lambda с запланированными интервалами с правилом AWS Eventbridge с использованием Terraform

Amazon Eventbridge Является ли автобусная служба без сервера, которую вы можете использовать для подключения ваших приложений с данными из различных источников. События имеют решающее значение для Eventbridge, а события наблюдаются. Event Bridge также поддерживает интеграцию со многими приложениями на базе SAAS и сторонними приложениями. Он также поддерживает отправку событий в другие службы AWS, такие как функции Lambda, пошаговые функции.

В этом блоге мы настроем правило Чтобы запустить функцию лямбды по графику каждые 2 минуты, используя Терраформ.

Структура проекта

  • Создайте новый каталог и перейдите в каталог

Mkdir lambda-schedule-event-bridge && CD Lambda-Schedule-Event Bridge 

МКДИР РЕСУРСЫ 

Создать лямбду

Создайте папку профиль-генератор-ламбда в Ресурсы папка и добавьте индекс.младший Файл с приведенным содержанием. Кроме того, инициализируйте проект узла и установите зависимости.

Mkdir Profile-Generator-Lambda && CD Профиль-генератор-ламбда индекс прикосновения.js npm init -y npm install faker 

констант faker = требовать("Faker/locale/en_ind"); экспорт.обработчик = асинхро (событие, контекст) => < позволять FirstName = Faker.имя.имя(); позволять Lastname = faker.имя.фамилия(); позволять Phonenumber = Faker.телефон.номер телефона(); позволять Автомобиль = Faker.транспортное средство.транспортное средство(); позволять Ответ = < имя: имя, фамилия: фамилия, номер телефона: номер телефона, тип машины: efhicletype,>; возвращаться < StatusCode: 200, заголовки: < "Тип содержимого": "Приложение/JSON", >, тело: Json.stringify (< профиль: ответ,>),>; >; 

Поставщики терраформ

Теперь мы напишем сценарии Terraform на языке HCL, где мы будем использовать поставщика AWS. Создать главное.Файл TF в корневом каталоге проекта и добавьте приведенное ниже контент.

коснуться основного.тфу 

терраформ < required_providers < aws = < источник "=" "Hashicorp/AWS" версия = "3.50.0 " >>> Поставщик "AWS" < # Параметры конфигурации область = var.региона профиль = var.aws_profile shared_credentials_file = var.shared_credentials_file default_tags < tags = var.tags >> 

  • Каждый модуль Terraform должен заявить, какие поставщики он требует, чтобы терраформ мог установить и использовать их. Требования поставщика объявляются в блоке _RequiredProviders.
  • Поставщики AWS требуют, чтобы конфигурации, такие как облачные регионы, профили, учетные данные, а также доступны, прежде чем они могут быть использованы.
  • Все значения будут предоставлены из параметров переменных.

Давайте создадим переменные.тфу В корневом каталоге проекта и добавьте приведенное ниже контент.

трогательные переменные.тфу 

переменная "область" < description = "Область развертывания" по умолчанию = "AP-South-1" > переменная "aws_profile" < description = "Имя в файле учетных данных" тип = строка default = "Рахул-Админ" > переменная "shared_credentials_file" < description = "Файл профиля с учетными данными в учетную запись AWS" тип = строка default = "~/.AWS/DELYES " > переменная "Теги" < description = "Карта тегов, чтобы добавить ко всем ресурсам." тип = map (строка) по умолчанию = < application = "Learning-tutor" env = "Тест" >> 

Каждая входная переменная, принятая модулем. Метка после ключевого слова переменной – это имя для переменной, которая должна быть уникальной среди всех переменных в одном и том же модуле.

  • Значение по умолчанию делает переменную необязательной.
  • Тип указывает, какие типы значений принимаются для переменной.
  • Описание указывает документацию входной переменной.

Терраформные модули

Теперь мы будем использовать модуль Terraform-AWS-модулы/лямбда/AWS, чтобы создать инфраструктуру Lambda и Lambda.

Создайте файлы лямбда.TF в корневом каталоге проекта и добавьте приведенное ниже контент.

Прикоснитесь к Lambda.тфу 

модуль "profile_generator_lambda" < источник "=" "Terraform-Aws-Modules/Lambda/AWS" версия = "2.7.0 " # Вставьте здесь 28 необходимых переменных здесь function_name = "Профиль-генератор-ламбда" Описание = &laquo;Генерирует новые профили&raquo; обработчик = "индекс.обработчик " время выполнения = "Nodejs14.Икс" Source_path = "$ /resources /profile-generator-lambda " теги = < Name = "Профиль-генератор-ламбда" >> 

Правило Eventbridge

Создайте файлы Event_bridge.тфу В корневом каталоге проекта и добавьте приведенное ниже контент.

Touch Event_bridge.тфу 

ресурс "AWS_CLOUDWATCH_EVENT_RULE" "Profile_Generator_lambda_event_rule" < name = &laquo;Профиль-генератор-ламбда-эвоян-rule&raquo; Описание = "Повторно запланировано каждые 2 минуты" gade_expression = "Оценка (2 минуты)" > ресурс "AWS_CLOUDWATCH_EVENT_TARGET" "Profile_Generator_lambda_Target" < arn = module.profile_generator_lambda.lambda_function_arn rule = aws_cloudwatch_event_rule.profile_generator_lambda_event_rule.name >ресурс "aws_lambda_permission" "Alluct_Cloudwatch_TO_CALL_RW_FALLOUT_RETRY_STEP_DELETION_LAMBDA" < statement_id = "AllingExecutionFromCloudWatch" действие = "Lambda: Invokefunction" function_name = модуль.profile_generator_lambda.lambda_function_name Принципал = "события.Amazonaws.ком " Source_arn = AWS_CLOUDWATCH_EVENT_RULE.profile_generator_lambda_event_rule.arn> 

Как можно увидеть выше, gade_expression атрибут имеет скорость 2 минуты. Это означает, что он запускает функцию лямбда, которая находится в цели, используя ресурс aws_cloudwatch_event_target.profile_generator_lambda_target. Мы также даем Lambda разрешение, так что событие сможет вызвать функцию.

Запустите сценарии Terraform

Давайте запустим 3 базовые команды Terraform для создания ресурсов в AWS.

  • Инициализируйте терраформ, который загрузит все поставщики и модули, используемые в конфигурации.

Terraform Init 

  • Проверьте, соответствует ли план ожидания, а также храните план в плане вывода

Терраформский план -out "планировать" 

  • После проверки плана примените изменения, чтобы получить желаемые компоненты инфраструктуры.

Терраформ применяется "планировать" 

Проверьте инфраструктуру на AWS

  • Лямбда с мостом события

Event-Bridge-1.png

Если вы проверете журналы Cloud Watch, вы увидите, что функция Lambda вызывается каждые 2 минуты.

Event-Bridge-2.png

Удалить ресурсы

Мы можем удалить ресурсы, созданные Terraform, выпустив приведенную ниже команду, чтобы мы не получили счета за ресурсы.

Терраформ уничтожает 

Заключение

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

Вы нашли эту статью ценной?

Поддерживать Рахул Локурте Став спонсором. Любая сумма ценится!

Трубы Eventbridge с использованием Terraform

В этом посте я покажу вам, как реализовать простое приложение, управляемое событиями, используя Eventbridge Pipes и Terraform. На момент написания этой статьи ресурсы Eventbridge Pipes не доступны с Терраформ AWS -провайдер, Поэтому я использую Terraform AWS Cloud Control Provider (AWSCC). Вы можете следовать этому связь Чтобы узнать больше о трубах Eventbridge.

Вариант использования

Позволять&rsquo;S говорит, что у нас есть приложение, которое обрабатывает запросы от разных типов клиентов, таких как Золото, серебро и платина. В настоящее время эти запросы публикуются в централизованной очереди SQS и обрабатываются потребительским приложением.

Теперь у нас есть новое требование, что мы хотим отфильтровать запросы всех клиентов Platinum и перерабатывать их, чтобы включить данные агента поддержки клиентов, прежде чем отправлять их в потребительскую службу. (См. Приведенную выше диаграмму)

Компоненты труб Eventbridge

На следующей диаграмме показаны основные компоненты труб Eventbridge, которые мы собираемся реализовать в этом примере.

Источник

Это отправная точка труб Eventbridge. Труба может получать события из различных источников, таких как SQS, DynamoDB и т. Д. В этом примере Pipe получает события из очереди SQS (запрос клиентов).

ресурс "aws_sqs_queue" "customer_request_sqs" name = "customer-request"
>

Фильтрация

Поскольку нам нужно отфильтровать события клиентов Platinum из исходных событий, мы можем включить необязательные &ldquo;Фильтрация&rdquo; шагнуть в трубу. Вы можете использовать шаблоны событий Amazon Eventbridge для написания критериев фильтрации. Как вы можете видеть в коде ниже, я использую Тип клиента Поле в корпусе сообщений SQS, чтобы отфильтровать события клиентов Platinum.

 фильтры = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]
>

Обогащение

Мы можем использовать этап обогащения труб Eventbridge для улучшения данных из источника, прежде чем отправлять их в цель. В этом примере этап обогащения выполняет следующие задачи.

  1. Преобразовать события перед отправкой их в цель обогащения.
  2. Включите дополнительные данные в полезную нагрузку события, используя функцию обогащения Lambda.

Преобразовать входное событие

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

 "id": "003", 
"customer_type": "Platinum",
&laquo;Запрос&raquo;: &laquo;Нужна техническая поддержка&raquo;,
&laquo;Серьезность&raquo;: &laquo;Высокий&raquo;,
&laquo;Созданный дат&raquo;: &laquo;2023–02–25&raquo;
>

Мы можем использовать трубы Eventbridge Трансформатор ввода обогащения Чтобы преобразовать событие, как ниже.

 "идентификатор": "", 
"Тип клиента": "",
"запрос": "",
"строгость":"",
"Дата создания": ""
>

2. Включите дополнительные данные в полезную нагрузку события

В этом примере мы хотим включить данные Агента поддержки клиентов в мероприятие, прежде чем отправлять их в потребительский сервис. Поэтому нам нужно переукачать событие и создать новое событие. Для этого мы можем использовать функцию Lambda в качестве целевого обогащения Eventbridge.

Модуль "enrich_customer_request_lambda" source = "terraform-aws-modules/lambda/aws"

function_name = "enrich-customer-request"
Source_path = "$/лямбда/обогащен
Handler = "Индекс.обработчик "
runtime = "nodejs18.Икс"
local_existing_package = "$/lambda/enrich-customer-request/index.zip "
create_role = false
lambda_role = aws_iam_role.enrich_customer_request_lambda_iam_role.Арн
>

Обогащение лямбда

Как вы можете видеть в коде ниже, я создаю новое событие, чтобы включить данные агента клиента и возвращать в трубу. Затем труба отправит обогащенные события на целевую функцию Lambda.

Экспорт константного обработчика = async (event) => Консоль.log ("фильтрованные события клиентов Platinum: %o", событие);

const EnchedEvents = []

if (Event && событие.длина> 0) событие.foreach (EventObj => let UpdateEvent = . EventObj,
. Agent_id: "0001",
Agent_name: "Марк Джон",
agent_email: "markj@abc.ком "
>
>
EnchedEvents.push (UpdateEvent);
>);
>
вернуть EnchedEvents;
>;

Цель

Это последний этап труб Eventbridge, которые обрабатывают данные, поступающие с шага обогащения. В этом примере мы используем функцию лямбды в качестве Цель.

Модуль "process_customer_request_lambda" source = "terraform-aws-modules/lambda/aws"

function_name = "Process-Customer-Request"
source_path = "$/лямбда/процесс-клик-реквист"
Handler = "Индекс.обработчик "
runtime = "nodejs18.Икс"
local_existing_package = "$/lambda/process-customer-request/index.zip "
create_role = false
lambda_role = aws_iam_role.process_customer_request_lambda_iam_role.Арн
>

Целевой обработчик Lambda

Экспорт константного обработчика = async (event) => Консоль.log ("обогащенные платиновые события клиентов: %o", событие);

if (Event && событие.длина> 0) событие.foreach (EventObject => Консоль.log (EventObject)
>);
>
возвращение события;
>;

Объединили все шаги

Ниже приведены AWSCC_PIPES_PIPE ресурс, который создает трубы Eventbridge со всеми шагами, которые мы обсуждали раньше. Вы можете скачать полный исходный код из этого связь.

Ресурс "AWSCC_PIPES_PIPE" "Pipe" name = "Pipe-Customer-Request" 
ROLE_ARN = AWS_IAM_ROLE.pipe_iam_role.Арн

Source = aws_sqs_queue.customer_request_sqs.Арн

Source_parameters = sqs = sqs_queue_parameters = batch_size = 10
>
>

filter_criteria = filters = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]
>
>

обогащение = модуль.enrich_customer_request_lambda.lambda_function_arn
Enrichment_parameters = input_template = "\", \ "customer_type \": \ "\", \ "Query \": \ "\", \ "revely \": \ "\", \ "create_date \": \ "\"> "
>

Target = модуль.process_customer_request_lambda.lambda_function_arn
>

Тестирование

Найдите пример файла запрос клиента.json в исходном коде и запустите ниже команду. Он опубликует пять запросов клиентов на SQS (2 платина, 1 золото и 2 серебряных запроса).

AWS SQS Send-Message-Batch \
--queue-url https: // sqs.США-восток-1.Amazonaws.com // customer-request \
--Регион США-восток-1 \
--файл записей: // customer-request.json

Обогащение лямбда

Следующее событие в журнале показывает преобразованное событие, которое Трубы Eventbridge, отправленные на функцию Enrichment Lambda.

Целевые журналы функций Lambda

Следующее событие журнала показывает обогащенное событие, которое произошло из Обогащение шаг.

Некоторые важные моменты

  • Если вы используете AWS KMS Custom Encryption Key (CMK) для шифрования источника, вы должны явно дать &ldquo;КМС: Дешиф&rdquo; разрешение на трубу&rsquo;S исполнение.
  • Если вы столкнулись с ошибкой, как ниже. Пожалуйста, удалите трубу и повторно запустите &ldquo;Терраформ применяется&rdquo;. Это известная проблема с awscc_pipe Resource.

 nosuchpath в источнике, Путь предоставлен: // sourceparameters/filtercriteria/filters/0/pattern

Рекомендации

AWS Eventbus с Terraform

Простое руководство по развертыванию CloudWatch Eventbus с Terraform. Если вы проверете официальную документацию Terraform, вы заметите, что она&rsquo;S довольно светлый и вы&rsquo;LL, вероятно, понадобится некоторое руководство на данный момент.

Я также держу свой блог обновлять новыми статьями с моей консалтинговой компанией, вы можете проверить по адресу https: // cdcloudlogix.com/блог для получения дополнительной информации 🙂

Это решение потребовало бы необходимости создать роль IAM для разрешения событий CloudWatch Путаницы в вашу удаленную учетную запись AWS.

1. Поставщики терраформ

Это решение использует Terraform версию 0.12.16, вы можете установить разные псевдонимы следующим образом. Затем Terraform использовал бы этих поставщиков, когда мы начнем создавать наши модули:

Вы можете найти всю эту конфигурацию в следующем репозитории GitHub, любые вопросы, пожалуйста, дайте мне знать &#55357;&#56835;.