Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: GCForms release v3.7.0 #610

Merged
merged 1 commit into from
Feb 29, 2024

Conversation

sre-read-write[bot]
Copy link
Contributor

@sre-read-write sre-read-write bot commented Feb 28, 2024

🤖 I have created a release beep boop

3.7.0 (2024-02-29)

Features

  • enable file scanning on Vault S3 bucket (#611) (a44318c)

Bug Fixes

  • cloudwatch alarm configuration for unhealthy host (#604) (dbdbba1)

Miscellaneous Chores

  • Rename next auth url in preperation for next auth upgrade (f16e080)

This PR was generated with Release Please. See documentation.

@sre-read-write sre-read-write bot changed the title chore: GCForms release v3.6.1 chore: GCForms release v3.7.0 Feb 29, 2024
@sre-read-write sre-read-write bot force-pushed the release-please--branches--develop branch from 613ac52 to e02375d Compare February 29, 2024 15:50
@sre-read-write sre-read-write bot force-pushed the release-please--branches--develop branch from e02375d to f1d1b8c Compare February 29, 2024 17:03
Copy link

Production: file_scanning

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

Plan: 9 to add, 0 to change, 0 to destroy
Show summary
CHANGE NAME
add module.vault_scan_object.aws_iam_policy.scan_files[0]
module.vault_scan_object.aws_iam_role.scan_files[0]
module.vault_scan_object.aws_iam_role_policy_attachment.scan_files[0]
module.vault_scan_object.aws_kms_alias.s3_scan_object_queue
module.vault_scan_object.aws_kms_key.s3_scan_object_queue
module.vault_scan_object.aws_s3_bucket_notification.s3_scan_object[0]
module.vault_scan_object.aws_s3_bucket_policy.upload_bucket[0]
module.vault_scan_object.aws_sqs_queue.s3_scan_object
module.vault_scan_object.aws_sqs_queue_policy.s3_scan_object
Show plan
Resource actions are indicated with the following symbols:
  + create
 <= read (data resources)

Terraform will perform the following actions:

  # module.vault_scan_object.data.aws_iam_policy_document.limit_tagging[0] will be read during apply
  # (config refers to values not yet known)
 <= data "aws_iam_policy_document" "limit_tagging" {
      + id   = (known after apply)
      + json = (known after apply)

      + statement {
          + actions   = [
              + "s3:DeleteObjectTagging",
              + "s3:DeleteObjectVersionTagging",
              + "s3:PutObjectTagging",
              + "s3:PutObjectVersionTagging",
            ]
          + effect    = "Deny"
          + resources = [
              + "arn:aws:s3:::forms-production-vault-file-storage/*",
            ]

          + condition {
              + test     = "StringNotLike"
              + values   = [
                  + (known after apply),
                ]
              + variable = "aws:PrincipalArn"
            }

          + principals {
              + identifiers = [
                  + "*",
                ]
              + type        = "AWS"
            }
        }
      + statement {
          + actions   = [
              + "s3:PutObjectTagging",
              + "s3:PutObjectVersionTagging",
            ]
          + effect    = "Allow"
          + resources = [
              + "arn:aws:s3:::forms-production-vault-file-storage/*",
            ]

          + principals {
              + identifiers = [
                  + (known after apply),
                ]
              + type        = "AWS"
            }
        }
    }

  # module.vault_scan_object.data.aws_iam_policy_document.s3_scan_object will be read during apply
  # (config refers to values not yet known)
 <= data "aws_iam_policy_document" "s3_scan_object" {
      + id   = (known after apply)
      + json = (known after apply)

      + statement {
          + actions   = [
              + "sqs:SendMessage",
            ]
          + effect    = "Allow"
          + resources = [
              + (known after apply),
            ]
          + sid       = "S3sendToSQS"

          + condition {
              + test     = "ArnEquals"
              + values   = [
                  + "arn:aws:s3:::forms-production-vault-file-storage",
                ]
              + variable = "aws:SourceArn"
            }

          + principals {
              + identifiers = [
                  + "s3.amazonaws.com",
                ]
              + type        = "Service"
            }
        }
      + statement {
          + actions   = [
              + "sqs:DeleteMessage",
              + "sqs:GetQueueAttributes",
              + "sqs:ReceiveMessage",
            ]
          + effect    = "Allow"
          + resources = [
              + (known after apply),
            ]
          + sid       = "LambdaTriggerFromSQS"

          + principals {
              + identifiers = [
                  + "arn:aws:iam::806545929748:role/s3-scan-object",
                ]
              + type        = "AWS"
            }
        }
    }

  # module.vault_scan_object.data.aws_iam_policy_document.scan_files_download[0] will be read during apply
  # (config refers to values not yet known)
 <= data "aws_iam_policy_document" "scan_files_download" {
      + id   = (known after apply)
      + json = (known after apply)

      + statement {
          + actions   = [
              + "s3:GetBucketLocation",
              + "s3:GetObject",
              + "s3:GetObjectTagging",
              + "s3:GetObjectVersion",
              + "s3:GetObjectVersionTagging",
              + "s3:ListBucket",
            ]
          + effect    = "Allow"
          + resources = [
              + "arn:aws:s3:::forms-production-vault-file-storage",
              + "arn:aws:s3:::forms-production-vault-file-storage/*",
            ]

          + principals {
              + identifiers = [
                  + (known after apply),
                ]
              + type        = "AWS"
            }
        }
    }

  # module.vault_scan_object.data.aws_iam_policy_document.upload_bucket[0] will be read during apply
  # (config refers to values not yet known)
 <= data "aws_iam_policy_document" "upload_bucket" {
      + id                      = (known after apply)
      + json                    = (known after apply)
      + source_policy_documents = [
          + (known after apply),
          + (known after apply),
        ]
    }

  # module.vault_scan_object.aws_iam_policy.scan_files[0] will be created
  + resource "aws_iam_policy" "scan_files" {
      + arn         = (known after apply)
      + id          = (known after apply)
      + name        = "ScanFilesGetObjects"
      + name_prefix = (known after apply)
      + path        = "/"
      + policy      = jsonencode(
            {
              + Statement = [
                  + {
                      + Action   = [
                          + "s3:PutObjectVersionTagging",
                          + "s3:PutObjectTagging",
                          + "s3:ListBucket",
                          + "s3:GetObjectVersionTagging",
                          + "s3:GetObjectVersion",
                          + "s3:GetObjectTagging",
                          + "s3:GetObject",
                          + "s3:GetBucketLocation",
                          + "s3:DeleteObjectVersionTagging",
                          + "s3:DeleteObjectTagging",
                        ]
                      + Effect   = "Allow"
                      + Resource = [
                          + "arn:aws:s3:::forms-production-vault-file-storage/*",
                          + "arn:aws:s3:::forms-production-vault-file-storage",
                        ]
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + policy_id   = (known after apply)
      + tags        = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + tags_all    = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
    }

  # module.vault_scan_object.aws_iam_role.scan_files[0] will be created
  + resource "aws_iam_role" "scan_files" {
      + arn                   = (known after apply)
      + assume_role_policy    = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "sts:AssumeRole"
                      + Effect    = "Allow"
                      + Principal = {
                          + AWS = [
                              + "arn:aws:iam::806545929748:role/s3-scan-object",
                              + "arn:aws:iam::806545929748:role/scan-files-api",
                            ]
                        }
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + create_date           = (known after apply)
      + force_detach_policies = false
      + id                    = (known after apply)
      + managed_policy_arns   = (known after apply)
      + max_session_duration  = 3600
      + name                  = "ScanFilesGetObjects"
      + name_prefix           = (known after apply)
      + path                  = "/"
      + tags                  = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + tags_all              = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + unique_id             = (known after apply)
    }

  # module.vault_scan_object.aws_iam_role_policy_attachment.scan_files[0] will be created
  + resource "aws_iam_role_policy_attachment" "scan_files" {
      + id         = (known after apply)
      + policy_arn = (known after apply)
      + role       = "ScanFilesGetObjects"
    }

  # module.vault_scan_object.aws_kms_alias.s3_scan_object_queue will be created
  + resource "aws_kms_alias" "s3_scan_object_queue" {
      + arn            = (known after apply)
      + id             = (known after apply)
      + name           = "alias/s3_scan_object_queue"
      + name_prefix    = (known after apply)
      + target_key_arn = (known after apply)
      + target_key_id  = (known after apply)
    }

  # module.vault_scan_object.aws_kms_key.s3_scan_object_queue will be created
  + resource "aws_kms_key" "s3_scan_object_queue" {
      + arn                                = (known after apply)
      + bypass_policy_lockout_safety_check = false
      + customer_master_key_spec           = "SYMMETRIC_DEFAULT"
      + description                        = "S3 scan objects KMS key for SQS queue encryption"
      + enable_key_rotation                = true
      + id                                 = (known after apply)
      + is_enabled                         = true
      + key_id                             = (known after apply)
      + key_usage                          = "ENCRYPT_DECRYPT"
      + multi_region                       = (known after apply)
      + policy                             = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "kms:*"
                      + Effect    = "Allow"
                      + Principal = {
                          + AWS = "arn:aws:iam::957818836222:root"
                        }
                      + Resource  = "*"
                    },
                  + {
                      + Action    = [
                          + "kms:GenerateDataKey*",
                          + "kms:Decrypt",
                        ]
                      + Effect    = "Allow"
                      + Principal = {
                          + AWS     = "arn:aws:iam::806545929748:role/s3-scan-object"
                          + Service = "s3.amazonaws.com"
                        }
                      + Resource  = "*"
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + tags                               = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + tags_all                           = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
    }

  # module.vault_scan_object.aws_s3_bucket_notification.s3_scan_object[0] will be created
  + resource "aws_s3_bucket_notification" "s3_scan_object" {
      + bucket      = "forms-production-vault-file-storage"
      + eventbridge = false
      + id          = (known after apply)

      + queue {
          + events    = [
              + "s3:ObjectCreated:*",
            ]
          + id        = "ScanObjectCreated"
          + queue_arn = (known after apply)
        }
    }

  # module.vault_scan_object.aws_s3_bucket_policy.upload_bucket[0] will be created
  + resource "aws_s3_bucket_policy" "upload_bucket" {
      + bucket = "forms-production-vault-file-storage"
      + id     = (known after apply)
      + policy = (known after apply)
    }

  # module.vault_scan_object.aws_sqs_queue.s3_scan_object will be created
  + resource "aws_sqs_queue" "s3_scan_object" {
      + arn                               = (known after apply)
      + content_based_deduplication       = false
      + deduplication_scope               = (known after apply)
      + delay_seconds                     = 0
      + fifo_queue                        = false
      + fifo_throughput_limit             = (known after apply)
      + id                                = (known after apply)
      + kms_data_key_reuse_period_seconds = (known after apply)
      + kms_master_key_id                 = (known after apply)
      + max_message_size                  = 262144
      + message_retention_seconds         = 345600
      + name                              = "s3-scan-object"
      + name_prefix                       = (known after apply)
      + policy                            = (known after apply)
      + receive_wait_time_seconds         = 0
      + redrive_allow_policy              = (known after apply)
      + redrive_policy                    = (known after apply)
      + sqs_managed_sse_enabled           = (known after apply)
      + tags                              = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + tags_all                          = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + url                               = (known after apply)
      + visibility_timeout_seconds        = 300
    }

  # module.vault_scan_object.aws_sqs_queue_policy.s3_scan_object will be created
  + resource "aws_sqs_queue_policy" "s3_scan_object" {
      + id        = (known after apply)
      + policy    = (known after apply)
      + queue_url = (known after apply)
    }

Plan: 9 to add, 0 to change, 0 to destroy.

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Show Conftest results
20 tests, 20 passed, 0 warnings, 0 failures, 0 exceptions

Copy link

Production: load_balancer

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

Plan: 0 to add, 0 to change, 0 to destroy
Show summary
CHANGE NAME
Show plan
Changes to Outputs:
  + lb_target_group_2_arn  = "arn:aws:elasticloadbalancing:ca-central-1:957818836222:targetgroup/form-viewer-2/a03ac97959b5fb63"

You can apply this plan to save these new output values to the Terraform
state, without changing any real infrastructure.

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_acm_certificate.form_viewer"]
WARN - plan.json - main - Missing Common Tags: ["aws_acm_certificate.form_viewer_maintenance_mode"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudfront_distribution.maintenance_mode"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_role.firehose_waf_logs"]
WARN - plan.json - main - Missing Common Tags: ["aws_kinesis_firehose_delivery_stream.firehose_waf_logs"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb.form_viewer"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_listener.form_viewer_http"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_listener.form_viewer_https"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_target_group.form_viewer_1"]
WARN - plan.json - main - Missing Common Tags: ["aws_lb_target_group.form_viewer_2"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_bucket.maintenance_mode"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_css_files[\"style.css\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_html_files[\"index-fr.html\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_html_files[\"index.html\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_ico_files[\"favicon.ico\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_s3_object.maintenance_static_page_svg_files[\"site-unavailable.svg\"]"]
WARN - plan.json - main - Missing Common Tags: ["aws_shield_protection.alb"]
WARN - plan.json - main - Missing Common Tags: ["aws_shield_protection.route53_hosted_zone[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_wafv2_regex_pattern_set.cognito_login_paths"]
WARN - plan.json - main - Missing Common Tags: ["aws_wafv2_regex_pattern_set.forms_base_url"]
WARN - plan.json - main - Missing Common Tags:...

Copy link

Production: app

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

⚠️   Warning: resources will be destroyed by this change!

Plan: 1 to add, 0 to change, 1 to destroy
Show summary
CHANGE NAME
recreate aws_ecs_task_definition.form_viewer
Show plan
Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # aws_ecs_task_definition.form_viewer must be replaced
-/+ resource "aws_ecs_task_definition" "form_viewer" {
      ~ arn                      = "arn:aws:ecs:ca-central-1:957818836222:task-definition/form-viewer:53" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:ca-central-1:957818836222:task-definition/form-viewer" -> (known after apply)
      ~ container_definitions    = jsonencode(
          ~ [
              ~ {
                  - cpu              = 0
                  ~ environment      = [
                        # (4 unchanged elements hidden)
                        {
                            name  = "EMAIL_ADDRESS_SUPPORT"
                            value = "[email protected]"
                        },
                      + {
                          + name  = "HOST_URL"
                          + value = "https://forms-formulaires.alpha.canada.ca"
                        },
                        {
                            name  = "METRIC_PROVIDER"
                            value = "stdout"
                        },
                        # (9 unchanged elements hidden)
                    ]
                  - essential        = true
                  - mountPoints      = []
                    name             = "form_viewer"
                  ~ portMappings     = [
                      ~ {
                          - hostPort      = 3000
                          - protocol      = "tcp"
                            # (1 unchanged attribute hidden)
                        },
                    ]
                  - volumesFrom      = []
                    # (4 unchanged attributes hidden)
                },
            ] # forces replacement
        )
      ~ id                       = "form-viewer" -> (known after apply)
      ~ revision                 = 53 -> (known after apply)
      - tags                     = {} -> null
        # (9 unchanged attributes hidden)
    }

Plan: 1 to add, 0 to change, 1 to destroy.

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_appautoscaling_target.forms[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.forms"]
WARN - plan.json - main - Missing Common Tags: ["aws_codedeploy_app.app"]
WARN - plan.json - main - Missing Common Tags: ["aws_codedeploy_deployment_group.app"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecs_cluster.forms"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecs_service.form_viewer"]
WARN - plan.json - main - Missing Common Tags: ["aws_ecs_task_definition.form_viewer"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.cognito"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.forms_dynamodb"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.forms_kms"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.forms_s3"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.forms_secrets_manager"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.forms_sqs"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_role.codedeploy"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_role.forms"]

34 tests, 19 passed, 15 warnings, 0 failures, 0 exceptions

Copy link

Production: lambdas

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

Plan: 0 to add, 1 to change, 0 to destroy
Show summary
CHANGE NAME
update aws_lambda_function.vault_integrity
Show plan
Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # aws_lambda_function.vault_integrity will be updated in-place
  ~ resource "aws_lambda_function" "vault_integrity" {
        id                             = "Vault_Data_Integrity_Check"
      ~ last_modified                  = "2024-02-27T16:47:04.000+0000" -> (known after apply)
      ~ source_code_hash               = "9lDCUtEgnDGaN0b7aU2yhDlM0DDumsUYZhbUsYDuAF4=" -> "TowbMcppnki+0a5fq50Oral3CqleiwGw7U1igvFz0Ws="
        tags                           = {}
        # (24 unchanged attributes hidden)

        # (3 unchanged blocks hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.audit_logs_archiver_lambda_trigger"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.form_archiver_lambda_trigger"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.nagware_lambda_trigger"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.reliability_dlq_lambda_trigger"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.response_archiver_lambda_trigger"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.archive_form_templates"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.audit_logs"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.audit_logs_archiver"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.dead_letter_queue_consumer"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.nagware"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.reliability"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.response_archiver"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.submission"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.vault_integrity"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_dynamodb"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_kms"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_logging"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_rds"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_s3"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_secrets"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_sns"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_policy.lambda_sqs"]
WARN -...

Copy link

Production: alarms

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

⚠️   Warning: resources will be destroyed by this change!

Plan: 2 to add, 0 to change, 1 to destroy
Show summary
CHANGE NAME
add aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup1
aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup2
delete aws_cloudwatch_metric_alarm.UnHealthyHostCount
Show plan
Resource actions are indicated with the following symbols:
  + create
  - destroy

Terraform will perform the following actions:

  # aws_cloudwatch_metric_alarm.UnHealthyHostCount will be destroyed
  # (because aws_cloudwatch_metric_alarm.UnHealthyHostCount is not in configuration)
  - resource "aws_cloudwatch_metric_alarm" "UnHealthyHostCount" {
      - actions_enabled           = true -> null
      - alarm_actions             = [
          - "arn:aws:sns:ca-central-1:957818836222:alert-critical",
        ] -> null
      - alarm_description         = "ELB Health Check - UnHealthyHostCount exceed threshold." -> null
      - alarm_name                = "UnHealthyHostCount-SEV1" -> null
      - arn                       = "arn:aws:cloudwatch:ca-central-1:957818836222:alarm:UnHealthyHostCount-SEV1" -> null
      - comparison_operator       = "GreaterThanThreshold" -> null
      - datapoints_to_alarm       = 0 -> null
      - dimensions                = {} -> null
      - evaluation_periods        = 1 -> null
      - id                        = "UnHealthyHostCount-SEV1" -> null
      - insufficient_data_actions = [] -> null
      - metric_name               = "HTTPCode_ELB_5XX_Count" -> null
      - namespace                 = "AWS/ApplicationELB" -> null
      - ok_actions                = [] -> null
      - period                    = 60 -> null
      - statistic                 = "SampleCount" -> null
      - tags                      = {} -> null
      - tags_all                  = {
          - "CostCentre" = "forms-platform-production"
          - "Terraform"  = "true"
        } -> null
      - threshold                 = 1 -> null
      - treat_missing_data        = "notBreaching" -> null
    }

  # aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup1 will be created
  + resource "aws_cloudwatch_metric_alarm" "UnHealthyHostCount-TargetGroup1" {
      + actions_enabled                       = true
      + alarm_actions                         = [
          + "arn:aws:sns:ca-central-1:957818836222:alert-critical",
        ]
      + alarm_description                     = "ELB Health Check - UnHealthyHostCount exceed threshold for TargetGroup1."
      + alarm_name                            = "UnHealthyHostCount-TargetGroup1-SEV1"
      + arn                                   = (known after apply)
      + comparison_operator                   = "GreaterThanOrEqualToThreshold"
      + dimensions                            = {
          + "LoadBalancer" = "app/form-viewer/ef2ad28d416e7d87"
          + "TargetGroup"  = "arn:aws:elasticloadbalancing:ca-central-1:957818836222:targetgroup/form-viewer/8dac72758c8ecdcc"
        }
      + evaluate_low_sample_count_percentiles = (known after apply)
      + evaluation_periods                    = 1
      + id                                    = (known after apply)
      + metric_name                           = "UnHealthyHostCount"
      + namespace                             = "AWS/ApplicationELB"
      + period                                = 60
      + statistic                             = "SampleCount"
      + tags_all                              = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + threshold                             = 1
      + treat_missing_data                    = "notBreaching"
    }

  # aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup2 will be created
  + resource "aws_cloudwatch_metric_alarm" "UnHealthyHostCount-TargetGroup2" {
      + actions_enabled                       = true
      + alarm_actions                         = [
          + "arn:aws:sns:ca-central-1:957818836222:alert-critical",
        ]
      + alarm_description                     = "ELB Health Check - UnHealthyHostCount exceed threshold for TargetGroup2."
      + alarm_name                            = "UnHealthyHostCount-TargetGroup2-SEV1"
      + arn                                   = (known after apply)
      + comparison_operator                   = "GreaterThanOrEqualToThreshold"
      + dimensions                            = {
          + "LoadBalancer" = "app/form-viewer/ef2ad28d416e7d87"
        }
      + evaluate_low_sample_count_percentiles = (known after apply)
      + evaluation_periods                    = 1
      + id                                    = (known after apply)
      + metric_name                           = "UnHealthyHostCount"
      + namespace                             = "AWS/ApplicationELB"
      + period                                = 60
      + statistic                             = "SampleCount"
      + tags_all                              = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + threshold                             = 1
      + treat_missing_data                    = "notBreaching"
    }

Plan: 2 to add, 0 to change, 1 to destroy.

Warning: Argument is deprecated

  with module.athena_bucket.aws_s3_bucket.this,
  on .terraform/modules/athena_bucket/S3/main.tf line 8, in resource "aws_s3_bucket" "this":
   8: resource "aws_s3_bucket" "this" {

Use the aws_s3_bucket_lifecycle_configuration resource instead

(and 3 more similar warnings elsewhere)

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.codedeploy_sns"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.notify_slack"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.ELB_5xx_error_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup1"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.UnHealthyHostCount-TargetGroup2"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.alb_ddos"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.audit_log_dead_letter_queue_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.cognito_login_outside_canada_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.cognito_signin_exceeded"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.ddos_detected_forms_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.ddos_detected_route53_warn[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.forms_cpu_utilization_high_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.forms_memory_utilization_high_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.reliability_dead_letter_queue_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.response_time_warn"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.route53_ddos[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.twoFa_verification_exceeded"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.vault_data_integrity_check_lambda_iterator_age"]
WARN - plan.json - main - Missing Common Tags: ["aws_iam_role.notify_slack_lambda"]
WARN - plan.json -...

Copy link
Contributor

@craigzour craigzour left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@bryan-robitaille bryan-robitaille merged commit 90979be into develop Feb 29, 2024
1 check passed
@bryan-robitaille bryan-robitaille deleted the release-please--branches--develop branch February 29, 2024 18:07
@sre-read-write
Copy link
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants