Есть ли какой-либо конкретный тег ресурса c в terraform для создания правила в eventbridge - PullRequest
1 голос
/ 20 июня 2020

например, у нас есть тег ресурса для правила события в cloudwatch как aws_cloudwatch_event_rule

1 Ответ

1 голос
/ 20 июня 2020

Вам нужно будет использовать комбинацию aws_cloudwatch_event_rule , чтобы соответствовать событиям, которые вы хотите обработать с помощью EventBridge, и aws_cloudwatch_event_target для пересылки в другую шину событий EventBridge или что-то вроде Lambda, которое может напрямую обрабатывать события, или в очередь SQS, где события могут быть обработаны потребителем.

Вот полностью универсальный модуль c для этой цели:

main.tf:

# ------------------------------------------------------------------------------
# CREATE CLOUDWATCH RULES FOR EACH LOGICAL ROUTE TO MATCH EVENTS OF INTEREST
# ------------------------------------------------------------------------------

resource "aws_cloudwatch_event_rule" "captures" {
  for_each = var.event_routes

  name        = replace(replace(each.key, "[^\\.\\-_A-Za-z0-9]+", "-"), "_", "-")
  description = each.value.description

  event_pattern = jsonencode({
    "detail-type" = each.value.event_names
  })
}

# ------------------------------------------------------------------------------
# CONFIGURE EACH RULE TO FORWARD MATCHING EVENTS TO THE CORRESPONDING TARGET ARN
# ------------------------------------------------------------------------------

resource "aws_cloudwatch_event_target" "route" {
  for_each = var.event_routes

  target_id = each.key
  rule      = aws_cloudwatch_event_rule.captures[each.key].name
  arn       = each.value.target_arn
}

variables.tf:

variable "event_routes" {
  description = "A map from a meaningful operator shorthand to the target ARN and list of the event names that CloudWatch should forward to them."
  type = map(object({
    description = string
    event_names = list(string)
    target_arn  = string
  }))

  /*
  event_routes = {
    forward_to_kpi_tracker = {
      description = "Forward events to KPI tracker"
      event_names = [
        "UserSignedUp",
        "UserWatchedLessonVideo",
      ]
      target_arn = "arn:aws:events:ca-central-1:000000000000:event-bus/default"
    }
  }
  */
}

outputs.tf:

output "event_rule_name" {
  value = { for route_shorthand, route_details in var.event_routes :
    route_shorthand => aws_cloudwatch_event_rule.captures[route_shorthand].name
  }
}

output "event_rule_arn" {
  value = { for route_shorthand, route_details in var.event_routes :
    route_shorthand => aws_cloudwatch_event_rule.captures[route_shorthand].arn
  }
}

Цель может быть любой из следующего:

  • Экземпляры EC2
  • Команда запуска SSM
  • Автоматизация SSM
  • AWS Лямбда-функции
  • Потоки данных в Amazon Kinesis Data Streams
  • Потоки доставки данных в Amazon Kinesis Data Firehose
  • Задачи Amazon ECS
  • AWS Конечные автоматы Step Functions
  • AWS Пакетные задания
  • AWS Проекты CodeBuild
  • Конвейеры в AWS CodePipeline
  • Шаблоны оценки Amazon Inspector
  • Темы Amazon SNS
  • Очереди Amazon SQS, включая очереди FIFO
  • шина событий по умолчанию для другого аккаунта AWS

Из документов действий API PutTargets .

...