scribd / terraform-aws-datadog

Terraform module for setting up AWS Datadog integration
https://registry.terraform.io/modules/scribd/datadog/aws/1.0.0
MIT License
38 stars 30 forks source link

Switch to for_each for log forwarding resources #59

Closed zbstof closed 8 months ago

zbstof commented 8 months ago

In case var.cloudwatch_log_groups changes somewhere in the middle of the list, all resources indexed since that position must be recreated. This can be remedied by switching to for_each instead of count

Was:

  # module.datadog[0].aws_cloudwatch_log_subscription_filter.test_lambdafunction_logfilter[0] will be created
  + resource "aws_cloudwatch_log_subscription_filter" "test_lambdafunction_logfilter" {
      + destination_arn = (known after apply)
      + distribution    = "Random"
      + id              = (known after apply)
      + log_group_name  = "/aws/sagemaker/TransformJobs"
      + name            = "/aws/sagemaker/TransformJobs-filter"
      + role_arn        = (known after apply)
    }

  # module.datadog[0].aws_cloudwatch_log_subscription_filter.test_lambdafunction_logfilter[1] will be created
  + resource "aws_cloudwatch_log_subscription_filter" "test_lambdafunction_logfilter" {
      + destination_arn = (known after apply)
      + distribution    = "Random"
      + id              = (known after apply)
      + log_group_name  = "/aws/sagemaker/Endpoints/slideshare-spam-model"
      + name            = "/aws/sagemaker/Endpoints/slideshare-spam-model-filter"
      + role_arn        = (known after apply)
    }

  # module.datadog[0].aws_lambda_permission.allow_cloudwatch_logs_to_call_dd_lambda_handler[0] will be created
  + resource "aws_lambda_permission" "allow_cloudwatch_logs_to_call_dd_lambda_handler" {
      + action              = "lambda:InvokeFunction"
      + function_name       = (known after apply)
      + id                  = (known after apply)
      + principal           = "logs.us-east-2.amazonaws.com"
      + source_arn          = "arn:aws:logs:us-east-2::log-group:/aws/sagemaker/TransformJobs:*"
      + statement_id        = "_aws_sagemaker_TransformJobs-AllowExecutionFromCloudWatchLogs"
      + statement_id_prefix = (known after apply)
    }

  # module.datadog[0].aws_lambda_permission.allow_cloudwatch_logs_to_call_dd_lambda_handler[1] will be created
  + resource "aws_lambda_permission" "allow_cloudwatch_logs_to_call_dd_lambda_handler" {
      + action              = "lambda:InvokeFunction"
      + function_name       = (known after apply)
      + id                  = (known after apply)
      + principal           = "logs.us-east-2.amazonaws.com"
      + source_arn          = "arn:aws:logs:us-east-2::log-group:/aws/sagemaker/Endpoints/slideshare-spam-model:*"
      + statement_id        = "_aws_sagemaker_Endpoints_slideshare-spam-model-AllowExecutionFromCloudWatchLogs"
      + statement_id_prefix = (known after apply)
    }

Is:

  # module.datadog[0].aws_cloudwatch_log_subscription_filter.test_lambdafunction_logfilter["/aws/sagemaker/Endpoints/slideshare-spam-model"] will be created
  + resource "aws_cloudwatch_log_subscription_filter" "test_lambdafunction_logfilter" {
      + destination_arn = (known after apply)
      + distribution    = "Random"
      + id              = (known after apply)
      + log_group_name  = "/aws/sagemaker/Endpoints/slideshare-spam-model"
      + name            = "/aws/sagemaker/Endpoints/slideshare-spam-model-filter"
      + role_arn        = (known after apply)
    }

  # module.datadog[0].aws_cloudwatch_log_subscription_filter.test_lambdafunction_logfilter["/aws/sagemaker/TransformJobs"] will be created
  + resource "aws_cloudwatch_log_subscription_filter" "test_lambdafunction_logfilter" {
      + destination_arn = (known after apply)
      + distribution    = "Random"
      + id              = (known after apply)
      + log_group_name  = "/aws/sagemaker/TransformJobs"
      + name            = "/aws/sagemaker/TransformJobs-filter"
      + role_arn        = (known after apply)
    }

  # module.datadog[0].aws_lambda_permission.allow_cloudwatch_logs_to_call_dd_lambda_handler["/aws/sagemaker/Endpoints/slideshare-spam-model"] will be created
  + resource "aws_lambda_permission" "allow_cloudwatch_logs_to_call_dd_lambda_handler" {
      + action              = "lambda:InvokeFunction"
      + function_name       = (known after apply)
      + id                  = (known after apply)
      + principal           = "logs.us-east-2.amazonaws.com"
      + source_arn          = "arn:aws:logs:us-east-2::log-group:/aws/sagemaker/Endpoints/slideshare-spam-model:*"
      + statement_id        = "_aws_sagemaker_Endpoints_slideshare-spam-model-AllowExecutionFromCloudWatchLogs"
      + statement_id_prefix = (known after apply)
    }

  # module.datadog[0].aws_lambda_permission.allow_cloudwatch_logs_to_call_dd_lambda_handler["/aws/sagemaker/TransformJobs"] will be created
  + resource "aws_lambda_permission" "allow_cloudwatch_logs_to_call_dd_lambda_handler" {
      + action              = "lambda:InvokeFunction"
      + function_name       = (known after apply)
      + id                  = (known after apply)
      + principal           = "logs.us-east-2.amazonaws.com"
      + source_arn          = "arn:aws:logs:us-east-2::log-group:/aws/sagemaker/TransformJobs:*"
      + statement_id        = "_aws_sagemaker_TransformJobs-AllowExecutionFromCloudWatchLogs"
      + statement_id_prefix = (known after apply)
    }
github-actions[bot] commented 8 months ago

:tada: This PR is included in version 3.3.0 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: