From b1e5be8ecd61e3bd808e1b2cfa5207acd7fac298 Mon Sep 17 00:00:00 2001 From: Richard Gavel Date: Wed, 13 Nov 2024 14:43:55 -0600 Subject: [PATCH 1/2] Add cloudwatch log class functionality --- README.md | 1 + examples/complete/versions.tf | 2 +- examples/ec2-autoscaling/versions.tf | 2 +- examples/fargate/versions.tf | 2 +- modules/cluster/versions.tf | 2 +- modules/container-definition/main.tf | 1 + modules/container-definition/variables.tf | 6 ++++++ modules/container-definition/versions.tf | 2 +- modules/service/main.tf | 1 + modules/service/versions.tf | 2 +- variables.tf | 6 ++++++ versions.tf | 2 +- wrappers/cluster/versions.tf | 2 +- wrappers/container-definition/main.tf | 1 + wrappers/container-definition/versions.tf | 2 +- wrappers/versions.tf | 2 +- 16 files changed, 26 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8e20fbc..4eacab4 100644 --- a/README.md +++ b/README.md @@ -184,6 +184,7 @@ No resources. | [autoscaling\_capacity\_providers](#input\_autoscaling\_capacity\_providers) | Map of autoscaling capacity provider definitions to create for the cluster | `any` | `{}` | no | | [cloudwatch\_log\_group\_kms\_key\_id](#input\_cloudwatch\_log\_group\_kms\_key\_id) | If a KMS Key ARN is set, this key will be used to encrypt the corresponding log group. Please be sure that the KMS Key has an appropriate key policy (https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) | `string` | `null` | no | | [cloudwatch\_log\_group\_name](#input\_cloudwatch\_log\_group\_name) | Custom name of CloudWatch Log Group for ECS cluster | `string` | `null` | no | +| [cloudwatch\_log\_group\_log\_group\_class](#input\_cloudwatch\_log\_group\_log\_group\_class) | Specified the log class of the log group. Possible values are: STANDARD or INFREQUENT_ACCESS. Default is STANDARD | `string` | `STANDARD` | no | | [cloudwatch\_log\_group\_retention\_in\_days](#input\_cloudwatch\_log\_group\_retention\_in\_days) | Number of days to retain log events | `number` | `90` | no | | [cloudwatch\_log\_group\_tags](#input\_cloudwatch\_log\_group\_tags) | A map of additional tags to add to the log group created | `map(string)` | `{}` | no | | [cluster\_configuration](#input\_cluster\_configuration) | The execute command configuration for the cluster | `any` | `{}` | no | diff --git a/examples/complete/versions.tf b/examples/complete/versions.tf index 682191e..ea21a72 100644 --- a/examples/complete/versions.tf +++ b/examples/complete/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/examples/ec2-autoscaling/versions.tf b/examples/ec2-autoscaling/versions.tf index 682191e..ea21a72 100644 --- a/examples/ec2-autoscaling/versions.tf +++ b/examples/ec2-autoscaling/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/examples/fargate/versions.tf b/examples/fargate/versions.tf index 682191e..ea21a72 100644 --- a/examples/fargate/versions.tf +++ b/examples/fargate/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/modules/cluster/versions.tf b/modules/cluster/versions.tf index 682191e..ea21a72 100644 --- a/modules/cluster/versions.tf +++ b/modules/cluster/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/modules/container-definition/main.tf b/modules/container-definition/main.tf index 682fc94..a7f75a3 100644 --- a/modules/container-definition/main.tf +++ b/modules/container-definition/main.tf @@ -76,6 +76,7 @@ resource "aws_cloudwatch_log_group" "this" { name = var.cloudwatch_log_group_use_name_prefix ? null : local.log_group_name name_prefix = var.cloudwatch_log_group_use_name_prefix ? "${local.log_group_name}-" : null + log_group_class = var.cloudwatch_log_group_log_group_class retention_in_days = var.cloudwatch_log_group_retention_in_days kms_key_id = var.cloudwatch_log_group_kms_key_id diff --git a/modules/container-definition/variables.tf b/modules/container-definition/variables.tf index 0f88b9d..67c2340 100644 --- a/modules/container-definition/variables.tf +++ b/modules/container-definition/variables.tf @@ -304,6 +304,12 @@ variable "cloudwatch_log_group_use_name_prefix" { default = false } +variable "cloudwatch_log_group_log_group_class" { + description = "Specified the log class of the log group. Possible values are: STANDARD or INFREQUENT_ACCESS. Default is STANDARD" + type = string + default = "STANDARD" +} + variable "cloudwatch_log_group_retention_in_days" { description = "Number of days to retain log events. Default is 30 days" type = number diff --git a/modules/container-definition/versions.tf b/modules/container-definition/versions.tf index 682191e..ea21a72 100644 --- a/modules/container-definition/versions.tf +++ b/modules/container-definition/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/modules/service/main.tf b/modules/service/main.tf index 4843473..6fb6fcc 100644 --- a/modules/service/main.tf +++ b/modules/service/main.tf @@ -580,6 +580,7 @@ module "container_definition" { create_cloudwatch_log_group = try(each.value.create_cloudwatch_log_group, var.container_definition_defaults.create_cloudwatch_log_group, true) cloudwatch_log_group_name = try(each.value.cloudwatch_log_group_name, var.container_definition_defaults.cloudwatch_log_group_name, null) cloudwatch_log_group_use_name_prefix = try(each.value.cloudwatch_log_group_use_name_prefix, var.container_definition_defaults.cloudwatch_log_group_use_name_prefix, false) + cloudwatch_log_group_log_group_class = try(each.value.cloudwatch_log_group_log_group_class, var.container_definition_defaults.cloudwatch_log_group_log_group_class, "STANDARD") cloudwatch_log_group_retention_in_days = try(each.value.cloudwatch_log_group_retention_in_days, var.container_definition_defaults.cloudwatch_log_group_retention_in_days, 14) cloudwatch_log_group_kms_key_id = try(each.value.cloudwatch_log_group_kms_key_id, var.container_definition_defaults.cloudwatch_log_group_kms_key_id, null) diff --git a/modules/service/versions.tf b/modules/service/versions.tf index 682191e..ea21a72 100644 --- a/modules/service/versions.tf +++ b/modules/service/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/variables.tf b/variables.tf index b624a30..a31d4e3 100644 --- a/variables.tf +++ b/variables.tf @@ -65,6 +65,12 @@ variable "cloudwatch_log_group_name" { default = null } +variable "cloudwatch_log_group_log_group_class" { + description = "Specified the log class of the log group. Possible values are: STANDARD or INFREQUENT_ACCESS. Default is STANDARD" + type = string + default = "STANDARD" +} + variable "cloudwatch_log_group_retention_in_days" { description = "Number of days to retain log events" type = number diff --git a/versions.tf b/versions.tf index 682191e..ea21a72 100644 --- a/versions.tf +++ b/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/wrappers/cluster/versions.tf b/wrappers/cluster/versions.tf index 682191e..ea21a72 100644 --- a/wrappers/cluster/versions.tf +++ b/wrappers/cluster/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/wrappers/container-definition/main.tf b/wrappers/container-definition/main.tf index 7bcba25..3399d62 100644 --- a/wrappers/container-definition/main.tf +++ b/wrappers/container-definition/main.tf @@ -4,6 +4,7 @@ module "wrapper" { for_each = var.items cloudwatch_log_group_kms_key_id = try(each.value.cloudwatch_log_group_kms_key_id, var.defaults.cloudwatch_log_group_kms_key_id, null) + cloudwatch_log_group_log_group_class = try(each.value.cloudwatch_log_group_log_group_class, var.defaults.cloudwatch_log_group_log_group_class, "STANDARD") cloudwatch_log_group_name = try(each.value.cloudwatch_log_group_name, var.defaults.cloudwatch_log_group_name, null) cloudwatch_log_group_retention_in_days = try(each.value.cloudwatch_log_group_retention_in_days, var.defaults.cloudwatch_log_group_retention_in_days, 30) cloudwatch_log_group_use_name_prefix = try(each.value.cloudwatch_log_group_use_name_prefix, var.defaults.cloudwatch_log_group_use_name_prefix, false) diff --git a/wrappers/container-definition/versions.tf b/wrappers/container-definition/versions.tf index 682191e..ea21a72 100644 --- a/wrappers/container-definition/versions.tf +++ b/wrappers/container-definition/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } diff --git a/wrappers/versions.tf b/wrappers/versions.tf index 682191e..ea21a72 100644 --- a/wrappers/versions.tf +++ b/wrappers/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 4.66.1" + version = ">= 5.30.0" } } } From dccbdb761255a4320984c8c357502ddb7fd3faf4 Mon Sep 17 00:00:00 2001 From: Richard Gavel Date: Wed, 13 Nov 2024 18:09:19 -0600 Subject: [PATCH 2/2] add to sample --- examples/fargate/main.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/fargate/main.tf b/examples/fargate/main.tf index c263e0b..db29ba2 100644 --- a/examples/fargate/main.tf +++ b/examples/fargate/main.tf @@ -101,7 +101,8 @@ module "ecs_service" { condition = "START" }] - enable_cloudwatch_logging = false + enable_cloudwatch_logging = true + cloudwatch_log_group_log_group_class = "INFREQUENT_ACCESS" log_configuration = { logDriver = "awsfirelens" options = {