{"id":19508820,"url":"https://github.com/rhythmictech/terraform-aws-datadog","last_synced_at":"2026-02-02T21:33:31.984Z","repository":{"id":41951332,"uuid":"450536693","full_name":"rhythmictech/terraform-aws-datadog","owner":"rhythmictech","description":"Creates and manages a Datadog AWS integration. This module performs the necessary integrations in both Datadog and AWS and thus uses providers for each.","archived":false,"fork":false,"pushed_at":"2026-01-15T19:52:36.000Z","size":199,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-17T00:43:36.424Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/modules/rhythmictech/datadog/aws/latest","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rhythmictech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"securityhub.tf","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":"2022-01-21T15:09:45.000Z","updated_at":"2026-01-15T19:51:14.000Z","dependencies_parsed_at":"2023-12-09T17:27:37.696Z","dependency_job_id":"b310deb3-14d3-4985-995b-402209d22e3b","html_url":"https://github.com/rhythmictech/terraform-aws-datadog","commit_stats":null,"previous_names":[],"tags_count":47,"template":false,"template_full_name":"rhythmictech/terraform-terraform-template","purl":"pkg:github/rhythmictech/terraform-aws-datadog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-datadog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-datadog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-datadog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-datadog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhythmictech","download_url":"https://codeload.github.com/rhythmictech/terraform-aws-datadog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhythmictech%2Fterraform-aws-datadog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29020730,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T18:51:31.335Z","status":"ssl_error","status_checked_at":"2026-02-02T18:49:20.777Z","response_time":58,"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":"2024-11-10T23:09:57.027Z","updated_at":"2026-02-02T21:33:31.962Z","avatar_url":"https://github.com/rhythmictech.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terraform-aws-datadog\n[![tflint](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/tflint.yaml/badge.svg)](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/tflint.yaml)\n[![trivy](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/trivy.yaml/badge.svg)](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/trivy.yaml)\n[![yamllint](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/yamllint.yaml/badge.svg)](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/yamllint.yaml)\n[![misspell](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/misspell.yaml/badge.svg)](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/misspell.yaml)\n[![pre-commit-check](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/pre-commit.yaml/badge.svg)](https://github.com/rhythmictech/terraform-aws-datadog/actions/workflows/pre-commit.yaml)\n\u003ca href=\"https://twitter.com/intent/follow?screen_name=RhythmicTech\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/RhythmicTech?style=social\u0026logo=twitter\" alt=\"follow on Twitter\"\u003e\u003c/a\u003e\n\nCreates and manages a Datadog AWS integration. This module performs the necessary integrations in both Datadog and AWS and thus uses providers for each. Supported features include:\n\n* AWS Health event forwarding\n* CloudTrail log forwarding\n* Cost and Usage report configuration\n* GuardDuty finding forwarding\n* Main log index configuration\n* RDS enhanced monitoring\n* Usage anomaly detection\n\n## Requirements\n* DataDog provider\n* DataDog API key\n\n## Example\nThis configures a DataDog integration with the log forwarder installed and configured for Lambda only.\n\n```hcl\nprovider \"datadog\" {\n  api_key = var.datadog_api_key\n  app_key = var.datadog_app_key\n}\n\nmodule \"datadog\" {\n  source = \"rhythmictech/datadog/aws\"\n\n  name                  = \"datadog-integration\"\n  install_log_forwarder = true\n  log_forwarder_sources = [\"lambda\"]\n}\n```\n\n## About\nBy default it installs the DataDog log forwarder. Can also optionally install the RDS Enhanced metrics forwarder. \n\n## RDS Metrics\nRDS Metric Capture requires an additional Lambda. We pull that Lambda directly from the Datadog repo it is actively developed in. You can specify the version of the forwarder but the module is tested against the default version.\n\nExample adding RDS metrics forwarding and logging:\n```\n\nimport {\n  to = aws_cloudwatch_log_group.rds_group\n  id = \"/aws/rds/instance/production-db/postgresql\"\n}\n\nresource \"aws_cloudwatch_log_group\" \"rds_group\" {\n  name              = \"/aws/rds/instance/production-db/postgresql\"\n  retention_in_days = 14\n}\n\nresource \"aws_lambda_permission\" \"cloudwatch\" {\n\n  statement_id  = \"datadog-forwarder-RDSCloudWatchLogsPermission\"\n  action        = \"lambda:InvokeFunction\"\n  function_name = reverse(split(\":\", module.datadog.lambda_arn_forwarder))[0]\n  principal     = \"logs.amazonaws.com\"\n  source_arn    = \"arn:aws:logs:us-east-1:0123456789012:log-group:/aws/rds/instance/production-db/postgresql:*\"\n}\n\nresource \"aws_cloudwatch_log_subscription_filter\" \"rds_log_forwarding\" {\n  name            = \"production-db\"\n  log_group_name  = \"/aws/rds/instance/production-db/postgresql\"\n  filter_pattern  = \"\"\n  destination_arn = module.datadog.lambda_arn_forwarder\n}\n\nmodule \"datadog\" {\n  source  = \"rhythmictech/datadog/aws\"\n\n  name                                          = \"datadog-integration\"\n  enable_cspm_resource_collection               = true\n  install_log_forwarder                         = true\n  install_rds_enhanced_monitoring_lambda        = true\n  log_forwarder_sources                         = [\"lambda\"]\n  tags                                          = local.tags\n}\n\n\n\n```\n\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | ~\u003e 1.5 |\n| \u003ca name=\"requirement_archive\"\u003e\u003c/a\u003e [archive](#requirement\\_archive) | \u003e= 2.2.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | \u003e= 5.41 |\n| \u003ca name=\"requirement_datadog\"\u003e\u003c/a\u003e [datadog](#requirement\\_datadog) | \u003e= 3.39 |\n| \u003ca name=\"requirement_http\"\u003e\u003c/a\u003e [http](#requirement\\_http) | \u003e= 3.4 |\n| \u003ca name=\"requirement_null\"\u003e\u003c/a\u003e [null](#requirement\\_null) | \u003e= 3.1.0 |\n| \u003ca name=\"requirement_time\"\u003e\u003c/a\u003e [time](#requirement\\_time) | \u003e= 0.12 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_archive\"\u003e\u003c/a\u003e [archive](#provider\\_archive) | 2.7.0 |\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | 5.84.0 |\n| \u003ca name=\"provider_datadog\"\u003e\u003c/a\u003e [datadog](#provider\\_datadog) | 3.53.0 |\n| \u003ca name=\"provider_http\"\u003e\u003c/a\u003e [http](#provider\\_http) | 3.4.5 |\n| \u003ca name=\"provider_null\"\u003e\u003c/a\u003e [null](#provider\\_null) | 3.2.3 |\n| \u003ca name=\"provider_time\"\u003e\u003c/a\u003e [time](#provider\\_time) | 0.12.1 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_tags\"\u003e\u003c/a\u003e [tags](#module\\_tags) | rhythmictech/tags/terraform | ~\u003e 1.1 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_cloudformation_stack.datadog_forwarder](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudformation_stack) | resource |\n| [aws_cloudwatch_event_rule.awshealth](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |\n| [aws_cloudwatch_event_rule.guardduty](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |\n| [aws_cloudwatch_event_rule.securityhub_to_datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |\n| [aws_cloudwatch_event_target.awshealth](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |\n| [aws_cloudwatch_event_target.guardduty](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |\n| [aws_cloudwatch_event_target.securityhub_to_datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |\n| [aws_cloudwatch_log_subscription_filter.cloudwatch_logs](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_subscription_filter) | resource |\n| [aws_cloudwatch_log_subscription_filter.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_subscription_filter) | resource |\n| [aws_cur_report_definition.cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cur_report_definition) | resource |\n| [aws_iam_access_key.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_access_key) | resource |\n| [aws_iam_policy.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |\n| [aws_iam_policy.datadog_cost_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |\n| [aws_iam_policy.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |\n| [aws_iam_role.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |\n| [aws_iam_role.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |\n| [aws_iam_role_policy_attachment.cspm](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |\n| [aws_iam_role_policy_attachment.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |\n| [aws_iam_role_policy_attachment.datadog_cost_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |\n| [aws_iam_role_policy_attachment.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |\n| [aws_iam_user.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user) | resource |\n| [aws_iam_user_policy_attachment.cspm_user](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user_policy_attachment) | resource |\n| [aws_iam_user_policy_attachment.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user_policy_attachment) | resource |\n| [aws_lambda_function.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_function) | resource |\n| [aws_lambda_permission.awshealth_trigger](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.bucket_trigger](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.cloudwatch_logs](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.guardduty_trigger](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.securityhub_trigger](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_s3_bucket.local_cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket) | resource |\n| [aws_s3_bucket_lifecycle_configuration.local_cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_lifecycle_configuration) | resource |\n| [aws_s3_bucket_notification.bucket_notification](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_notification) | resource |\n| [aws_s3_bucket_policy.local_cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_policy) | resource |\n| [aws_s3_bucket_public_access_block.local_cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_public_access_block) | resource |\n| [aws_s3_bucket_server_side_encryption_configuration.local_cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_server_side_encryption_configuration) | resource |\n| [aws_s3_bucket_versioning.local_cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_versioning) | resource |\n| [aws_secretsmanager_secret.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret) | resource |\n| [aws_secretsmanager_secret_version.datadog](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/secretsmanager_secret_version) | resource |\n| [datadog_api_key.datadog](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/api_key) | resource |\n| [datadog_integration_aws.datadog](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/integration_aws) | resource |\n| [datadog_integration_aws_lambda_arn.datadog_forwarder](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/integration_aws_lambda_arn) | resource |\n| [datadog_integration_aws_log_collection.datadog_forwarder](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/integration_aws_log_collection) | resource |\n| [datadog_logs_custom_pipeline.health](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/logs_custom_pipeline) | resource |\n| [datadog_logs_index.main](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/logs_index) | resource |\n| [datadog_monitor.anomaly_usage](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/monitor) | resource |\n| [datadog_monitor.estimated_usage](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/monitor) | resource |\n| [datadog_monitor.limit_exceeded](https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/monitor) | resource |\n| [null_resource.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |\n| [time_sleep.wait_datadog_forwarder](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |\n| [archive_file.rds_enhanced_monitoring](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.assume](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.datadog_cost_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.local_cur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.rds_enhanced_monitoring_assume](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| [http_http.rds_enhanced_monitoring](https://registry.terraform.io/providers/hashicorp/http/latest/docs/data-sources/http) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_access_method\"\u003e\u003c/a\u003e [access\\_method](#input\\_access\\_method) | Access method to use for Datadog integration (recommended not to change unless using GovCloud or China regions, must be either `user` or `role`) | `string` | `\"role\"` | no |\n| \u003ca name=\"input_cur_bucket_suffix\"\u003e\u003c/a\u003e [cur\\_bucket\\_suffix](#input\\_cur\\_bucket\\_suffix) | Suffix to append to the CUR bucket name ([ACCOUNT\\_ID]-[REGION]-[cur\\_bucket\\_suffix]) | `string` | `\"datadog-cur-data\"` | no |\n| \u003ca name=\"input_datadog_account_id\"\u003e\u003c/a\u003e [datadog\\_account\\_id](#input\\_datadog\\_account\\_id) | DataDog AWS account ID (should not need changed) | `string` | `\"464622532012\"` | no |\n| \u003ca name=\"input_datadog_site_name\"\u003e\u003c/a\u003e [datadog\\_site\\_name](#input\\_datadog\\_site\\_name) | DataDog site (e.g., datadoghq.com) | `string` | `\"datadoghq.com\"` | no |\n| \u003ca name=\"input_enable_cspm_resource_collection\"\u003e\u003c/a\u003e [enable\\_cspm\\_resource\\_collection](#input\\_enable\\_cspm\\_resource\\_collection) | Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general resource\\_collection. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_cur_collection\"\u003e\u003c/a\u003e [enable\\_cur\\_collection](#input\\_enable\\_cur\\_collection) | Configure a Cost and Usage Reporting export (uses legacy CUR) suitable for ingestion by Datadog. This does not fully configure Datadog due to lack of Terraform support but does do everything on the AWS side to prepare for enabling cost monitoring in Datadog. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_estimated_usage_detection\"\u003e\u003c/a\u003e [enable\\_estimated\\_usage\\_detection](#input\\_enable\\_estimated\\_usage\\_detection) | Enable estimated usage anomaly and forecast monitoring | `bool` | `false` | no |\n| \u003ca name=\"input_enable_guardduty_notifications\"\u003e\u003c/a\u003e [enable\\_guardduty\\_notifications](#input\\_enable\\_guardduty\\_notifications) | Send GuardDuty notifications to Datadog (`install_log_forwarder` must be true). This routes GuardDuty events to the log forwarder. GuardDuty events can also be received as a Datadog Event through Cloud Security Monitoring. | `bool` | `true` | no |\n| \u003ca name=\"input_enable_health_notifications\"\u003e\u003c/a\u003e [enable\\_health\\_notifications](#input\\_enable\\_health\\_notifications) | Send AWS health notifications to Datadog (`install_log_forwarder` must be true). This routes AWS Health events to the log forwarder. Health events can also be received as a Datadog Event through the AWS Health integration. | `bool` | `true` | no |\n| \u003ca name=\"input_enable_rds_enhanced_monitoring_lambda\"\u003e\u003c/a\u003e [enable\\_rds\\_enhanced\\_monitoring\\_lambda](#input\\_enable\\_rds\\_enhanced\\_monitoring\\_lambda) | Install the RDS Enhanced Monitoring Lambda | `bool` | `false` | no |\n| \u003ca name=\"input_enable_resource_collection\"\u003e\u003c/a\u003e [enable\\_resource\\_collection](#input\\_enable\\_resource\\_collection) | Enable or disable resource collection | `bool` | `true` | no |\n| \u003ca name=\"input_enable_securityhub_notifications\"\u003e\u003c/a\u003e [enable\\_securityhub\\_notifications](#input\\_enable\\_securityhub\\_notifications) | Send Security Hub notifications to Datadog (`install_log_forwarder` must be true). This routes Security Hub events to the log forwarder. | `bool` | `false` | no |\n| \u003ca name=\"input_estimated_usage_anomaly_message\"\u003e\u003c/a\u003e [estimated\\_usage\\_anomaly\\_message](#input\\_estimated\\_usage\\_anomaly\\_message) | Message for usage anomaly alerts | `string` | `\"Datadog usage anomaly detected\"` | no |\n| \u003ca name=\"input_estimated_usage_detection_config\"\u003e\u003c/a\u003e [estimated\\_usage\\_detection\\_config](#input\\_estimated\\_usage\\_detection\\_config) | Map of usage types to monitor. | `map(any)` | `{}` | no |\n| \u003ca name=\"input_estimated_usage_detection_default_config\"\u003e\u003c/a\u003e [estimated\\_usage\\_detection\\_default\\_config](#input\\_estimated\\_usage\\_detection\\_default\\_config) | Map of default usage monitoring settings for each metric type. All are disabled by default.\u003cbr\u003e\u003cbr\u003eAnomaly monitoring uses Datadog's anomaly detection feature. See https://docs.datadoghq.com/monitors/types/anomaly/ for documentation.\u003cbr\u003e\u003cbr\u003eEstimated usage monitoring uses simple thresholds on the `estimated_usage` metric family. By default, host thresholds are by day,\u003cbr\u003eas Datadog uses the peak instance count for the month on a 99th percentile basis. It may make sense to make this a shorter window,\u003cbr\u003eespecially if you have variable workloads. Log monitors are cumulative across the month, from the first day of the month at 00:00 UTC. | \u003cpre\u003emap(object({\u003cbr\u003e    anomaly_enabled           = bool\u003cbr\u003e    anomaly_span              = string\u003cbr\u003e    anomaly_threshold         = number\u003cbr\u003e    anomaly_window            = string\u003cbr\u003e    anomaly_deviations        = number\u003cbr\u003e    anomaly_seasonality       = string\u003cbr\u003e    anomaly_rollup            = number\u003cbr\u003e    estimated_usage_enabled   = bool\u003cbr\u003e    estimated_usage_span      = optional(string)\u003cbr\u003e    estimated_usage_threshold = number\u003cbr\u003e  }))\u003c/pre\u003e | \u003cpre\u003e{\u003cbr\u003e  \"hosts\": {\u003cbr\u003e    \"anomaly_deviations\": 1,\u003cbr\u003e    \"anomaly_enabled\": false,\u003cbr\u003e    \"anomaly_rollup\": 600,\u003cbr\u003e    \"anomaly_seasonality\": \"daily\",\u003cbr\u003e    \"anomaly_span\": \"last_1d\",\u003cbr\u003e    \"anomaly_threshold\": 0.15,\u003cbr\u003e    \"anomaly_window\": \"last_1h\",\u003cbr\u003e    \"estimated_usage_enabled\": false,\u003cbr\u003e    \"estimated_usage_span\": \"current_1d\",\u003cbr\u003e    \"estimated_usage_threshold\": 1000\u003cbr\u003e  },\u003cbr\u003e  \"logs_indexed\": {\u003cbr\u003e    \"anomaly_deviations\": 2,\u003cbr\u003e    \"anomaly_enabled\": false,\u003cbr\u003e    \"anomaly_rollup\": 60,\u003cbr\u003e    \"anomaly_seasonality\": \"hourly\",\u003cbr\u003e    \"anomaly_span\": \"last_1d\",\u003cbr\u003e    \"anomaly_threshold\": 0.15,\u003cbr\u003e    \"anomaly_window\": \"last_1h\",\u003cbr\u003e    \"estimated_usage_enabled\": false,\u003cbr\u003e    \"estimated_usage_span\": \"current_1mo\",\u003cbr\u003e    \"estimated_usage_threshold\": 1000\u003cbr\u003e  },\u003cbr\u003e  \"logs_ingested\": {\u003cbr\u003e    \"anomaly_deviations\": 2,\u003cbr\u003e    \"anomaly_enabled\": false,\u003cbr\u003e    \"anomaly_rollup\": 60,\u003cbr\u003e    \"anomaly_seasonality\": \"hourly\",\u003cbr\u003e    \"anomaly_span\": \"last_1d\",\u003cbr\u003e    \"anomaly_threshold\": 0.15,\u003cbr\u003e    \"anomaly_window\": \"last_1h\",\u003cbr\u003e    \"estimated_usage_enabled\": false,\u003cbr\u003e    \"estimated_usage_span\": \"current_1mo\",\u003cbr\u003e    \"estimated_usage_threshold\": 1000\u003cbr\u003e  }\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_estimated_usage_threshold_message\"\u003e\u003c/a\u003e [estimated\\_usage\\_threshold\\_message](#input\\_estimated\\_usage\\_threshold\\_message) | Message for usage threshold alerts | `string` | `\"Datadog usage threshold exceeded\"` | no |\n| \u003ca name=\"input_forward_buckets\"\u003e\u003c/a\u003e [forward\\_buckets](#input\\_forward\\_buckets) | Bucket(s) to collect logs from (using object notifications) | `list(string)` | `[]` | no |\n| \u003ca name=\"input_forward_log_groups\"\u003e\u003c/a\u003e [forward\\_log\\_groups](#input\\_forward\\_log\\_groups) | CloudWatch Log Group names to collect logs from (using filter subscriptions) | `list(string)` | `[]` | no |\n| \u003ca name=\"input_install_log_forwarder\"\u003e\u003c/a\u003e [install\\_log\\_forwarder](#input\\_install\\_log\\_forwarder) | controls whether log forwarder lambda should be installed | `bool` | `true` | no |\n| \u003ca name=\"input_integration_default_namespace_rules\"\u003e\u003c/a\u003e [integration\\_default\\_namespace\\_rules](#input\\_integration\\_default\\_namespace\\_rules) | Set all services to disabled by default. | `map(bool)` | \u003cpre\u003e{\u003cbr\u003e  \"api_gateway\": false,\u003cbr\u003e  \"application_elb\": false,\u003cbr\u003e  \"apprunner\": false,\u003cbr\u003e  \"appstream\": false,\u003cbr\u003e  \"appsync\": false,\u003cbr\u003e  \"athena\": false,\u003cbr\u003e  \"auto_scaling\": false,\u003cbr\u003e  \"backup\": false,\u003cbr\u003e  \"bedrock\": false,\u003cbr\u003e  \"billing\": false,\u003cbr\u003e  \"budgeting\": false,\u003cbr\u003e  \"certificatemanager\": false,\u003cbr\u003e  \"cloudfront\": false,\u003cbr\u003e  \"cloudhsm\": false,\u003cbr\u003e  \"cloudsearch\": false,\u003cbr\u003e  \"cloudwatch_events\": false,\u003cbr\u003e  \"cloudwatch_logs\": false,\u003cbr\u003e  \"codebuild\": false,\u003cbr\u003e  \"codewhisperer\": false,\u003cbr\u003e  \"cognito\": false,\u003cbr\u003e  \"collect_custom_metrics\": false,\u003cbr\u003e  \"connect\": false,\u003cbr\u003e  \"crawl_alarms\": false,\u003cbr\u003e  \"directconnect\": false,\u003cbr\u003e  \"dms\": false,\u003cbr\u003e  \"documentdb\": false,\u003cbr\u003e  \"dynamodb\": false,\u003cbr\u003e  \"dynamodbaccelerator\": false,\u003cbr\u003e  \"ebs\": false,\u003cbr\u003e  \"ec2\": false,\u003cbr\u003e  \"ec2api\": false,\u003cbr\u003e  \"ec2spot\": false,\u003cbr\u003e  \"ecr\": false,\u003cbr\u003e  \"ecs\": false,\u003cbr\u003e  \"efs\": false,\u003cbr\u003e  \"elasticache\": false,\u003cbr\u003e  \"elasticbeanstalk\": false,\u003cbr\u003e  \"elasticinference\": false,\u003cbr\u003e  \"elastictranscoder\": false,\u003cbr\u003e  \"elb\": false,\u003cbr\u003e  \"emr\": false,\u003cbr\u003e  \"es\": false,\u003cbr\u003e  \"firehose\": false,\u003cbr\u003e  \"fsx\": false,\u003cbr\u003e  \"gamelift\": false,\u003cbr\u003e  \"globalaccelerator\": false,\u003cbr\u003e  \"glue\": false,\u003cbr\u003e  \"inspector\": false,\u003cbr\u003e  \"iot\": false,\u003cbr\u003e  \"keyspaces\": false,\u003cbr\u003e  \"kinesis\": false,\u003cbr\u003e  \"kinesis_analytics\": false,\u003cbr\u003e  \"kms\": false,\u003cbr\u003e  \"lambda\": false,\u003cbr\u003e  \"lex\": false,\u003cbr\u003e  \"mediaconnect\": false,\u003cbr\u003e  \"mediaconvert\": false,\u003cbr\u003e  \"medialive\": false,\u003cbr\u003e  \"mediapackage\": false,\u003cbr\u003e  \"mediastore\": false,\u003cbr\u003e  \"mediatailor\": false,\u003cbr\u003e  \"memorydb\": false,\u003cbr\u003e  \"ml\": false,\u003cbr\u003e  \"mq\": false,\u003cbr\u003e  \"msk\": false,\u003cbr\u003e  \"mwaa\": false,\u003cbr\u003e  \"nat_gateway\": false,\u003cbr\u003e  \"neptune\": false,\u003cbr\u003e  \"network_elb\": false,\u003cbr\u003e  \"networkfirewall\": false,\u003cbr\u003e  \"networkmonitor\": false,\u003cbr\u003e  \"opsworks\": false,\u003cbr\u003e  \"polly\": false,\u003cbr\u003e  \"privatelinkendpoints\": false,\u003cbr\u003e  \"privatelinkservices\": false,\u003cbr\u003e  \"rds\": false,\u003cbr\u003e  \"rdsproxy\": false,\u003cbr\u003e  \"redshift\": false,\u003cbr\u003e  \"rekognition\": false,\u003cbr\u003e  \"route53\": false,\u003cbr\u003e  \"route53resolver\": false,\u003cbr\u003e  \"s3\": false,\u003cbr\u003e  \"s3storagelens\": false,\u003cbr\u003e  \"sagemaker\": false,\u003cbr\u003e  \"sagemakerendpoints\": false,\u003cbr\u003e  \"sagemakerlabelingjobs\": false,\u003cbr\u003e  \"sagemakermodelbuildingpipeline\": false,\u003cbr\u003e  \"sagemakerprocessingjobs\": false,\u003cbr\u003e  \"sagemakertrainingjobs\": false,\u003cbr\u003e  \"sagemakertransformjobs\": false,\u003cbr\u003e  \"sagemakerworkteam\": false,\u003cbr\u003e  \"service_quotas\": false,\u003cbr\u003e  \"ses\": false,\u003cbr\u003e  \"shield\": false,\u003cbr\u003e  \"sns\": false,\u003cbr\u003e  \"sqs\": false,\u003cbr\u003e  \"step_functions\": false,\u003cbr\u003e  \"storage_gateway\": false,\u003cbr\u003e  \"swf\": false,\u003cbr\u003e  \"textract\": false,\u003cbr\u003e  \"transitgateway\": false,\u003cbr\u003e  \"translate\": false,\u003cbr\u003e  \"trusted_advisor\": false,\u003cbr\u003e  \"usage\": false,\u003cbr\u003e  \"vpn\": false,\u003cbr\u003e  \"waf\": false,\u003cbr\u003e  \"wafv2\": false,\u003cbr\u003e  \"workspaces\": false,\u003cbr\u003e  \"xray\": false\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_integration_excluded_regions\"\u003e\u003c/a\u003e [integration\\_excluded\\_regions](#input\\_integration\\_excluded\\_regions) | Regions to exclude from DataDog monitoring | `list(string)` | `[]` | no |\n| \u003ca name=\"input_integration_filter_tags\"\u003e\u003c/a\u003e [integration\\_filter\\_tags](#input\\_integration\\_filter\\_tags) | Tags to filter EC2 instances on (see https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws) | `list(string)` | `[]` | no |\n| \u003ca name=\"input_integration_host_tags\"\u003e\u003c/a\u003e [integration\\_host\\_tags](#input\\_integration\\_host\\_tags) | Tags to apply to instances (see https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws) | `list(string)` | `[]` | no |\n| \u003ca name=\"input_integration_namespace_rules\"\u003e\u003c/a\u003e [integration\\_namespace\\_rules](#input\\_integration\\_namespace\\_rules) | Map of AWS services to allow in the integration. Defaults to none. | `map(bool)` | `{}` | no |\n| \u003ca name=\"input_log_forwarder_sources\"\u003e\u003c/a\u003e [log\\_forwarder\\_sources](#input\\_log\\_forwarder\\_sources) | List of services to automatically ingest all logs from (see https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) | `list(string)` | `[]` | no |\n| \u003ca name=\"input_log_limit_exceeded_message\"\u003e\u003c/a\u003e [log\\_limit\\_exceeded\\_message](#input\\_log\\_limit\\_exceeded\\_message) | Message for log limit warning alerts (alert suppressed if null) | `string` | `null` | no |\n| \u003ca name=\"input_logs_main_index_daily_limit\"\u003e\u003c/a\u003e [logs\\_main\\_index\\_daily\\_limit](#input\\_logs\\_main\\_index\\_daily\\_limit) | Daily log limit for the main index (only used if `logs_manage_main_index == true`) | `number` | `null` | no |\n| \u003ca name=\"input_logs_main_index_daily_limit_reset_offset\"\u003e\u003c/a\u003e [logs\\_main\\_index\\_daily\\_limit\\_reset\\_offset](#input\\_logs\\_main\\_index\\_daily\\_limit\\_reset\\_offset) | The reset time timezone offset for the daily limit of the main logs index (specify as +HH:MM or -HH:MM) | `string` | `\"+00:00\"` | no |\n| \u003ca name=\"input_logs_main_index_daily_limit_reset_time\"\u003e\u003c/a\u003e [logs\\_main\\_index\\_daily\\_limit\\_reset\\_time](#input\\_logs\\_main\\_index\\_daily\\_limit\\_reset\\_time) | The reset time for the daily limit of the main logs index (specify as HH:MM) | `string` | `\"00:00\"` | no |\n| \u003ca name=\"input_logs_main_index_daily_limit_warn_threshold\"\u003e\u003c/a\u003e [logs\\_main\\_index\\_daily\\_limit\\_warn\\_threshold](#input\\_logs\\_main\\_index\\_daily\\_limit\\_warn\\_threshold) | Warning threshold for daily log volume for the main index (only used if `logs_manage_main_index == true`) | `number` | `0.9` | no |\n| \u003ca name=\"input_logs_main_index_exclusion_filters\"\u003e\u003c/a\u003e [logs\\_main\\_index\\_exclusion\\_filters](#input\\_logs\\_main\\_index\\_exclusion\\_filters) | A list of maps defining exclusion filters for the main index | \u003cpre\u003elist(object({\u003cbr\u003e    name       = string\u003cbr\u003e    is_enabled = bool\u003cbr\u003e    filter = object({\u003cbr\u003e      query       = string\u003cbr\u003e      sample_rate = number\u003cbr\u003e    })\u003cbr\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_logs_main_index_retention_days\"\u003e\u003c/a\u003e [logs\\_main\\_index\\_retention\\_days](#input\\_logs\\_main\\_index\\_retention\\_days) | The number of days to retain logs in the main index (only used if `logs_manage_main_index == true`) | `number` | `15` | no |\n| \u003ca name=\"input_logs_manage_main_index\"\u003e\u003c/a\u003e [logs\\_manage\\_main\\_index](#input\\_logs\\_manage\\_main\\_index) | A boolean flag to manage the main Datadog logs index | `bool` | `false` | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | Moniker to apply to all resources in the module | `string` | n/a | yes |\n| \u003ca name=\"input_rds_enhanced_monitoring_forwarder_version\"\u003e\u003c/a\u003e [rds\\_enhanced\\_monitoring\\_forwarder\\_version](#input\\_rds\\_enhanced\\_monitoring\\_forwarder\\_version) | Version of the Datadog RDS enhanced monitoring lambda to use (module is only tested against the default version) | `string` | `\"3.103.0\"` | no |\n| \u003ca name=\"input_renotify_interval\"\u003e\u003c/a\u003e [renotify\\_interval](#input\\_renotify\\_interval) | Renotify interval for all alerts (set to null to disable) | `number` | `30` | no |\n| \u003ca name=\"input_renotify_statuses\"\u003e\u003c/a\u003e [renotify\\_statuses](#input\\_renotify\\_statuses) | Renotify statuses for all alerts (not used if `renotify_interval` is null) | `list(string)` | \u003cpre\u003e[\u003cbr\u003e  \"alert\"\u003cbr\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | User-Defined tags | `map(string)` | `{}` | no |\n| \u003ca name=\"input_use_full_permissions\"\u003e\u003c/a\u003e [use\\_full\\_permissions](#input\\_use\\_full\\_permissions) | Controls whether DataDog is given full permissions or core permissions. Generally you want full. | `bool` | `true` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_iam_role_datadog\"\u003e\u003c/a\u003e [iam\\_role\\_datadog](#output\\_iam\\_role\\_datadog) | IAM role assumed by Datadog resources |\n| \u003ca name=\"output_iam_user_datadog\"\u003e\u003c/a\u003e [iam\\_user\\_datadog](#output\\_iam\\_user\\_datadog) | IAM user accessed by Datadog resources (when `access_method == user`) |\n| \u003ca name=\"output_lambda_arn_forwarder\"\u003e\u003c/a\u003e [lambda\\_arn\\_forwarder](#output\\_lambda\\_arn\\_forwarder) | DataDog Lambda Forwarder ARN |\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhythmictech%2Fterraform-aws-datadog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhythmictech%2Fterraform-aws-datadog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhythmictech%2Fterraform-aws-datadog/lists"}