diff --git a/LICENSE b/LICENSE
index 66d9b33..55d96d0 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2023-2025 Dave Hall
+Copyright (c) 2023-2026 Dave Hall, https://proactiveops.io
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index e9274cd..c817b31 100644
--- a/README.md
+++ b/README.md
@@ -205,7 +205,7 @@ module "eventbus_dlq_example" {
source = "git::ssh://git@github.com/proactiveops/eventbus//modules/dlq?ref=main"
queue_name = "[sub-name]-[optional-rule-name]" # Must not exceed 60 characters as the module appends "-dlq" to the name
- kms_key_id = aws_kms_key.my_key.id # omit if you want a new KMS key to be created.
+ kms_key_id = aws_kms_key.my_key.id # The key is required. If needed, create a new one and pass it to the module.
tags = var.tags
}
@@ -220,13 +220,13 @@ EventBus++ is built and maintained by [ProactiveOps](https://proactiveops.com/).
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.0, < 2.0 |
-| [aws](#requirement\_aws) | >= 4.0, <6.0 |
+| [aws](#requirement\_aws) | >= 5.0, <7.0 |
## Providers
| Name | Version |
|------|---------|
-| [aws](#provider\_aws) | 5.94.1 |
+| [aws](#provider\_aws) | >= 5.0, <7.0 |
## Modules
diff --git a/event_bus.tf b/event_bus.tf
index 03b2491..254d9ee 100644
--- a/event_bus.tf
+++ b/event_bus.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
resource "aws_cloudwatch_event_bus" "this" {
name = local.namespace
diff --git a/event_bus_iam.tf b/event_bus_iam.tf
index b0f690f..3fc8260 100644
--- a/event_bus_iam.tf
+++ b/event_bus_iam.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
data "aws_iam_policy_document" "event_bus" {
statement {
sid = "iamManageBus"
diff --git a/event_bus_rules.tf b/event_bus_rules.tf
index 8d8423d..0100e6b 100644
--- a/event_bus_rules.tf
+++ b/event_bus_rules.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
resource "aws_cloudwatch_event_rule" "targets" {
for_each = { for index, rule in var.cross_bus_rules : rule.name => rule }
diff --git a/examples/full/main.tf b/examples/full/main.tf
index 02e2918..1c786a4 100644
--- a/examples/full/main.tf
+++ b/examples/full/main.tf
@@ -1,17 +1,32 @@
-/**
- * Example of using EventBus++ module with multiple event buses and cross-bus rules.
- */
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
+resource "aws_kms_key" "this" {
+ description = "EvenBus Example"
+
+ deletion_window_in_days = 14
+ enable_key_rotation = true
+
+ tags = local.tags
+}
+
+resource "aws_kms_alias" "this" {
+ name = "alias/eventbus-example"
+ target_key_id = aws_kms_key.this.key_id
+}
module "eventbus_dlq_example" {
source = "../../modules/dlq"
+ kms_key_id = aws_kms_alias.this.arn
queue_name = "example"
- tags = local.tags
+
+ tags = local.tags
}
module "eventbus_partner" {
source = "../../"
+ # Note: Zendesk no longer supports EventBridge partnet buses.
name = "aws.partner/zendesk.com/12345678/default"
cross_bus_rules = [
diff --git a/main.tf b/main.tf
index 9494696..c778da8 100644
--- a/main.tf
+++ b/main.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
data "aws_caller_identity" "current" {}
data "aws_partition" "current" {}
diff --git a/modules/dlq/README.md b/modules/dlq/README.md
index 283e204..0af08d6 100644
--- a/modules/dlq/README.md
+++ b/modules/dlq/README.md
@@ -1,20 +1,20 @@
-
# EventBus Dead Letter Queue (DLQ) Sub Module
This module creates a SQS queue that can be used by Amazon EventBridge as a DLQ.
+
## Requirements
| Name | Version |
|------|---------|
-| [terraform](#requirement\_terraform) | >= 1.0 |
-| [aws](#requirement\_aws) | >= 4.0 |
+| [terraform](#requirement\_terraform) | >= 1.0, < 2.0 |
+| [aws](#requirement\_aws) | >= 5.0, <7.0 |
## Providers
| Name | Version |
|------|---------|
-| [aws](#provider\_aws) | >= 4.0 |
+| [aws](#provider\_aws) | >= 5.0, <7.0 |
## Modules
@@ -24,19 +24,15 @@ No modules.
| Name | Type |
|------|------|
-| [aws_kms_alias.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_alias) | resource |
-| [aws_kms_key.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key) | resource |
| [aws_sqs_queue.dlq](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue) | resource |
| [aws_sqs_queue_policy.dlq](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sqs_queue_policy) | resource |
-| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
| [aws_iam_policy_document.dlq](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
-| [aws_iam_policy_document.kms](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
-| [kms\_key\_id](#input\_kms\_key\_id) | The ID of the existing KMS key. If empty, then a new key will be created with permissions for EventBridge. | `string` | `""` | no |
+| [kms\_key\_id](#input\_kms\_key\_id) | The ID of the existing KMS key. | `string` | n/a | yes |
| [queue\_name](#input\_queue\_name) | The name of the queue to create. -dlq will be appended to the end. The name should the [bus-name]-[rule-name] convention. | `string` | n/a | yes |
| [tags](#input\_tags) | Tags help you manage, identify, organize search and filter resources. | `map(string)` | n/a | yes |
diff --git a/modules/dlq/kms.tf b/modules/dlq/kms.tf
deleted file mode 100644
index 8107863..0000000
--- a/modules/dlq/kms.tf
+++ /dev/null
@@ -1,46 +0,0 @@
-data "aws_iam_policy_document" "kms" {
- statement {
- sid = "IAMAdmin"
- effect = "Allow"
- actions = [
- "kms:*"
- ]
- resources = ["*"]
-
- principals {
- type = "AWS"
- identifiers = [data.aws_caller_identity.current.account_id]
- }
- }
-
- statement {
- sid = "EventBridgeToSQS"
- effect = "Allow"
- actions = [
- "kms:Decrypt",
- "kms:GenerateDataKey"
- ]
- resources = ["*"]
-
- principals {
- type = "Service"
- identifiers = ["events.amazonaws.com"]
- }
- }
-}
-
-resource "aws_kms_key" "this" {
- count = local.kms_count
- description = "KMS key for ${var.queue_name} DLQ"
- policy = data.aws_iam_policy_document.kms.json
-
- enable_key_rotation = true
-
- tags = var.tags
-}
-
-resource "aws_kms_alias" "this" {
- count = local.kms_count
- name = "alias/sqs-${var.queue_name}"
- target_key_id = aws_kms_key.this[0].arn
-}
diff --git a/modules/dlq/main.tf b/modules/dlq/main.tf
deleted file mode 100644
index 0fb0590..0000000
--- a/modules/dlq/main.tf
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
-* # EventBus Dead Letter Queue (DLQ) Sub Module
-*
-* This module creates a SQS queue that can be used by Amazon EventBridge as a DLQ.
-*/
-data "aws_caller_identity" "current" {}
diff --git a/modules/dlq/outputs.tf b/modules/dlq/outputs.tf
index f32bb8e..e216cfb 100644
--- a/modules/dlq/outputs.tf
+++ b/modules/dlq/outputs.tf
@@ -1,9 +1,11 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
output "arn" {
value = aws_sqs_queue.dlq.arn
description = "The ARN of the dead letter queue."
}
output "kms_id" {
- value = local.kms_key_id
+ value = var.kms_key_id
description = "The ID of the KMS used by the queue."
}
diff --git a/modules/dlq/sqs.tf b/modules/dlq/sqs.tf
index 3ee9cf3..0086189 100644
--- a/modules/dlq/sqs.tf
+++ b/modules/dlq/sqs.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
resource "aws_sqs_queue" "dlq" {
name = "${var.queue_name}-dlq"
@@ -6,7 +8,7 @@ resource "aws_sqs_queue" "dlq" {
receive_wait_time_seconds = 0
max_message_size = 262144
- kms_master_key_id = local.kms_key_id
+ kms_master_key_id = var.kms_key_id
tags = var.tags
}
@@ -26,7 +28,7 @@ data "aws_iam_policy_document" "dlq" {
}
dynamic "statement" {
- for_each = local.kms_count == 1 ? [1] : []
+ for_each = var.kms_key_id == null ? [1] : []
content {
sid = "events-policy"
effect = "Allow"
@@ -39,7 +41,7 @@ data "aws_iam_policy_document" "dlq" {
identifiers = ["events.amazonaws.com"]
}
resources = [
- local.kms_key_id
+ var.kms_key_id
]
}
}
diff --git a/modules/dlq/variables.tf b/modules/dlq/variables.tf
index 8808e1a..cca911c 100644
--- a/modules/dlq/variables.tf
+++ b/modules/dlq/variables.tf
@@ -1,7 +1,8 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
variable "kms_key_id" {
- description = "The ID of the existing KMS key. If empty, then a new key will be created with permissions for EventBridge."
+ description = "The ID of the existing KMS key."
type = string
- default = ""
}
variable "queue_name" {
@@ -13,8 +14,3 @@ variable "tags" {
description = "Tags help you manage, identify, organize search and filter resources."
type = map(string)
}
-
-locals {
- kms_count = var.kms_key_id == "" ? 1 : 0
- kms_key_id = local.kms_count == 1 ? aws_kms_key.this[0].id : var.kms_key_id
-}
diff --git a/modules/dlq/versions.tf b/modules/dlq/versions.tf
index 6b548b0..264b8d1 100644
--- a/modules/dlq/versions.tf
+++ b/modules/dlq/versions.tf
@@ -1,5 +1,7 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
terraform {
- required_version = ">= 1.0"
+ required_version = ">= 1.0, < 2.0"
required_providers {
aws = {
diff --git a/outputs.tf b/outputs.tf
index bfc89d3..2011368 100644
--- a/outputs.tf
+++ b/outputs.tf
@@ -1,3 +1,4 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
output "bus" {
value = aws_cloudwatch_event_bus.this
diff --git a/schema_discovery.tf b/schema_discovery.tf
index 784a204..0ed5d09 100644
--- a/schema_discovery.tf
+++ b/schema_discovery.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
resource "aws_schemas_discoverer" "this" {
count = var.enable_schema_discovery_registry ? 1 : 0
diff --git a/variables.tf b/variables.tf
index 37ef6f8..a1d3123 100644
--- a/variables.tf
+++ b/variables.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
variable "name" {
description = "The name of the eventbus or partner source. This must be unique per region per account."
type = string
diff --git a/versions.tf b/versions.tf
index c2a3886..264b8d1 100644
--- a/versions.tf
+++ b/versions.tf
@@ -1,3 +1,5 @@
+# Copyright 2023 - 2026 Dave Hall, https://proactiveops.io, MIT License
+
terraform {
required_version = ">= 1.0, < 2.0"