You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: support centralised webhook proxy in multi-account deployments
When deploying runners with a centralised webhook proxy in a separate AWS
account (e.g. an Ops account that validates and authorises webhook events
before routing them to target accounts), three gaps force consumers to
work around the module:
1. The module exclusively owns the SQS queue policy (DenyInsecureTransport
only). Adding cross-account sqs:SendMessage requires overriding the whole
policy, duplicating DenyInsecureTransport and causing permanent Terraform
drift on every plan.
2. aws_sqs_queue_policy requires the queue URL, not the ARN. The queues
output only exposed the ARN, forcing consumers to reconstruct the URL
by string-splitting.
3. The webhook Lambda and API Gateway are always deployed even when the
module's built-in webhook is not used (the external proxy receives GitHub
events directly and publishes to SQS, bypassing the module's endpoint).
Changes (root module + modules/multi-runner):
- sqs_build_queue_extra_policy_json (default: null): optional policy JSON
merged into the build queue policy via source_policy_documents. No-op
when unset — no behaviour change for existing deployments.
- build_queue_url added to the queues output (root); queues output added
to modules/multi-runner exposing ARN + URL per runner key.
- create_webhook_module (default: true): set to false to skip the webhook
Lambda and API Gateway. The webhook output becomes null when disabled.
description="Optional additional SQS policy statements (JSON) merged into the build queue policy for all runner types. Useful for cross-account access, e.g. allowing an SNS topic from another account to send messages."
776
+
type=string
777
+
default=null
778
+
}
779
+
780
+
variable"create_webhook_module" {
781
+
description="Set to false to skip deploying the webhook Lambda and API Gateway. Use when webhook delivery is handled externally (e.g. a centralised proxy in another account)."
Copy file name to clipboardExpand all lines: variables.tf
+12Lines changed: 12 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,18 @@ variable "aws_region" {
3
3
type=string
4
4
}
5
5
6
+
variable"sqs_build_queue_extra_policy_json" {
7
+
description="Optional additional SQS policy statements (JSON) merged into the build queue policy. Useful for cross-account access, e.g. allowing an SNS topic from another account to send messages."
8
+
type=string
9
+
default=null
10
+
}
11
+
12
+
variable"create_webhook_module" {
13
+
description="Set to false to skip deploying the webhook Lambda and API Gateway. Use when webhook delivery is handled externally (e.g. a centralised proxy in another account)."
14
+
type=bool
15
+
default=true
16
+
}
17
+
6
18
variable"vpc_id" {
7
19
description="The VPC for security groups of the action runners."
0 commit comments