Skip to content

Commit bea5f2d

Browse files
CopilotBrend-Smits
andauthored
feat: support per-runner-flavor SQS batch size and window in multi_runner_config
Add lambda_event_source_mapping_batch_size and lambda_event_source_mapping_maximum_batching_window_in_seconds as optional fields inside multi_runner_config.runner_config, falling back to the existing module-level variables when not set via coalesce(). This follows the same pattern used by scale_up_reserved_concurrent_executions. Agent-Logs-Url: https://github.com/github-aws-runners/terraform-aws-github-runner/sessions/1a1b641a-bbf5-45ab-bd97-73d9501552b9 Co-authored-by: Brend-Smits <15904543+Brend-Smits@users.noreply.github.com>
1 parent f839b26 commit bea5f2d

File tree

2 files changed

+42
-38
lines changed

2 files changed

+42
-38
lines changed

modules/multi-runner/runners.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ module "runners" {
6565
lambda_architecture = var.lambda_architecture
6666
lambda_zip = var.runners_lambda_zip
6767
lambda_scale_up_memory_size = var.scale_up_lambda_memory_size
68-
lambda_event_source_mapping_batch_size = var.lambda_event_source_mapping_batch_size
69-
lambda_event_source_mapping_maximum_batching_window_in_seconds = var.lambda_event_source_mapping_maximum_batching_window_in_seconds
68+
lambda_event_source_mapping_batch_size = coalesce(each.value.runner_config.lambda_event_source_mapping_batch_size, var.lambda_event_source_mapping_batch_size)
69+
lambda_event_source_mapping_maximum_batching_window_in_seconds = coalesce(each.value.runner_config.lambda_event_source_mapping_maximum_batching_window_in_seconds, var.lambda_event_source_mapping_maximum_batching_window_in_seconds)
7070
lambda_timeout_scale_up = var.runners_scale_up_lambda_timeout
7171
lambda_scale_down_memory_size = var.scale_down_lambda_memory_size
7272
lambda_timeout_scale_down = var.runners_scale_down_lambda_timeout

modules/multi-runner/variables.tf

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -90,42 +90,44 @@ variable "multi_runner_config" {
9090
"InsufficientInstanceCapacity",
9191
"InsufficientCapacityOnHost",
9292
])
93-
enable_organization_runners = optional(bool, false)
94-
enable_runner_binaries_syncer = optional(bool, true)
95-
enable_ssm_on_runners = optional(bool, false)
96-
enable_userdata = optional(bool, true)
97-
instance_allocation_strategy = optional(string, "lowest-price")
98-
instance_max_spot_price = optional(string, null)
99-
instance_target_capacity_type = optional(string, "spot")
100-
instance_types = list(string)
101-
job_queue_retention_in_seconds = optional(number, 86400)
102-
minimum_running_time_in_minutes = optional(number, null)
103-
pool_runner_owner = optional(string, null)
104-
runner_as_root = optional(bool, false)
105-
runner_boot_time_in_minutes = optional(number, 5)
106-
runner_disable_default_labels = optional(bool, false)
107-
runner_extra_labels = optional(list(string), [])
108-
runner_group_name = optional(string, "Default")
109-
runner_name_prefix = optional(string, "")
110-
runner_run_as = optional(string, "ec2-user")
111-
runners_maximum_count = number
112-
runner_additional_security_group_ids = optional(list(string), [])
113-
scale_down_schedule_expression = optional(string, "cron(*/5 * * * ? *)")
114-
scale_up_reserved_concurrent_executions = optional(number, 1)
115-
userdata_template = optional(string, null)
116-
userdata_content = optional(string, null)
117-
enable_jit_config = optional(bool, null)
118-
enable_runner_detailed_monitoring = optional(bool, false)
119-
enable_cloudwatch_agent = optional(bool, true)
120-
cloudwatch_config = optional(string, null)
121-
userdata_pre_install = optional(string, "")
122-
userdata_post_install = optional(string, "")
123-
runner_hook_job_started = optional(string, "")
124-
runner_hook_job_completed = optional(string, "")
125-
runner_ec2_tags = optional(map(string), {})
126-
runner_iam_role_managed_policy_arns = optional(list(string), [])
127-
vpc_id = optional(string, null)
128-
subnet_ids = optional(list(string), null)
93+
enable_organization_runners = optional(bool, false)
94+
enable_runner_binaries_syncer = optional(bool, true)
95+
enable_ssm_on_runners = optional(bool, false)
96+
enable_userdata = optional(bool, true)
97+
instance_allocation_strategy = optional(string, "lowest-price")
98+
instance_max_spot_price = optional(string, null)
99+
instance_target_capacity_type = optional(string, "spot")
100+
instance_types = list(string)
101+
job_queue_retention_in_seconds = optional(number, 86400)
102+
minimum_running_time_in_minutes = optional(number, null)
103+
pool_runner_owner = optional(string, null)
104+
runner_as_root = optional(bool, false)
105+
runner_boot_time_in_minutes = optional(number, 5)
106+
runner_disable_default_labels = optional(bool, false)
107+
runner_extra_labels = optional(list(string), [])
108+
runner_group_name = optional(string, "Default")
109+
runner_name_prefix = optional(string, "")
110+
runner_run_as = optional(string, "ec2-user")
111+
runners_maximum_count = number
112+
runner_additional_security_group_ids = optional(list(string), [])
113+
scale_down_schedule_expression = optional(string, "cron(*/5 * * * ? *)")
114+
scale_up_reserved_concurrent_executions = optional(number, 1)
115+
lambda_event_source_mapping_batch_size = optional(number, null)
116+
lambda_event_source_mapping_maximum_batching_window_in_seconds = optional(number, null)
117+
userdata_template = optional(string, null)
118+
userdata_content = optional(string, null)
119+
enable_jit_config = optional(bool, null)
120+
enable_runner_detailed_monitoring = optional(bool, false)
121+
enable_cloudwatch_agent = optional(bool, true)
122+
cloudwatch_config = optional(string, null)
123+
userdata_pre_install = optional(string, "")
124+
userdata_post_install = optional(string, "")
125+
runner_hook_job_started = optional(string, "")
126+
runner_hook_job_completed = optional(string, "")
127+
runner_ec2_tags = optional(map(string), {})
128+
runner_iam_role_managed_policy_arns = optional(list(string), [])
129+
vpc_id = optional(string, null)
130+
subnet_ids = optional(list(string), null)
129131
idle_config = optional(list(object({
130132
cron = string
131133
timeZone = string
@@ -232,6 +234,8 @@ variable "multi_runner_config" {
232234
runners_maximum_count: "The maximum number of runners that will be created. Setting the variable to `-1` desiables the maximum check."
233235
scale_down_schedule_expression: "Scheduler expression to check every x for scale down."
234236
scale_up_reserved_concurrent_executions: "Amount of reserved concurrent executions for the scale-up lambda function. A value of 0 disables lambda from being triggered and -1 removes any concurrency limitations."
237+
lambda_event_source_mapping_batch_size: "(Optional) Maximum number of records per Lambda invocation for this runner flavor. Overrides the module-level `lambda_event_source_mapping_batch_size` when set."
238+
lambda_event_source_mapping_maximum_batching_window_in_seconds: "(Optional) Maximum seconds to gather records before invoking Lambda for this runner flavor. Overrides the module-level `lambda_event_source_mapping_maximum_batching_window_in_seconds` when set."
235239
userdata_template: "Alternative user-data template, replacing the default template. By providing your own user_data you have to take care of installing all required software, including the action runner. Variables userdata_pre/post_install are ignored."
236240
enable_jit_config "Overwrite the default behavior for JIT configuration. By default JIT configuration is enabled for ephemeral runners and disabled for non-ephemeral runners. In case of GHES check first if the JIT config API is available. In case you are upgrading from 3.x to 4.x you can set `enable_jit_config` to `false` to avoid a breaking change when having your own AMI."
237241
enable_runner_detailed_monitoring: "Should detailed monitoring be enabled for the runner. Set this to true if you want to use detailed monitoring. See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch-new.html for details."

0 commit comments

Comments
 (0)