{"id":24020975,"url":"https://github.com/wearetechnative/terraform-aws-module-observability-sender","last_synced_at":"2026-02-09T18:02:41.641Z","repository":{"id":271217514,"uuid":"887834100","full_name":"wearetechnative/terraform-aws-module-observability-sender","owner":"wearetechnative","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-26T11:45:27.000Z","size":284,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-29T10:09:14.341Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wearetechnative.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-13T11:14:55.000Z","updated_at":"2025-09-17T08:03:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"bdd83053-eff5-44c0-b018-8893c55464cf","html_url":"https://github.com/wearetechnative/terraform-aws-module-observability-sender","commit_stats":null,"previous_names":["wearetechnative/terraform-aws-module-observability-sender"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wearetechnative/terraform-aws-module-observability-sender","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-observability-sender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-observability-sender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-observability-sender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-observability-sender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wearetechnative","download_url":"https://codeload.github.com/wearetechnative/terraform-aws-module-observability-sender/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-observability-sender/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29274739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T17:15:22.002Z","status":"ssl_error","status_checked_at":"2026-02-09T17:14:42.395Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-08T12:19:20.520Z","updated_at":"2026-02-09T18:02:41.620Z","avatar_url":"https://github.com/wearetechnative.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform AWS Observability Sender ![](https://img.shields.io/github/workflow/status/TechNative-B-V/terraform-aws-module-name/Lint?style=plastic)\n\n\u003c!-- SHIELDS --\u003e\nThis Terraform module implements a serverless observability stack which can optionally create CloudWatch alarms and forwards [EventBridge events](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) to an SQS queue.\n\nThis module works in conjuction with the [Terraform AWS Observability Receiver module](https://github.com/TechNative-B-V/terraform-aws-observability-receiver).\n\n[![](we-are-technative.png)](https://www.technative.nl)\n\n## Usage\n\n# alarms.json structure\n\nThe file contains the alarms per service.\nIn the example below you see the EC2 service that contains the CPU Utilization alarm. This will create the CPU Utilization alarm for every EC2 instance.\n```\n\"EC2\" : {                                                     \u003c- Service\n        \"CPUUtilization\": {                                   \u003c- Alarmname\n            \"AlarmThresholds\" : {\n                \"priority\": [\"P1\", \"P2\", \"P3\"],               \u003c- for every priority there needs to be a threshold and vice versa\n                \"alarm_threshold\": [\"90\", \"80\", \"75\"]\n            },\n            \"ComparisonOperator\" : \"GreaterThanThreshold\",\n            \"Description\" : {                                 \u003c- Description is used for naming the alarm in cloudwatch\n                \"Operatorsymbol\" : \"\u003e\",\n                \"ThresholdUnit\" : \"%\"\n            },\n            \"EvaluationPeriods\"  : 2,\n            \"MetricName\" : \"CPUUtilization\",\n            \"Namespace\" : \"AWS/EC2\",\n            \"Period\"    : 300,\n            \"Statistic\" : \"Average\",\n            \"TreatMissingData\" : \"breaching\",\n            \"Dimensions\" : \"InstanceId\"\n        }\n    },\n```\n\n\nThere is chance when applying the module you might run into the following error;\n\nThis error is the AWS API not being able to handle all the requests at once.\nYou can run do one of the following if this occurs:\n\n1. Rerun terraform apply once more and the module should complete the creation of the rest of the resources.\n2. Run terraform apply with the following flag `-parallelism=n`.\n\n```hcl\nmodule \"observability_sender\" {\n  source = \"git@github.com:TechNative-B-V/terraform-aws-observability-sender.git?ref=v0.0.1\"\n\n  monitoring_account_configuration = {\n    sqs_name    = string\n    sqs_region  = string\n    sqs_account = number\n  }\n\n  sqs_dlq_arn = string\n  kms_key_arn = string\n  sns_notification_receiver_topic_arn = string\n\n  eventbridge_rules = {\n    \"aws-backup-notification-rule\" : {\n      \"description\" : \"Monitor state changes of aws backup service.\",\n      \"enabled\" : true,\n      \"event_pattern\" : jsonencode({\n        \"source\" : [\"aws.backup\"],\n        \"detail-type\" : [\"Backup Job State Change\"]\n      })\n    }\n  }\n}\n```\n\n## Put exceeded error when running alarm creator Lambda\n\nAt first run you might end up with a put exceeded error where you are trying to create too many alarms at once.\n\nYou need to rerun the Lambda alarm creator a few times maybe with a shorter list. This allows you to not reach the maximum threshold set by AWS.\n\nYou need to also clean up the SQS queue in the observablity hub account as the error might hang in the SQS queue even though the problem is resolved.\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_archive\"\u003e\u003c/a\u003e [archive](#provider\\_archive) | n/a |\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | \u003e 4.3.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_iam_role_lambda_cw_alarm_creator\"\u003e\u003c/a\u003e [iam\\_role\\_lambda\\_cw\\_alarm\\_creator](#module\\_iam\\_role\\_lambda\\_cw\\_alarm\\_creator) | git@github.com:TechNative-B-V/modules-aws.git//identity_and_access_management/iam_role | v1.1.7 |\n| \u003ca name=\"module_iam_role_lambda_payload_forwarder\"\u003e\u003c/a\u003e [iam\\_role\\_lambda\\_payload\\_forwarder](#module\\_iam\\_role\\_lambda\\_payload\\_forwarder) | git@github.com:TechNative-B-V/modules-aws.git//identity_and_access_management/iam_role | v1.1.7 |\n| \u003ca name=\"module_lambda_cw_alarm_creator\"\u003e\u003c/a\u003e [lambda\\_cw\\_alarm\\_creator](#module\\_lambda\\_cw\\_alarm\\_creator) | git@github.com:wearetechnative/terraform-aws-lambda.git | 13eda5f9e8ae40e51f66a45837cd41a6b35af988 |\n| \u003ca name=\"module_lambda_payload_forwarder\"\u003e\u003c/a\u003e [lambda\\_payload\\_forwarder](#module\\_lambda\\_payload\\_forwarder) | git@github.com:TechNative-B-V/modules-aws.git//lambda | v1.1.7 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_cloudwatch_event_rule.cloudwatch_instance_termininate_rule](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |\n| [aws_cloudwatch_event_rule.refresh_alarms](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |\n| [aws_cloudwatch_event_rule.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |\n| [aws_cloudwatch_event_target.instance_terminate_lambda_target](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |\n| [aws_cloudwatch_event_target.lambda_target](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |\n| [aws_cloudwatch_event_target.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |\n| [aws_kms_grant.give_lambda_role_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_grant) | resource |\n| [aws_lambda_layer_version.custom_actions](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_layer_version) | resource |\n| [aws_lambda_permission.allow_eventbridge](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.allow_eventbridge_instance_terminate_rule](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.payload_forwarder](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_sns_topic.notification_receiver](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic) | resource |\n| [aws_sns_topic_policy.allow_lambda_sns_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_policy) | resource |\n| [aws_sns_topic_subscription.lambda_eventbridge_forwarder](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription) | resource |\n| [archive_file.custom_action](https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file) | data source |\n| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |\n| [aws_iam_policy_document.cloudwatch_alarms](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.eventbus](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.kms](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_cw_alarm_creator_dlq_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_ec2_read_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_ecs_read_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_elasticache_read_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_monitoring_account_sqs_access_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_payload_forwarder_dlq_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.lambda_rds_read_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.sns_topic_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_partition.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/partition) | data source |\n| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_eventbridge_rules\"\u003e\u003c/a\u003e [eventbridge\\_rules](#input\\_eventbridge\\_rules) | EventBridge rule settings. | \u003cpre\u003emap(object({\u003cbr\u003e    description : string\u003cbr\u003e    state : string\u003cbr\u003e    event_pattern : string\u003cbr\u003e    })\u003cbr\u003e  )\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_kms_key_arn\"\u003e\u003c/a\u003e [kms\\_key\\_arn](#input\\_kms\\_key\\_arn) | ARN of the KMS key. | `string` | n/a | yes |\n| \u003ca name=\"input_lambda_timeout\"\u003e\u003c/a\u003e [lambda\\_timeout](#input\\_lambda\\_timeout) | Lambda function timeout. | `number` | `60` | no |\n| \u003ca name=\"input_monitoring_account_configuration\"\u003e\u003c/a\u003e [monitoring\\_account\\_configuration](#input\\_monitoring\\_account\\_configuration) | Configuration settings of the monitoring account. | \u003cpre\u003eobject({\u003cbr\u003e    sqs_name    = string\u003cbr\u003e    sqs_region  = string\u003cbr\u003e    sqs_account = number\u003cbr\u003e  })\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_source_directory_location\"\u003e\u003c/a\u003e [source\\_directory\\_location](#input\\_source\\_directory\\_location) | Source Directory location for the custom alarm creator actions.py. | `string` | `null` | no |\n| \u003ca name=\"input_sqs_dlq_arn\"\u003e\u003c/a\u003e [sqs\\_dlq\\_arn](#input\\_sqs\\_dlq\\_arn) | ARN of the Dead Letter Queue. | `string` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_lambda_cloudwatch_alarm_creator_arn\"\u003e\u003c/a\u003e [lambda\\_cloudwatch\\_alarm\\_creator\\_arn](#output\\_lambda\\_cloudwatch\\_alarm\\_creator\\_arn) | n/a |\n| \u003ca name=\"output_lambda_cloudwatch_alarm_creator_name\"\u003e\u003c/a\u003e [lambda\\_cloudwatch\\_alarm\\_creator\\_name](#output\\_lambda\\_cloudwatch\\_alarm\\_creator\\_name) | n/a |\n| \u003ca name=\"output_lambda_payload_forwarder_arn\"\u003e\u003c/a\u003e [lambda\\_payload\\_forwarder\\_arn](#output\\_lambda\\_payload\\_forwarder\\_arn) | n/a |\n| \u003ca name=\"output_lambda_payload_forwarder_name\"\u003e\u003c/a\u003e [lambda\\_payload\\_forwarder\\_name](#output\\_lambda\\_payload\\_forwarder\\_name) | n/a |\n| \u003ca name=\"output_sns_topic_arn\"\u003e\u003c/a\u003e [sns\\_topic\\_arn](#output\\_sns\\_topic\\_arn) | n/a |\n| \u003ca name=\"output_sns_topic_id\"\u003e\u003c/a\u003e [sns\\_topic\\_id](#output\\_sns\\_topic\\_id) | n/a |\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwearetechnative%2Fterraform-aws-module-observability-sender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwearetechnative%2Fterraform-aws-module-observability-sender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwearetechnative%2Fterraform-aws-module-observability-sender/lists"}