variable "event_buses" { description = "Map of custom EventBridge event bus definitions (the default bus is always available)" type = map(object({ name = string description = optional(string, null) kms_key_identifier = optional(string, null) policy = optional(string, null) archive = optional(object({ name = string description = optional(string, null) retention_days = optional(number, 0) event_pattern = optional(string, null) }), null) })) default = {} } variable "rules" { description = "Map of EventBridge rule definitions" type = map(object({ name = string description = optional(string, null) event_bus_key = optional(string, null) event_bus_name = optional(string, "default") state = optional(string, "ENABLED") event_pattern = optional(string, null) schedule_expression = optional(string, null) role_arn = optional(string, null) })) default = {} } variable "targets" { description = "Map of EventBridge rule target definitions" type = map(object({ rule_key = string target_id = string arn = string role_arn = optional(string, null) input = optional(string, null) input_path = optional(string, null) event_bus_key = optional(string, null) event_bus_name = optional(string, "default") input_transformer = optional(object({ input_paths = optional(map(string), {}) input_template = string }), null) dead_letter_config = optional(object({ arn = string }), null) retry_policy = optional(object({ maximum_event_age_in_seconds = optional(number, 86400) maximum_retry_attempts = optional(number, 185) }), null) batch_target = optional(object({ job_definition = string job_name = string array_size = optional(number, null) job_attempts = optional(number, null) }), null) ecs_target = optional(object({ task_definition_arn = string launch_type = optional(string, "FARGATE") platform_version = optional(string, null) task_count = optional(number, 1) group = optional(string, null) network_configuration = optional(object({ subnets = list(string) security_groups = optional(list(string), []) assign_public_ip = optional(bool, false) }), null) }), null) sqs_target = optional(object({ message_group_id = optional(string, null) }), null) })) default = {} } variable "connections" { description = "Map of EventBridge API destination connection definitions" type = map(object({ name = string description = optional(string, null) authorization_type = string auth_parameters = object({ api_key = optional(object({ key = string value = string }), null) basic = optional(object({ username = string password = string }), null) oauth = optional(object({ authorization_endpoint = string http_method = string client_parameters = object({ client_id = string client_secret = string }) }), null) }) })) default = {} } variable "api_destinations" { description = "Map of EventBridge API destination definitions" type = map(object({ name = string description = optional(string, null) connection_key = string invocation_endpoint = string http_method = string invocation_rate_limit_per_second = optional(number, 300) })) default = {} } variable "pipes" { description = "Map of EventBridge Pipe definitions" type = map(object({ name = string description = optional(string, null) role_arn = string source = string target = string state = optional(string, "RUNNING") source_parameters = optional(object({ filter_criteria = optional(object({ filters = list(object({ pattern = string })) }), null) sqs_queue_parameters = optional(object({ batch_size = optional(number, null) maximum_batching_window_in_seconds = optional(number, null) }), null) kinesis_stream_parameters = optional(object({ starting_position = optional(string, "LATEST") batch_size = optional(number, null) maximum_batching_window_in_seconds = optional(number, null) maximum_retry_attempts = optional(number, null) }), null) dynamodb_stream_parameters = optional(object({ starting_position = optional(string, "LATEST") batch_size = optional(number, null) maximum_batching_window_in_seconds = optional(number, null) maximum_retry_attempts = optional(number, null) }), null) }), null) target_parameters = optional(object({ input_template = optional(string, null) sqs_queue_parameters = optional(object({ message_group_id = optional(string, null) message_deduplication_id = optional(string, null) }), null) lambda_function_parameters = optional(object({ invocation_type = optional(string, "FIRE_AND_FORGET") }), null) eventbridge_event_bus_parameters = optional(object({ detail_type = optional(string, null) endpoint_id = optional(string, null) source = optional(string, null) time = optional(string, null) resources = optional(list(string), []) }), null) }), null) })) default = {} } variable "tags" { description = "Resource tags to apply to all resources" type = map(string) default = {} }