Skip to content

Commit fe071a7

Browse files
fix(EventBridge): correct param type for target 'retry_policy' and 'input_transformer'
1 parent ecf57c0 commit fe071a7

3 files changed

Lines changed: 35 additions & 13 deletions

File tree

AWS_EventBridge/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ No modules.
350350
|------|-------------|------|---------|:--------:|
351351
| <a name="input_event_buses"></a> [event\_buses](#input\_event\_buses) | (Optional) Map of EventBridge Event Bus names to config objects. To configure an<br>event bus policy, you can either provide a JSON-encoded string to "event\_bus\_policy\_json",<br>or a list of policy statements to "event\_bus\_policy\_statements".<br>Within policy statements, to include the ARNs of event resources which are created within<br>the same module call in your "resources" list(s), provide the event bus/target/rule NAME in<br>"resources" and the name will be replaced by the ARN in the final policy document. Note that<br>using this feature requires unique resource names; i.e., having an event BUS and event RULE<br>with the same name would result in an error. | <pre>map(<br> # map keys: Event Bus names<br> object({<br> event_source_name = optional(string)<br> tags = optional(map(string))<br> event_bus_policy_json = optional(string)<br> event_bus_policy_statements = optional(list(object({<br> sid = optional(string)<br> effect = string<br> principals = optional(map(<br> # map keys: "AWS", "Service", and/or "Federated"<br> list(string)<br> ))<br> actions = list(string)<br> resources = optional(list(string))<br> conditions = optional(map(<br> # map keys: IAM condition operators (e.g., "StringEquals", "ArnLike")<br> object({<br> key = string<br> values = list(string)<br> })<br> ))<br> })))<br> })<br> )</pre> | `{}` | no |
352352
| <a name="input_event_rules"></a> [event\_rules](#input\_event\_rules) | (Optional) Map of EventBridge rule names to config objects. A "role\_arn"<br>must be provided for rules which invoke targets that are API destinations,<br>Kinesis streams, Systems Manager Run Commands, Step Functions state machines,<br>or ECS tasks. | <pre>map(<br> # map keys: event rule names<br> object({<br> enabled = optional(bool)<br> description = optional(string)<br> role_arn = optional(string)<br> schedule_expression = optional(string)<br> event_pattern = optional(string)<br> event_bus_name = optional(string)<br> tags = optional(map(string))<br> })<br> )</pre> | `{}` | no |
353-
| <a name="input_event_targets"></a> [event\_targets](#input\_event\_targets) | (Optional) Map of EventBridge rule target assignment IDs to config objects.<br>Target assignment IDs can be any valid name/ID string. A "role\_arn" must be<br>provided if the target is an ECS task, EC2 instance, Kinesis data stream,<br>Step Functions state machine, or Event Bus in a different account or region.<br>Target event input can be configured with either "input", "input\_path", or<br>"input\_transformer". Note that each rule can have at most 5 event targets. | <pre>map(<br> # map keys: event target assignment IDs<br> object({<br> rule_name = string<br> target_arn = string<br> event_bus_name = optional(string)<br> role_arn = optional(string)<br> retry_policy = optional(string)<br> input = optional(string)<br> input_path = optional(string)<br> input_transformer = optional(string)<br> })<br> )</pre> | `{}` | no |
353+
| <a name="input_event_targets"></a> [event\_targets](#input\_event\_targets) | (Optional) Map of EventBridge rule target assignment IDs to config objects.<br>Target assignment IDs can be any valid name/ID string. A "role\_arn" must be<br>provided if the target is an ECS task, EC2 instance, Kinesis data stream,<br>Step Functions state machine, or Event Bus in a different account or region.<br>Target event input can be configured with either "input", "input\_path", or<br>"input\_transformer". Note that each rule can have at most 5 event targets. | <pre>map(<br> # map keys: event target assignment IDs<br> object({<br> rule_name = string<br> target_arn = string<br> event_bus_name = optional(string)<br> role_arn = optional(string)<br> retry_policy = optional(object({<br> maximum_event_age_in_seconds = optional(number)<br> maximum_retry_attempts = optional(number)<br> }))<br> input = optional(string)<br> input_path = optional(string)<br> input_transformer = optional(object({<br> input_template = string # JSON-encoded string<br> input_paths = optional(map(string))<br> }))<br> })<br> )</pre> | `{}` | no |
354354

355355
### Outputs
356356

AWS_EventBridge/main.tf

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,27 @@ resource "aws_cloudwatch_event_target" "map" {
103103

104104
event_bus_name = each.value.event_bus_name
105105
role_arn = each.value.role_arn
106-
retry_policy = each.value.retry_policy
107106

108-
input = each.value.input
109-
input_path = each.value.input_path
110-
input_transformer = each.value.input_transformer
107+
dynamic "retry_policy" {
108+
for_each = each.value.retry_policy != null ? [each.value.retry_policy] : []
109+
110+
content {
111+
maximum_event_age_in_seconds = retry_policy.value.maximum_event_age_in_seconds
112+
maximum_retry_attempts = retry_policy.value.maximum_retry_attempts
113+
}
114+
}
115+
116+
input = each.value.input
117+
input_path = each.value.input_path
118+
119+
dynamic "input_transformer" {
120+
for_each = each.value.input_transformer != null ? [each.value.input_transformer] : []
121+
122+
content {
123+
input_template = input_transformer.value.input_template
124+
input_paths = input_transformer.value.input_paths
125+
}
126+
}
111127
}
112128

113129
######################################################################

AWS_EventBridge/variables.tf

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,20 @@ variable "event_targets" {
8585
type = map(
8686
# map keys: event target assignment IDs
8787
object({
88-
rule_name = string
89-
target_arn = string
90-
event_bus_name = optional(string)
91-
role_arn = optional(string)
92-
retry_policy = optional(string)
93-
input = optional(string)
94-
input_path = optional(string)
95-
input_transformer = optional(string)
88+
rule_name = string
89+
target_arn = string
90+
event_bus_name = optional(string)
91+
role_arn = optional(string)
92+
retry_policy = optional(object({
93+
maximum_event_age_in_seconds = optional(number)
94+
maximum_retry_attempts = optional(number)
95+
}))
96+
input = optional(string)
97+
input_path = optional(string)
98+
input_transformer = optional(object({
99+
input_template = string # JSON-encoded string
100+
input_paths = optional(map(string))
101+
}))
96102
})
97103
)
98104

0 commit comments

Comments
 (0)