Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1ec8e44

Browse files
authoredMay 19, 2025··
feat: Event Bus DLQ and Event Connection CMK Encryption (#163)
1 parent 0fa7879 commit 1ec8e44

File tree

25 files changed

+97
-32
lines changed

25 files changed

+97
-32
lines changed
 

‎README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,13 +382,13 @@ module "eventbridge" {
382382
| Name | Version |
383383
|------|---------|
384384
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
385-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
385+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
386386

387387
## Providers
388388

389389
| Name | Version |
390390
|------|---------|
391-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
391+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
392392

393393
## Modules
394394

@@ -505,6 +505,7 @@ No modules.
505505
| <a name="input_create_schedules"></a> [create\_schedules](#input\_create\_schedules) | Controls whether EventBridge Schedule resources should be created | `bool` | `true` | no |
506506
| <a name="input_create_schemas_discoverer"></a> [create\_schemas\_discoverer](#input\_create\_schemas\_discoverer) | Controls whether default schemas discoverer should be created | `bool` | `false` | no |
507507
| <a name="input_create_targets"></a> [create\_targets](#input\_create\_targets) | Controls whether EventBridge Target resources should be created | `bool` | `true` | no |
508+
| <a name="input_dead_letter_config"></a> [dead\_letter\_config](#input\_dead\_letter\_config) | Configuration details of the Amazon SQS queue for EventBridge to use as a dead-letter queue (DLQ) | `any` | `{}` | no |
508509
| <a name="input_ecs_pass_role_resources"></a> [ecs\_pass\_role\_resources](#input\_ecs\_pass\_role\_resources) | List of approved roles to be passed | `list(string)` | `[]` | no |
509510
| <a name="input_ecs_target_arns"></a> [ecs\_target\_arns](#input\_ecs\_target\_arns) | The Amazon Resource Name (ARN) of the AWS ECS Tasks you want to use as EventBridge targets | `list(string)` | `[]` | no |
510511
| <a name="input_event_source_name"></a> [event\_source\_name](#input\_event\_source\_name) | The partner event source that the new event bus will be matched with. Must match name. | `string` | `null` | no |

‎examples/api-gateway-event-source/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3131
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3232

3333
## Modules

‎examples/api-gateway-event-source/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/complete/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 |
2525
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2626

2727
## Providers
2828

2929
| Name | Version |
3030
|------|---------|
31-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
31+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3232
| <a name="provider_null"></a> [null](#provider\_null) | >= 2.0 |
3333
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3434

‎examples/complete/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/default-bus/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3131
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3232

3333
## Modules

‎examples/default-bus/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/with-api-destination/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,30 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3131
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3232

3333
## Modules
3434

3535
| Name | Source | Version |
3636
|------|--------|---------|
3737
| <a name="module_eventbridge"></a> [eventbridge](#module\_eventbridge) | ../../ | n/a |
38+
| <a name="module_kms"></a> [kms](#module\_kms) | terraform-aws-modules/kms/aws | ~> 2.0 |
3839

3940
## Resources
4041

4142
| Name | Type |
4243
|------|------|
4344
| [aws_iam_role.eventbridge](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
4445
| [random_pet.this](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet) | resource |
46+
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
4547
| [aws_iam_policy_document.assume_role](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
4648

4749
## Inputs

‎examples/with-api-destination/main.tf

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ provider "aws" {
77
skip_credentials_validation = true
88
}
99

10+
data "aws_caller_identity" "current" {}
11+
1012
module "eventbridge" {
1113
source = "../../"
1214

@@ -143,6 +145,7 @@ module "eventbridge" {
143145
value = random_pet.this.id
144146
}
145147
}
148+
kms_key_identifier = module.kms.key_arn
146149
}
147150
}
148151

@@ -200,3 +203,48 @@ data "aws_iam_policy_document" "assume_role" {
200203
}
201204
}
202205
}
206+
207+
module "kms" {
208+
source = "terraform-aws-modules/kms/aws"
209+
version = "~> 2.0"
210+
description = "KMS key for EventBridge"
211+
212+
# Aliases
213+
aliases = ["test"]
214+
aliases_use_name_prefix = true
215+
key_statements = [
216+
{
217+
sid = "Allow use of the key"
218+
principals = [
219+
{
220+
type = "AWS"
221+
identifiers = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"]
222+
}
223+
]
224+
actions = [
225+
"kms:DescribeKey",
226+
"kms:GenerateDataKey",
227+
"kms:Decrypt"
228+
]
229+
resources = ["*"]
230+
conditions = [
231+
{
232+
test = "StringLike"
233+
values = ["secretsmanager.*.amazonaws.com"]
234+
variable = "kms:ViaService"
235+
},
236+
{
237+
test = "StringLike"
238+
values = ["arn:aws:secretsmanager:*:*:secret:events!connection/*"]
239+
variable = "kms:EncryptionContext:SecretARN"
240+
}
241+
]
242+
}
243+
]
244+
245+
tags = {
246+
EventBridgeApiDestinations = "true"
247+
}
248+
249+
key_owners = [data.aws_caller_identity.current.arn]
250+
}

‎examples/with-api-destination/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/with-archive/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3131
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3232

3333
## Modules

‎examples/with-archive/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/with-ecs-scheduling/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3131
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3232

3333
## Modules

‎examples/with-ecs-scheduling/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/with-lambda-scheduling/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 |
2525
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2626

‎examples/with-lambda-scheduling/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/with-permissions/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3131
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3232

3333
## Modules

‎examples/with-permissions/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/with-pipes/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 |
2525
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2626

2727
## Providers
2828

2929
| Name | Version |
3030
|------|---------|
31-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
31+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3232
| <a name="provider_null"></a> [null](#provider\_null) | >= 2.0 |
3333
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3434

‎examples/with-pipes/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎examples/with-schedules/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.85 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.98 |
2424
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 |
2525
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 |
2626

2727
## Providers
2828

2929
| Name | Version |
3030
|------|---------|
31-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.85 |
31+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.98 |
3232
| <a name="provider_null"></a> [null](#provider\_null) | >= 2.0 |
3333
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.0 |
3434

‎examples/with-schedules/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
random = {
1010
source = "hashicorp/random"

‎main.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ resource "aws_cloudwatch_event_bus" "this" {
6969
event_source_name = var.event_source_name
7070
kms_key_identifier = var.kms_key_identifier
7171

72+
dynamic "dead_letter_config" {
73+
for_each = length(var.dead_letter_config) > 0 ? [var.dead_letter_config] : []
74+
content {
75+
arn = try(dead_letter_config.value.arn, null)
76+
}
77+
}
78+
7279
tags = var.tags
7380
}
7481

@@ -301,6 +308,7 @@ resource "aws_cloudwatch_event_connection" "this" {
301308
name = each.value.Name
302309
description = lookup(each.value, "description", null)
303310
authorization_type = each.value.authorization_type
311+
kms_key_identifier = try(each.value.kms_key_identifier, null)
304312

305313
dynamic "auth_parameters" {
306314
for_each = [each.value.auth_parameters]

‎variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ variable "kms_key_identifier" {
144144
default = null
145145
}
146146

147+
variable "dead_letter_config" {
148+
description = "Configuration details of the Amazon SQS queue for EventBridge to use as a dead-letter queue (DLQ)"
149+
type = any
150+
default = {}
151+
}
152+
147153
variable "schemas_discoverer_description" {
148154
description = "Default schemas discoverer description"
149155
type = string

‎versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 5.85"
7+
version = ">= 5.98"
88
}
99
}
1010
}

0 commit comments

Comments
 (0)
Please sign in to comment.