Publish Bitbucket webhook events to AWS SNS, enabling easy consumption by Lambda or other subscribers in the AWS ecosystem.
Multiple HTTP resources can be created. Each corresponds to a separate SNS topic.
SNS messages have an attribute "event" with the contents of X-Event-Key. You may use this for subscription filter policies.
The "signature" attribute is "sha256=<hmac>". The message contents have not been validated with the signature; consumer must do that.
Name | Type | Description | Default |
---|---|---|---|
deploy_version | string | Arbitrary version to force deployment of API gateway | "1" |
endpoints | list | Names of endpoints | ["all"] |
name | string | Namespace for resources | "bitbucket-events" |
Name | Type | Description |
---|---|---|
gateway_api_id | string | ID of API gateway |
gateway_invoke_url | string | URL of deployed API |
gateway_stage_name | string | Stage name of API gateway |
sns_topic_arns | list | ARNs of SNS topics |
Requests can be made against "${gateway_invoke_url}/${endpoint}". (Or use a custom domain)
module "bitbucket-events" {
source = "github.com/rivethealth/bitbucket-webhook-aws-terraform"
}
data "aws_acm_certificate" "bitbucket-events" {
domain = "bitbucket-events.example.com"
statuses = ["ISSUED"]
}
module "bitbucket-events" {
source = "github.com/rivethealth/bitbucket-webhook-aws-terraform"
}
resource "aws_api_gateway_base_path_mapping" "bitbucket-events" {
api_id = "${module.bitbucket-events.gateway_api_id}"
stage_name = "${module.bitbucket-events.gateway_stage_name}"
domain_name = "${aws_api_gateway_domain_name.bitbucket-events.domain_name}"
}
resource "aws_api_gateway_domain_name" "bitbucket-events" {
certificate_arn = "${data.aws_acm_certificate.bitbucket-events.arn}"
domain_name = "bitbucket-events.example.com"
}
Note that a custom domain name will not be ready for several minutes.