{"id":51410828,"url":"https://github.com/launchbynttdata/tf-aws-module_collection-eventbridge","last_synced_at":"2026-07-04T14:32:31.571Z","repository":{"id":350053310,"uuid":"1184300062","full_name":"launchbynttdata/tf-aws-module_collection-eventbridge","owner":"launchbynttdata","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-08T17:44:37.000Z","size":104,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T18:35:31.992Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/launchbynttdata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-17T13:04:34.000Z","updated_at":"2026-04-07T13:16:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/launchbynttdata/tf-aws-module_collection-eventbridge","commit_stats":null,"previous_names":["launchbynttdata/tf-aws-module_collection-eventbridge"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/launchbynttdata/tf-aws-module_collection-eventbridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-aws-module_collection-eventbridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-aws-module_collection-eventbridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-aws-module_collection-eventbridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-aws-module_collection-eventbridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/launchbynttdata","download_url":"https://codeload.github.com/launchbynttdata/tf-aws-module_collection-eventbridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-aws-module_collection-eventbridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35125718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-04T14:32:29.972Z","updated_at":"2026-07-04T14:32:31.557Z","avatar_url":"https://github.com/launchbynttdata.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tf-aws-module_collection-eventbridge\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![License: CC BY-NC-ND 4.0](https://img.shields.io/badge/License-CC_BY--NC--ND_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-nd/4.0/)\n\n## Overview\n\nTerraform collection module for AWS EventBridge: custom or existing event buses, rules and targets, archives, EventBridge Scheduler schedules and groups, Pipes, and API destinations. It composes Launch primitive modules from `terraform.registry.launch.nttdata.com` (pinned versions). Root data sources (`aws_caller_identity`, `aws_region`, `aws_cloudwatch_event_bus`) remain direct provider reads.\n\n- **Provider:** AWS `~\u003e 5.0`, Terraform `~\u003e 1.9`\n- **Tags:** `tags` is required (non-empty). Optional `required_tag_keys` enforces organizational keys.\n- **Example:** [`examples/complete`](examples/complete) (uses `test.tfvars` for Terratest).\n\n## Resource name overrides\n\n**`name_override`** (`pipes[*]`, `schedules[*]`): When set, this exact string becomes the\ndeployed AWS resource name, bypassing the `{standard}-{logical_name}` Launch naming convention.\nUse when an external naming system (e.g. an ADO resource-names module) pre-computes the full AWS\nname and callers need to preserve existing resource identities across refactors.\nThe field is optional; omitting it retains the existing naming behavior unchanged.\nLength validation: 1–64 characters (AWS pipe and schedule name limit).\n\n## Upgrading (breaking changes)\n\n- **`advanced_config`:** Removed. It was unused in resource logic; see [Future improvement: optional passthrough / escape hatches](#future-improvement-optional-passthrough--escape-hatches) for how to extend the module instead. Drop the argument and any outputs that referenced it.\n- **Rule names:** Rules are created with the same naming prefix pattern as archives, pipes, and schedules (`resource_names[\"event_rule\"]` + logical `rules[*].name`). The `rule_names` output returns those **deployed** AWS names (in input order), not the bare logical names. Update external references, metric filters, and Terratest expectations accordingly.\n- **`archives`:** The `kms_key_arn` argument was removed from the object type until the archive primitive supports KMS.\n- **`rules`:** Each rule must declare at least one target; duplicate logical rule names, invalid event patterns, and unsupported target types for generated IAM are rejected at plan time via variable validation.\n- **`bus.policies`:** Policy attachments use **`sha256(policy)`** as the `for_each` key so reordering the policy list does not destroy and recreate resources.\n\n## IAM policies\n\nRoles created when `create_role = true` (EventBridge targets, Scheduler, Pipes) use **`module_primitive/iam_role`**, **`module_primitive/iam_policy`**, and **`module_primitive/iam_role_policy_attachment`** with trust policies for the relevant service principal (`events.amazonaws.com`, `scheduler.amazonaws.com`, `pipes.amazonaws.com`). Trust policies always include **`aws:SourceAccount`**. **Scheduler** roles use **SourceAccount only** so `CreateSchedule` can validate assume-role (a schedule-scoped `aws:SourceArn` condition is often rejected before the schedule exists). **EventBridge rule targets** and **Pipes** also add **`aws:SourceArn`** for the specific rule or pipe ARN. Permission statements use **specific resource ARNs** (targets, queues, topics, etc.). This module does **not** emit `Resource: \"*\"` in generated policies.\n\n**Pipes execution logging:** When you set `pipes[*].log_configuration` and/or `managed_execution_logging`, and `create_role = true`, generated pipe policies include CloudWatch Logs (`logs:CreateLogStream`, `logs:PutLogEvents` on the log group), optional Firehose and S3 actions for those destinations, and KMS decrypt/generate for `execution_logs_kms_key_arn` (or the CMK on a managed log group) when encryption applies. If `create_role = false`, attach the same permissions to your `role_arn`. See [Amazon EventBridge Pipes logging](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes-logs.html).\n\nScheduler, pipe, and rule-target IAM for `create_role = true` only covers **documented** target and enrichment ARN patterns; unsupported ARNs fail variable validation instead of producing empty policy actions.\n\nIf a future change requires a wildcard `Resource` for a particular AWS action, that statement must be isolated, commented in Terraform with **why** it is required, and documented here with a link to the relevant **AWS documentation** (for example [IAM policy elements](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) and the service’s permissions reference).\n\n## API destinations and connections\n\nConnections and API destinations use **`module_primitive/cloudwatch_event_connection`** (1.0.0) and **`module_primitive/cloudwatch_event_api_destination`** (0.1.0). The connection module is called with `description = \"\"` and `kms_key_identifier = \"\"` instead of `null` so Terraform does not evaluate `length(null)` in that primitive’s variable validations.\n\n## Tests\n\n- `tests/post_deploy_functional` — deploy, SDK checks, `PutEvents` mutating test\n- `tests/post_deploy_functional_readonly` — `RunNonDestructiveTest`, read-only SDK checks only\n- `tests/review_plan` — plan-only regressions (schedule groups, pipe IAM, pipe execution logging IAM, API destination naming, duplicate-name validation, Firehose scheduler IAM, stable bus policy keys)\n\n**CI vs local:** When `CI=true` (e.g. GitHub Actions), `post_deploy_functional` still runs **Terraform apply/destroy** and all SDK checks except the long **PutEvents→SNS→SQS sink** subtest (that subtest is skipped to avoid multi-minute SQS drain/long-poll in workflows). Run the full functional suite locally with AWS credentials:\n\n```bash\ngo test -v -timeout 30m ./tests/post_deploy_functional/...\ngo test -v -timeout 15m ./tests/post_deploy_functional_readonly/...   # requires examples/complete already applied\n```\n\nLocal functional runs use verbose Terraform stdout logging and progress logs during the long SQS drain/long-poll step.\n\nConfigure AWS credentials and run from the repo root with `mise`/`asdf` Go and Terraform as appropriate.\n\n## Future improvement: optional passthrough / escape hatches\n\nThis module intentionally avoids a generic `any`-typed “advanced config” input: it implied behavior without implementing it, encouraged opaque merges that are hard to review, and complicated static analysis. If a real need appears—for example, wiring a new argument on a primitive before the collection’s typed object model catches up—a better path is:\n\n1. **Prefer explicit variables** on the collection module that map to documented primitive arguments, with validation and README notes.\n2. **If many optional knobs are needed**, introduce a **narrowly typed** `optional(object({ ... }))` per concern (e.g. scheduler-only overrides) rather than one global bag.\n3. **Last resort:** document any merge semantics, forbid bypassing tagging and IAM controls in module policy, and add review-plan or contract tests so passthrough cannot silently widen blast radius.\n\nUntil then, callers should extend via separate resources or upstream module changes rather than an unused placeholder variable.\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | ~\u003e 1.9 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | ~\u003e 5.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | 5.100.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_event_api_destination\"\u003e\u003c/a\u003e [event\\_api\\_destination](#module\\_event\\_api\\_destination) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_event_api_destination/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_event_archive\"\u003e\u003c/a\u003e [event\\_archive](#module\\_event\\_archive) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_event_archive/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_event_bus\"\u003e\u003c/a\u003e [event\\_bus](#module\\_event\\_bus) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_event_bus/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_event_bus_policy\"\u003e\u003c/a\u003e [event\\_bus\\_policy](#module\\_event\\_bus\\_policy) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_event_bus_policy/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_event_connection\"\u003e\u003c/a\u003e [event\\_connection](#module\\_event\\_connection) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_event_connection/aws | ~\u003e 1.0 |\n| \u003ca name=\"module_event_rule\"\u003e\u003c/a\u003e [event\\_rule](#module\\_event\\_rule) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_event_rule/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_event_target\"\u003e\u003c/a\u003e [event\\_target](#module\\_event\\_target) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_event_target/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_policy_event_target\"\u003e\u003c/a\u003e [iam\\_policy\\_event\\_target](#module\\_iam\\_policy\\_event\\_target) | terraform.registry.launch.nttdata.com/module_primitive/iam_policy/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_policy_pipe\"\u003e\u003c/a\u003e [iam\\_policy\\_pipe](#module\\_iam\\_policy\\_pipe) | terraform.registry.launch.nttdata.com/module_primitive/iam_policy/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_policy_scheduler\"\u003e\u003c/a\u003e [iam\\_policy\\_scheduler](#module\\_iam\\_policy\\_scheduler) | terraform.registry.launch.nttdata.com/module_primitive/iam_policy/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_role_event_target\"\u003e\u003c/a\u003e [iam\\_role\\_event\\_target](#module\\_iam\\_role\\_event\\_target) | terraform.registry.launch.nttdata.com/module_primitive/iam_role/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_role_pipe\"\u003e\u003c/a\u003e [iam\\_role\\_pipe](#module\\_iam\\_role\\_pipe) | terraform.registry.launch.nttdata.com/module_primitive/iam_role/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_role_policy_attachment_event_target\"\u003e\u003c/a\u003e [iam\\_role\\_policy\\_attachment\\_event\\_target](#module\\_iam\\_role\\_policy\\_attachment\\_event\\_target) | terraform.registry.launch.nttdata.com/module_primitive/iam_role_policy_attachment/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_role_policy_attachment_pipe\"\u003e\u003c/a\u003e [iam\\_role\\_policy\\_attachment\\_pipe](#module\\_iam\\_role\\_policy\\_attachment\\_pipe) | terraform.registry.launch.nttdata.com/module_primitive/iam_role_policy_attachment/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_role_policy_attachment_scheduler\"\u003e\u003c/a\u003e [iam\\_role\\_policy\\_attachment\\_scheduler](#module\\_iam\\_role\\_policy\\_attachment\\_scheduler) | terraform.registry.launch.nttdata.com/module_primitive/iam_role_policy_attachment/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_iam_role_scheduler\"\u003e\u003c/a\u003e [iam\\_role\\_scheduler](#module\\_iam\\_role\\_scheduler) | terraform.registry.launch.nttdata.com/module_primitive/iam_role/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_pipe_execution_log_group\"\u003e\u003c/a\u003e [pipe\\_execution\\_log\\_group](#module\\_pipe\\_execution\\_log\\_group) | terraform.registry.launch.nttdata.com/module_primitive/cloudwatch_log_group/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_pipes_pipe\"\u003e\u003c/a\u003e [pipes\\_pipe](#module\\_pipes\\_pipe) | terraform.registry.launch.nttdata.com/module_primitive/pipes_pipe/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_resource_names\"\u003e\u003c/a\u003e [resource\\_names](#module\\_resource\\_names) | terraform.registry.launch.nttdata.com/module_library/resource_name/launch | ~\u003e 2.0 |\n| \u003ca name=\"module_scheduler_schedule\"\u003e\u003c/a\u003e [scheduler\\_schedule](#module\\_scheduler\\_schedule) | terraform.registry.launch.nttdata.com/module_primitive/scheduler_schedule/aws | ~\u003e 0.0 |\n| \u003ca name=\"module_scheduler_schedule_group\"\u003e\u003c/a\u003e [scheduler\\_schedule\\_group](#module\\_scheduler\\_schedule\\_group) | terraform.registry.launch.nttdata.com/module_primitive/scheduler_schedule_group/aws | ~\u003e 0.0 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |\n| [aws_cloudwatch_event_bus.existing](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/cloudwatch_event_bus) | data source |\n| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_api_destinations\"\u003e\u003c/a\u003e [api\\_destinations](#input\\_api\\_destinations) | API destinations (connection + destination). When rate\\_limit\\_per\\_second is null, the module uses 300 invocations per second (AWS default-style cap). | \u003cpre\u003elist(object({\u003cbr/\u003e    connection_name       = string\u003cbr/\u003e    authorization_type    = string\u003cbr/\u003e    auth_parameters       = any\u003cbr/\u003e    destination_name      = string\u003cbr/\u003e    invocation_endpoint   = string\u003cbr/\u003e    http_method           = string\u003cbr/\u003e    rate_limit_per_second = optional(number)\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_archives\"\u003e\u003c/a\u003e [archives](#input\\_archives) | Event archives on the effective event bus. KMS encryption on archives is not supported until the cloudwatch\\_event\\_archive primitive exposes a KMS argument. | \u003cpre\u003elist(object({\u003cbr/\u003e    name               = string\u003cbr/\u003e    event_pattern_json = optional(string)\u003cbr/\u003e    retention_days     = optional(number)\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_bus\"\u003e\u003c/a\u003e [bus](#input\\_bus) | Event bus configuration: create a custom bus or use an existing bus. | \u003cpre\u003eobject({\u003cbr/\u003e    create            = bool\u003cbr/\u003e    name              = optional(string)\u003cbr/\u003e    existing_bus_name = optional(string)\u003cbr/\u003e    existing_bus_arn  = optional(string)\u003cbr/\u003e    policies          = optional(list(string), [])\u003cbr/\u003e  })\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_class_env\"\u003e\u003c/a\u003e [class\\_env](#input\\_class\\_env) | Environment class (e.g. dev, qa, prod) for resource naming. | `string` | `\"dev\"` | no |\n| \u003ca name=\"input_instance_env\"\u003e\u003c/a\u003e [instance\\_env](#input\\_instance\\_env) | Numeric instance of the environment for resource naming. | `number` | `0` | no |\n| \u003ca name=\"input_instance_resource\"\u003e\u003c/a\u003e [instance\\_resource](#input\\_instance\\_resource) | Numeric instance of the resource for resource naming. | `number` | `0` | no |\n| \u003ca name=\"input_logical_product_family\"\u003e\u003c/a\u003e [logical\\_product\\_family](#input\\_logical\\_product\\_family) | Product family name used by the resource naming module. | `string` | `\"launch\"` | no |\n| \u003ca name=\"input_logical_product_service\"\u003e\u003c/a\u003e [logical\\_product\\_service](#input\\_logical\\_product\\_service) | Product service name used by the resource naming module. | `string` | `\"eventbridge\"` | no |\n| \u003ca name=\"input_pipes\"\u003e\u003c/a\u003e [pipes](#input\\_pipes) | EventBridge Pipes. `name_override`: when set, used verbatim as the AWS pipe name instead of the Launch `{standard}-{name}` prefix (1–64 chars). Optional `log_configuration` (execution logs; `level` required when set), `managed_execution_logging` (creates a CloudWatch log group; mutually exclusive with `log_configuration.cloudwatch_logs_log_destination`), and `execution_logs_kms_key_arn` for encrypted logs. | \u003cpre\u003elist(object({\u003cbr/\u003e    name                  = string\u003cbr/\u003e    name_override         = optional(string)\u003cbr/\u003e    source_arn            = string\u003cbr/\u003e    source_parameters     = optional(any)\u003cbr/\u003e    filter_criteria       = optional(any)\u003cbr/\u003e    enrichment_arn        = optional(string)\u003cbr/\u003e    enrichment_parameters = optional(any)\u003cbr/\u003e    target_arn            = string\u003cbr/\u003e    target_parameters     = optional(any)\u003cbr/\u003e    role_arn              = optional(string)\u003cbr/\u003e    create_role           = optional(bool, false)\u003cbr/\u003e    source_kms_key_arn    = optional(string)\u003cbr/\u003e    log_configuration     = optional(any)\u003cbr/\u003e    managed_execution_logging = optional(any)\u003cbr/\u003e    execution_logs_kms_key_arn = optional(string)\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_required_tag_keys\"\u003e\u003c/a\u003e [required\\_tag\\_keys](#input\\_required\\_tag\\_keys) | If non-empty, every key listed here must exist in tags. | `list(string)` | `[]` | no |\n| \u003ca name=\"input_resource_names_map\"\u003e\u003c/a\u003e [resource\\_names\\_map](#input\\_resource\\_names\\_map) | Map consumed by the resource naming module (for\\_each key -\u003e { name, max\\_length }). | \u003cpre\u003emap(object({\u003cbr/\u003e    name       = string\u003cbr/\u003e    max_length = optional(number, 60)\u003cbr/\u003e  }))\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"api_destination\": {\u003cbr/\u003e    \"max_length\": 64,\u003cbr/\u003e    \"name\": \"apid\"\u003cbr/\u003e  },\u003cbr/\u003e  \"event_archive\": {\u003cbr/\u003e    \"max_length\": 48,\u003cbr/\u003e    \"name\": \"arc\"\u003cbr/\u003e  },\u003cbr/\u003e  \"event_bus\": {\u003cbr/\u003e    \"max_length\": 256,\u003cbr/\u003e    \"name\": \"ebus\"\u003cbr/\u003e  },\u003cbr/\u003e  \"event_connection\": {\u003cbr/\u003e    \"max_length\": 64,\u003cbr/\u003e    \"name\": \"conn\"\u003cbr/\u003e  },\u003cbr/\u003e  \"event_rule\": {\u003cbr/\u003e    \"max_length\": 64,\u003cbr/\u003e    \"name\": \"rule\"\u003cbr/\u003e  },\u003cbr/\u003e  \"pipe\": {\u003cbr/\u003e    \"max_length\": 64,\u003cbr/\u003e    \"name\": \"pipe\"\u003cbr/\u003e  },\u003cbr/\u003e  \"schedule\": {\u003cbr/\u003e    \"max_length\": 64,\u003cbr/\u003e    \"name\": \"sched\"\u003cbr/\u003e  },\u003cbr/\u003e  \"schedule_group\": {\u003cbr/\u003e    \"max_length\": 64,\u003cbr/\u003e    \"name\": \"sgrp\"\u003cbr/\u003e  }\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_rules\"\u003e\u003c/a\u003e [rules](#input\\_rules) | EventBridge rules and targets on the effective event bus. | \u003cpre\u003elist(object({\u003cbr/\u003e    name               = string\u003cbr/\u003e    description        = optional(string)\u003cbr/\u003e    state              = optional(string, \"ENABLED\")\u003cbr/\u003e    event_pattern_json = string\u003cbr/\u003e    targets = list(object({\u003cbr/\u003e      name                       = string\u003cbr/\u003e      arn                        = string\u003cbr/\u003e      type                       = string\u003cbr/\u003e      role_arn                   = optional(string)\u003cbr/\u003e      create_role                = optional(bool, false)\u003cbr/\u003e      dlq_arn                    = optional(string)\u003cbr/\u003e      retry_policy               = optional(any)\u003cbr/\u003e      input_json                 = optional(string)\u003cbr/\u003e      input_path                 = optional(string)\u003cbr/\u003e      input_transformer          = optional(any)\u003cbr/\u003e      service_specific_overrides = optional(any)\u003cbr/\u003e    }))\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_schedule_groups\"\u003e\u003c/a\u003e [schedule\\_groups](#input\\_schedule\\_groups) | Scheduler schedule groups to create. Map keys must be static strings in configuration (Terraform for\\_each keys).\u003cbr/\u003eValues.name is the AWS group name and may depend on apply-time values (e.g. random\\_id). Schedules that use a\u003cbr/\u003ecustom group must set group\\_name to the same name string; schedules using only the built-in \"default\" group\u003cbr/\u003ecan omit group\\_name. | \u003cpre\u003emap(object({\u003cbr/\u003e    name = string\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_schedules\"\u003e\u003c/a\u003e [schedules](#input\\_schedules) | EventBridge Scheduler schedules. `name_override`: when set, used verbatim as the AWS schedule name instead of the Launch `{standard}-{name}` prefix (1–64 chars). | \u003cpre\u003elist(object({\u003cbr/\u003e    name                         = string\u003cbr/\u003e    name_override                = optional(string)\u003cbr/\u003e    group_name                   = optional(string)\u003cbr/\u003e    schedule_expression          = string\u003cbr/\u003e    schedule_expression_timezone = optional(string)\u003cbr/\u003e    start_date                   = optional(string)\u003cbr/\u003e    end_date                     = optional(string)\u003cbr/\u003e    flexible_time_window         = optional(any)\u003cbr/\u003e    target_arn                   = string\u003cbr/\u003e    target_input_json            = optional(string)\u003cbr/\u003e    retry_policy                 = optional(any)\u003cbr/\u003e    dead_letter_arn              = optional(string)\u003cbr/\u003e    role_arn                     = optional(string)\u003cbr/\u003e    create_role                  = optional(bool, false)\u003cbr/\u003e    ecs_parameters               = optional(any)\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Required organizational tags applied to all taggable resources. | `map(string)` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_api_destination_arns\"\u003e\u003c/a\u003e [api\\_destination\\_arns](#output\\_api\\_destination\\_arns) | API destination ARNs sorted by composite key. |\n| \u003ca name=\"output_archive_arns\"\u003e\u003c/a\u003e [archive\\_arns](#output\\_archive\\_arns) | Archive ARNs sorted by archive key. |\n| \u003ca name=\"output_archive_names\"\u003e\u003c/a\u003e [archive\\_names](#output\\_archive\\_names) | Archive names sorted by key. |\n| \u003ca name=\"output_bus_arn\"\u003e\u003c/a\u003e [bus\\_arn](#output\\_bus\\_arn) | Effective event bus ARN. |\n| \u003ca name=\"output_bus_name\"\u003e\u003c/a\u003e [bus\\_name](#output\\_bus\\_name) | Effective event bus name. |\n| \u003ca name=\"output_connection_arns\"\u003e\u003c/a\u003e [connection\\_arns](#output\\_connection\\_arns) | Event connection ARNs sorted by connection\\_name (one connection per distinct name). |\n| \u003ca name=\"output_event_target_iam_role_names\"\u003e\u003c/a\u003e [event\\_target\\_iam\\_role\\_names](#output\\_event\\_target\\_iam\\_role\\_names) | Names of IAM roles created for EventBridge targets (create\\_role = true), keyed by rule:target. |\n| \u003ca name=\"output_pipe_arns\"\u003e\u003c/a\u003e [pipe\\_arns](#output\\_pipe\\_arns) | Pipe ARNs sorted by pipe name. |\n| \u003ca name=\"output_pipe_execution_log_group_arns\"\u003e\u003c/a\u003e [pipe\\_execution\\_log\\_group\\_arns](#output\\_pipe\\_execution\\_log\\_group\\_arns) | CloudWatch log group ARNs created for pipes with managed\\_execution\\_logging, keyed by logical pipe name. |\n| \u003ca name=\"output_pipe_execution_log_group_names\"\u003e\u003c/a\u003e [pipe\\_execution\\_log\\_group\\_names](#output\\_pipe\\_execution\\_log\\_group\\_names) | CloudWatch log group names created for pipes with managed\\_execution\\_logging, keyed by logical pipe name. |\n| \u003ca name=\"output_pipe_iam_role_names\"\u003e\u003c/a\u003e [pipe\\_iam\\_role\\_names](#output\\_pipe\\_iam\\_role\\_names) | Names of IAM roles created for Pipes (create\\_role = true). |\n| \u003ca name=\"output_required_tag_keys\"\u003e\u003c/a\u003e [required\\_tag\\_keys](#output\\_required\\_tag\\_keys) | Echo of var.required\\_tag\\_keys after validation (for policy and composition). |\n| \u003ca name=\"output_rule_arns\"\u003e\u003c/a\u003e [rule\\_arns](#output\\_rule\\_arns) | Rule ARNs sorted by rule name for stable ordering. |\n| \u003ca name=\"output_rule_names\"\u003e\u003c/a\u003e [rule\\_names](#output\\_rule\\_names) | Deployed EventBridge rule names (prefixed), in the same order as var.rules. |\n| \u003ca name=\"output_schedule_arns\"\u003e\u003c/a\u003e [schedule\\_arns](#output\\_schedule\\_arns) | Schedule ARNs sorted by schedule name. |\n| \u003ca name=\"output_scheduler_iam_role_names\"\u003e\u003c/a\u003e [scheduler\\_iam\\_role\\_names](#output\\_scheduler\\_iam\\_role\\_names) | Names of IAM roles created for Scheduler targets (create\\_role = true). |\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaunchbynttdata%2Ftf-aws-module_collection-eventbridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaunchbynttdata%2Ftf-aws-module_collection-eventbridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaunchbynttdata%2Ftf-aws-module_collection-eventbridge/lists"}